Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,339
Завершенные тесты: 1
#1

Из цельсия в фаренгейты - C++

22.08.2009, 23:33. Просмотров 2932. Ответов 10
Метки c++ (Все метки)

у меня есть код
Код
int main()
  {

	  double f=70;
double c=0;

cout << "C    |    F";
while(c!=50){



c=c+10;
    
printf("c=%f f=%f\n",  c=(5.0/9.0) * (f -32.0), f);

}
то есть что тут происходит, оператор вайл написать с=n f=n до тех пор пока с не бует равным 50..то есть вначале с=0.но с=(5.0/9.0) * (f -32.0)
когда я с присвоиваю вот это программа сбивается и пишет какую то фигню...
можете мне помочь буду рад!если возможно других методов не предоставить т.к. хочу написать свою
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2009, 23:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Из цельсия в фаренгейты (C++):

Перевод из цельсия в фаренгейты - C++
#include &lt;iostream&gt; using namespace std; double Farengeyt(double); int main() { setlocale(LC_ALL,&quot;Russian&quot;); double...

Перевод из цельсия в фаренгейты - C++
Есть задание написать програму для перевода из цельсия в фаренгейт, причем вынести этот пепесчет отдельной функцией. Вот эта программа, и...

Считать из файла температуру и перевести ее из цельсия в фаренгейты - C++
Судя по всему даже с файла не считывает, но задача такова: нужно считать с файла число с буквой C(английской) а потом уже это число...

Перевод из Цельсия в Фаренгейты, непонятный результат работы кода - C++
int _tmain(int argc, _TCHAR* argv) { float summa; cout &lt;&lt; &quot;Введите температуру в градусах цельсия: &quot;; cin &gt;&gt; summa; cout &lt;&lt;...

Перевод из Цельсия в Фаренгейт - C++
Задача такая: Напишите программу, в которой функция main () вызывает определяемую пользователем функцию, которая в качестве аргумента...

Из Цельсия в Фаренгейт и наоборот - C++
Написать программу, которая переводит значение температуры из шкалы Цельсия в шкалу Фаренгейта и наоборот, и преобразовует. Использовать в...

10
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
23.08.2009, 00:03 #2
Во первых на форуме неоднократно говорилось, что для вещественных чисел практически невозможно получить целое число, т.е.
C++
1
while(c<50)
во вторых
C++
1
2
3
4
5
    while(c<50) // 1) c == 0; 2) c == 21.11111
    {
        c+=10; // 1) c == 10; 2) c == 31.11111
        printf("c=%f f=%f\n",  c=(5.0/9.0) * (f -32.0), f); // 1) c == 21.11111; 2) c == 21.11111
    }
понял о чем я?
ЗЫ. 1), 2) - итерации
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,339
Завершенные тесты: 1
23.08.2009, 10:25  [ТС] #3
Цитата Сообщение от M128K145 Посмотреть сообщение
Во первых на форуме неоднократно говорилось, что для вещественных чисел практически невозможно получить целое число, т.е.
C++
1
while(c<50)
во вторых
C++
1
2
3
4
5
    while(c<50) // 1) c == 0; 2) c == 21.11111
    {
        c+=10; // 1) c == 10; 2) c == 31.11111
        printf("c=%f f=%f\n",  c=(5.0/9.0) * (f -32.0), f); // 1) c == 21.11111; 2) c == 21.11111
    }
понял о чем я?
ЗЫ. 1), 2) - итерации
нет
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
23.08.2009, 15:21 #4
Ладно пошагово:
C++
1
2
3
4
5
        while(c<50) // 1) c == 0; 2) c == 21.11111
        {
                c+=10; // 1) c == 10; 2) c == 31.11111
                printf("c=%f f=%f\n",  c=(5.0/9.0) * (f -32.0), f); // 1) c == 21.11111; 2) c == 21.11111
        }
итерация.строка)
0.1) с == 0
0.3) с == 10
0.4) c == 21.11111
1.1) c == 21.11111
1.3) c == 31.11111
1.4) и на этом шаге переменная с опять получает значение 21.11111 (!)
Т.е. с будет на каждом шаге(начиная со второго) с равна сначала 31.11111, а потом в следующей строке опять 21.11111. И никогда с не сможет даже приблизится к 50. Поэтому и зацикленно. А все потому, что в этой формуле
Код
(5.0/9.0) * (f -32.0)
не хватает зависимости от переменной c, а f - константа.
Теперь ясно?
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,339
Завершенные тесты: 1
23.08.2009, 15:41  [ТС] #5
ааа..но эту формулу не я писал я взял с книги керниган и ричи....а код мой,порсто форумулу исползова...что делать мне?
0
M128K145
Эксперт С++
8293 / 3513 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
23.08.2009, 15:44 #6
найти нормальную формулу?
0
Gravity
563 / 557 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
23.08.2009, 15:55 #7
В K&R все нормально с формулами. Если не ошибаюсь, то пример там имел такой вид
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#define LOW 0
#define UPPER 300
#define STEP 20
 
int main()
{
      float celsius, fahr;
    
      fahr = LOW;
      while(fahr <= UPPER)
      {
          celsius = (5.0/9.0)*(fahr-32);
          printf("%3.0f\t%5.1f\n", fahr, celsius);
          fahr = fahr + STEP;
      }
      return 0;
}
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,339
Завершенные тесты: 1
23.08.2009, 17:22  [ТС] #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
FOR F = 0, 20, ..., 300 */
MAIN()
{
INT LOWER, UPPER, STEP;
FLOAT FAHR, CELSIUS;
LOWER = 0; /* LOWER LIMIT OF TEMPERATURE
TABLE */
UPPER =300; /* UPPER LIMIT */
STEP = 20; /* STEP SIZE */
FAHR = LOWER;
WHILE (FAHR <= UPPER) {
CELSIUS = (5.0/9.0) * (FAHR -32.0);
PRINTF("%4.0F %6.1F\N", FAHR, CELSIUS);
FAHR = FAHR + STEP;
}
}
вот такой....книга лучшая ничего не могу сказать...но я сам хочу написать свою прогу.....а книга помогла лишь в формуле.......и все.....методы мои..
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.08.2009, 03:36 #9
C
1
2
3
4
5
6
7
8
9
10
11
/* CelsiusToFahrenheit:  converts celsius to fahrenheit */
double CelsiusToFahrenheit(double cels)
{
    return 1.8*cels + 32;
}
 
/* FahrenheitToCelsius:  converts fahrenheit to celsius */
double FahrenheitToCelsius(double fahr)
{
    return (fahr-32)/9.0 * 5;
}
это так, чисто, формулы
1
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,339
Завершенные тесты: 1
24.08.2009, 10:46  [ТС] #10
accept, спасибо но поближе чем мой невозможно?
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
24.08.2009, 11:39 #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    double f = 70.0;
    double c = 0.0;
 
    cout << "C    |    F";
 
    while ((int) c != 50) {
        c = c+10;
        f = CelsiusToFahrenheit(c),
        
        printf("c=%f f=%f\n",
            FahrenheitToCelsius(f),
            f
        );
    }
C
1
2
3
4
5
6
7
8
9
10
11
/* CelsiusToFahrenheit:  converts celsius to fahrenheit */
double CelsiusToFahrenheit(double cels)
{
    return (9.0/5.0)*cels + 32;
}
 
/* FahrenheitToCelsius:  converts fahrenheit to celsius */
double FahrenheitToCelsius(double fahr)
{
    return (5.0/9.0)*(fahr-32);
}
тут функции по wiki скорректировал
1
24.08.2009, 11:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2009, 11:39
Привет! Вот еще темы с ответами:

Перевести из Цельсия в Фаренгейт - C++
Помогите решить задачу! дано значения температуры Т в градусах Цельсия.Определить значение этой же температуры в градусах...

Перевод температуры с Цельсия на Фаренгейт - C++
Текст задачи: Напишите программу в которой функция main() вызывает определяемую пользователем функцию, принимающую в качестве аргумента...

Перевод из градусов Цельсия в градусы Фаренгейта - C++
Я попытался написать программу по переводу градусов цельсия в градусы фаренгейта, но программа не запускается, так как мне бы хотелось,...

Перевод из Цельсия в Фарангейты с заданым шагом - C++
Есть задача. Создать таблицу перевода с цельсия в фарангейты за заданой формулой F=1.8*c+32 для значений от n к m с шагом градуса х. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru