Strona 1 z 1

[C] Pętla while - wyjście literą

: 21 kwie 2012, o 18:47
autor: miszczyk
Hej, niedawno zacząłem pewien kurs C i szło gładko, ale tym razem mam problem.
Kod:

Kod: Zaznacz cały

#include "stdafx.h"
#include<stdio.h>


void temperatura(double Fahrenhait)
	{
		double Celcjusz, Kelwin;
		const double stala = 273.16;
		Celcjusz = 1.8 * Fahrenhait + 32;
		Kelwin =  Celcjusz + stala;
		printf("Temperatura w Fahrenhaitach wynosi: %.2f, wiec pozostale temperatury wynosza:
", Fahrenhait);
		printf("Temperatura w Celcjuszach wynosi: %.2f.
", Celcjusz);
		printf("Temperatura w Kelwinach wynosi: %.2f.
", Kelwin);
		
		
	
    }
int main()
{
	float fahren;
	printf(" Litera by zakonczyc - liczba by kontynuowac.
 ");
	scanf("%f", &fahren);
	while(fahren)
	{
		temperatura((double)fahren);
			scanf("%f", &fahren);
				
				  
	}

	printf("Pa pa!
");
			getchar();
	        getchar();
			return 0;
}
Mógłby ktoś mi powiedzieć jaką funkcję wpisać w pętli while ( ), aby wpisanie jakiejkolwiek litery kończyło program? Jest jeden haczyk, a mianowicie nie wolno mi skorzystać z żadnych innych operatorów niż = , +, - , *, /, %, ++, -- , ani żadnej innej pętli poza while. Dozwolone sa tylko funkcje podobne do tych wyżej oraz konwersje typów.

Wiem, że rozwiązanie jest jakieś banalne, ale głowię sie od godziny i nie wychodzi :9.

Z góry dzięki za odpowiedzi!

[C] Pętla while - wyjście literą

: 21 kwie 2012, o 18:55
autor: Szczech
Z tego co rozumiem to potrzebujesz funkcji do sprawdzania czy znak jest literą?

[C] Pętla while - wyjście literą

: 21 kwie 2012, o 19:07
autor: miszczyk
Kurczę, źle to sformułowałem, chodzi mi bardziej o warunek i ew. dane do warunku, a nie gotową funkcję. Sorry , mój błąd. Wnioskując z kontekstu zadania raczej na pewno nie o to chodzi. Zacytuję część:

"Funkcja Temperatura() powinna używać słowa kluczowego const dla symboli reprezentujących stałe wystepujące w powyższych formułach. Natomiast main() powinna stosować pętle, aby umożliwić użytkownikowi wieloktrotne zastosowanie funkcji konwertującej. Pętla kończy swój cykl, gdy użytkownik wprowadzi - zamiast temperatury - literę k (koniec) lub inną wartość nie będącą liczbą."

[C] Pętla while - wyjście literą

: 21 kwie 2012, o 20:39
autor: Afish
Funkcja scanf zwraca Ci liczbę wczytanych wartości, możesz to wykorzystać.

[C] Pętla while - wyjście literą

: 21 kwie 2012, o 21:16
autor: miszczyk
Hmm, szczerze mówiąc to nie mam pomysłu, może coś z funkcją stlren? Bo sizeofa i strlena tez moge korzystac. Albo jakos bardziej podpowiedzieć xD, bo nie rozumiem do końca jak scanf mi zwraca liczbę wartości, służył mi do tej pory tylko do pobierania ciągu znaków i liczb. To jest tak dosyć poczatkujący poziom :(

EDIT:

Znalazłem odpowiedź w kolejnym rozdziale:

Kod: Zaznacz cały

int stan = 1;
while(stan == 1)
	{
		temperatura((double)fahren);
			stan = scanf("%f", &fahren);						  
	}
Ale bez znaku równości - chyba nie da rady tego zrobić, teraz trzeba to skumać jeszcze. W każdym razie dzięki za odzew!

EDIT2.

Dobra skumałem ;'P

[C] Pętla while - wyjście literą

: 21 kwie 2012, o 22:04
autor: WyprasujMnie
Jakby nie patrzeć użyłeś "==" :] Przy takim użyciu jest mnówstwo rozwiązań, choćby na ASCII

[C] Pętla while - wyjście literą

: 22 kwie 2012, o 11:49
autor: Afish

Kod: Zaznacz cały

float fahren;
while(scanf("%f",&fahren)){
   // ...
}