Fahrenheit <-> Celsius (вопрос новичка)

Модератор: Модераторы разделов

Аватара пользователя
TeMy4uH
Сообщения: 150

Fahrenheit <-> Celsius

Сообщение TeMy4uH »

Дали домашне задание. Заданик гласит: "Написать программу для перевода Fahrenheit <-> Celsius. Данные должны вводиться в ручную, так-же нужно в ручную выбирать что именно нужно переводить. Ввод данных должен повторяться до тех пор, пока при выборе не введётся 0.
Я написал вычисление и выбор, в какую сторону переводить, но никак не могу прикрутить петлю, чтобы ввод данных продолжался до тех пор, пока программа не будет закончена, т.е. пока не буддет введён 0...
Может кто-нибудь может мне помочь?
Спасибо сказали:
Аватара пользователя
Ballantre
Сообщения: 114
ОС: Linux

Re: Fahrenheit <-> Celsius

Сообщение Ballantre »

Вы знаете, бывает такой цикл, с постусловием, называется. Do{ ... } while :D
Я двадцать лет знал его и всегда ненавидел, и всегда восхищался, и всегда по-рабски боялся его.
Спасибо сказали:
Аватара пользователя
TeMy4uH
Сообщения: 150

Re: Fahrenheit <-> Celsius

Сообщение TeMy4uH »

Знаю, знаю, но я не смог его никак прикрутить так, чтоб он работал...
Спасибо сказали:
Аватара пользователя
Ballantre
Сообщения: 114
ОС: Linux

Re: Fahrenheit <-> Celsius

Сообщение Ballantre »

Обязателен чистый С, или и плюсы прокатят?
Я двадцать лет знал его и всегда ненавидел, и всегда восхищался, и всегда по-рабски боялся его.
Спасибо сказали:
Аватара пользователя
TeMy4uH
Сообщения: 150

Re: Fahrenheit <-> Celsius

Сообщение TeMy4uH »

Нет, нужен именно С...
Спасибо сказали:
Аватара пользователя
Ballantre
Сообщения: 114
ОС: Linux

Re: Fahrenheit <-> Celsius

Сообщение Ballantre »

do{
cout << "Enter 1 from F to C, 2 from C to F, 0 to exit" << endl;
cin >> n;
switch n
( ... )
} while ( n )
Ну а переводи сам. :)
Я двадцать лет знал его и всегда ненавидел, и всегда восхищался, и всегда по-рабски боялся его.
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: Fahrenheit <-> Celsius

Сообщение georgy_sh »

Ballantre писал(а): ↑
18.10.2006 21:51
do{
cout << "Enter 1 from F to C, 2 from C to F, 0 to exit" << endl;
cin >> n;
switch n
( ... )
} while ( n )
Ну а переводи сам. :)

вот объясните Вы мне, пожалуйста
операция вставки << и извлечения >> , а так же имена стандартных потоков ввода/вывода (cin / cout) характерны только для С++, но никак не для чистого С ?
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Fahrenheit <-> Celsius

Сообщение v04bvs »

He1mut писал(а): ↑
18.10.2006 23:12
Ballantre писал(а): ↑
18.10.2006 21:51

do{
cout << "Enter 1 from F to C, 2 from C to F, 0 to exit" << endl;
cin >> n;
switch n
( ... )
} while ( n )
Ну а переводи сам. :)

вот объясните Вы мне, пожалуйста
операция вставки << и извлечения >> , а так же имена стандартных потоков ввода/вывода (cin / cout) характерны только для С++, но никак не для чистого С ?

<< это не операция вставки, а операция бинарного сдвига.
Что сдвинулось в голове у Страуструпа, я лично не знаю :)
Вообще что мне реально не нравится в С++ - это его стандартная библиотека. Точнее то, что она в стандарте. Не нужна она там.

В данном случае важны 2 вещи, обеспечивающие type-safe IO - перегрузка функций и наличие классов.

PS приведённый фрагмент кода неверен как синтаксически, так и семантически.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Fahrenheit <-> Celsius

Сообщение elide »

Код: Выделить всё

#include<stdio.h>

int main (){
        float celsius;
        float fahrenheit;
        for(;;){
                int wahl = 0;
                printf("Waehlen Sie aus:\n1) Fahrenheit -> Celsius\n2) Celsius -> Fahrenheit\n0) Programm beenden\n\nWahl:");
                scanf("%d", &wahl);
                switch (wahl){
                        case 1:
                                printf("Fahrenheit in Celsius.\nWert: ");
                                scanf("%f", &fahrenheit);
                                celsius = 5/9.0 * (fahrenheit - 32);
                                printf("%f Grad Fahrenheit = %f Celsius\n", fahrenheit, celsius);
                                break;
                        case 2:
                                printf("Celsius in Fahrenheit\nWert: ");
                                scanf("%f", &celsius);
                                fahrenheit = celsius * 9/5.0 + 32;
                                printf("%f Celsius = %f Fahrenheit\n", celsius, fahrenheit);
                                break;
                        default:
                                return 0;
                }
        }
        return 0;
}
это чтоб потом не говорили, что линуксойды злые и никому никогда не помогают...
но по-хорошему, за такие темы надо выдавать предупреждения и лишать права постинга в раздел на неделю.
чтоб было время книжки почитать, ага.
слава роботам!
Спасибо сказали:
Аватара пользователя
TeMy4uH
Сообщения: 150

Re: Fahrenheit <-> Celsius

Сообщение TeMy4uH »

Не стоить быть таким строгим. Книжку я читаю, но for (;;) или while (1) я как-то пропустил пропустил...
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: Fahrenheit <-> Celsius

Сообщение georgy_sh »

v04bvs писал(а): ↑
18.10.2006 23:52
<< это не операция вставки, а операция бинарного сдвига.

это мне известно :)
v04bvs писал(а): ↑
18.10.2006 23:52
Что сдвинулось в голове у Страуструпа, я лично не знаю :)

ну зачем так? :)

вполне полезная штука, ИМХО :)
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Fahrenheit <-> Celsius

Сообщение elide »

потому, что перегрузку операторов стараются делать так, чтобы они продолжали выполнять свои функции, причем очевидным для операндов образом.
перегрузить операторы сдвига так, чтоб они выполняли операции ввода/вывода из потока - крайне сомнительная идея.
слава роботам!
Спасибо сказали:
Аватара пользователя
Aectann
Бывший модератор
Сообщения: 3491
Статус: ...
ОС: OS X, GNU_и_не_только/Linux

Re: Fahrenheit <-> Celsius

Сообщение Aectann »

elide писал(а): ↑
19.10.2006 22:51
перегрузить операторы сдвига так, чтоб они выполняли операции ввода/вывода из потока - крайне сомнительная идея.

Возможно это он(Страуструп) сделал потому, что операторы сдвига используются в С++ по прямому назначению редко, а текст чаще приходится вводить/выводить?
My god... it's full of stars!...
Спасибо сказали:
Аватара пользователя
georgy_sh
Сообщения: 1172
Статус: thermonuclear...
ОС: GNU/Linux

Re: Fahrenheit <-> Celsius

Сообщение georgy_sh »

Aectann писал(а): ↑
19.10.2006 23:02
elide писал(а): ↑
19.10.2006 22:51

перегрузить операторы сдвига так, чтоб они выполняли операции ввода/вывода из потока - крайне сомнительная идея.

Возможно это он(Страуструп) сделал потому, что операторы сдвига используются в С++ по прямому назначению редко, а текст чаще приходится вводить/выводить?

мей би...

но все равно, логика в его решении есть, ИМХО
Спасибо сказали: