Czemu to nie działa?

0
#include <stdio.h>

int main(void)
{
	float index, i, k, j, p;
	
	printf("Podaj dwie liczby\n");
	scanf("%f", &index);
	scanf("%f", &i);
	
	while (index =! 'k')
	{
	printf("Wartosc ich roznicy podzielonej przez ich iloczyn wynosi:\n");
		k = index - i;
		j = index * i;
		p = k / j;
	printf("%f\n", p);
	printf("Podaj kolejne dwie liczby\n");
	scanf("%f", &index);
	scanf("%f", &i);	
	}	
	getchar();
	
	return 0;
}

Jak na moje oko, powinno działać. Jednak nie działa;/ ktoś wie może czemu?

0
while (index =! 'k')

Porównujesz floata do chara i to jeszcze niepoprawnie (!= zamiast =!).

1

A mógłbyś więcej opisać. Bo jak na razie to nic nam to nie mówi. :P

0

W warunku While-a "prawie że" (powinno być != a nie =!) porównujesz liczbę (index) do znaku "k". Co prawda k nie jest znakiem tylko jego "numerkiem" w tablicy ASCII ale i tak się takich rzeczy generalnie nie robi. No chyba że w jakiś sposób tymi znakami manipulujesz np w przypadku (de)szyfrowania Cezara. Wtedy można je "legalnie" potraktować jak cyfry.

0

No dobra, a jak chce żeby pętla wykonywała się do momentu podania jakiejś litery zamiast liczb zmiennoprzecinkowych to jak byście to napisali?

0

Np while(scanf("%d",&index)) Jak się wczyta liczba to całość będzie "true" czyli się wykona a jak litera (dowolna) to na wskutek błędu (litera zamiast cyfry) będzie "false" i while-a opuści. Przynajmniej u mnie działa w ten sposób.

1 użytkowników online, w tym zalogowanych: 0, gości: 1