c++ и g++ (Странные математические неувязки :()

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

azalio
Сообщения: 14

c++ и g++

Сообщение azalio »

Есть простая программка:

<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

Как это получается?
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: c++ и g++

Сообщение edoc_modnar »

Правильно, 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++

Сообщение azalio »

Спасибо, видимо запутался с привидением переменных, думал что это сработает.
Спасибо сказали:
Аватара пользователя
edoc_modnar
Бывший модератор
Сообщения: 1638
Статус: Форум больше не посещаю

Re: c++ и g++

Сообщение edoc_modnar »

Если планировалось использовать float, то кроме %f в строке формата, надо было явно указать (float)polychenniy_etazh. В любом случае это бессмысленно, т.к. для float операция вычисления остатка не определена (догадайся почему :)).
So long, and thanks for all the fish.
Douglas Adams, The Hitchhiker's Guide to the Galaxy
Спасибо сказали: