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

miszczyk
Użytkownik
Użytkownik
Posty: 25
Rejestracja: 14 lis 2010, o 21:00
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 4 razy

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

Post 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!
Szczech
Użytkownik
Użytkownik
Posty: 123
Rejestracja: 30 lis 2006, o 14:20
Płeć: Mężczyzna
Lokalizacja: Znienacka
Podziękował: 12 razy
Pomógł: 21 razy

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

Post autor: Szczech »

Z tego co rozumiem to potrzebujesz funkcji do sprawdzania czy znak jest literą?
miszczyk
Użytkownik
Użytkownik
Posty: 25
Rejestracja: 14 lis 2010, o 21:00
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 4 razy

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

Post 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ą."
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

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

Post autor: Afish »

Funkcja scanf zwraca Ci liczbę wczytanych wartości, możesz to wykorzystać.
miszczyk
Użytkownik
Użytkownik
Posty: 25
Rejestracja: 14 lis 2010, o 21:00
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 4 razy

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

Post 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
WyprasujMnie
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 21 kwie 2012, o 21:00
Płeć: Mężczyzna
Lokalizacja: Warszawa

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

Post autor: WyprasujMnie »

Jakby nie patrzeć użyłeś "==" :] Przy takim użyciu jest mnówstwo rozwiązań, choćby na ASCII
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

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

Post autor: Afish »

Kod: Zaznacz cały

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