Есть простая программка:
<code>
#include <cstdio>
int main(void)
{
int N_floors, N_kvartiri, polychenniy_etazh;
printf ("Введите количество этажей дома и номер квартиры\n");
scanf("%d %d", &N_floors, &N_kvartiri);
polychenniy_etazh = N_kvartiri/3 + 1;
printf("Получили этаж %d\n", polychenniy_etazh);
printf("polychenniy_etazh/2 %f\n", polychenniy_etazh/2);
printf("Модуль от этаж%2 равняется = %f\n", polychenniy_etazh%2);
return 0;
}
</code>
Компилирую:
g++ 16_floor.cpp
Запускаю:
./a.out
./a.out
Введите количество этажей дома и номер квартиры
9 27
Получили этаж 10
polychenniy_etazh/2 -1.996567
Модуль от этаж%2 равняется = -1.996567
Как это получается?
c++ и g++ (Странные математические неувязки :()
Модератор: Модераторы разделов
-
edoc_modnar
- Бывший модератор
- Сообщения: 1638
- Статус: Форум больше не посещаю
Re: c++ и g++
Правильно, polychenniy_etazh имеет тип int, а %f в строке формата говорит о том, что это float. Следовательно,
следует исправить на
Код: Выделить всё
printf("polychenniy_etazh/2 %f\n", polychenniy_etazh/2);
printf("Модуль от этаж%2 равняется = %f\n", polychenniy_etazh%2);следует исправить на
Код: Выделить всё
printf("polychenniy_etazh/2 %d\n", polychenniy_etazh/2);
printf("Модуль от этаж%2 равняется = %d\n", polychenniy_etazh%2);So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
-
azalio
- Сообщения: 14
Re: c++ и g++
Спасибо, видимо запутался с привидением переменных, думал что это сработает.
-
edoc_modnar
- Бывший модератор
- Сообщения: 1638
- Статус: Форум больше не посещаю
Re: c++ и g++
Если планировалось использовать float, то кроме %f в строке формата, надо было явно указать (float)polychenniy_etazh. В любом случае это бессмысленно, т.к. для float операция вычисления остатка не определена (догадайся почему
).
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy