Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 19
1

Не выполняется (проскакивает) оператор

19.09.2013, 23:21. Показов 1578. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте! Я новичок в С. Простите за наиглупейший вопрос, но почему так? В простейшем консольном приложении после считывания переменных и вычисления значения r, программа игнорирует считывание Z, сама присваивает ему какое-то значение из x/y и выводит? В паскале такого бы не было. Чего я не понимаю?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
 
main()
{
float x,y,r,z;
 
printf("X,Y>> ");
scanf("%f",&x,&y);
r=x+y;
printf("\nR: %.2f\n\n", r);
 
printf("\nZ>> ");
scanf("%f",&z); 
printf("\n%.2f\n\n",z);
 
system("PAUSE");
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.09.2013, 23:21
Ответы с готовыми решениями:

Не выполняется оператор else
#include &lt;iostream&gt; using namespace std; int main() { const char loginAdmіnіstrator =...

Не выполняется оператор IF
Программа компилируется и выполняется без ошибок, но условие в строке 29 не отрабатывается. Почему...

Непонятно выполняется оператор if
Собственно вопрос очень глупый, наткнулся на такой код в теме: int main() { setlocale(LC_ALL,...

Не выполняется перегруженный оператор присваивания
Подскажите пожалуйста, почему ругается компилятор? Я только начал изучать С++ по книге Шилдта, и...

9
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
19.09.2013, 23:41 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <iostream>
#include <windows.h>
#include <conio.h>
 
main()
{
float x,y,r,z;
 
printf("X,Y>> ");
scanf("%f%f",&x,&y);
r=x+y;
printf("\nR: %.2f\n\n", r);
 
printf("\nZ>> ");
scanf("%f",&z); 
printf("\n%.2f\n\n",z);
 
system("PAUSE");
}
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
19.09.2013, 23:43 3
Цитата Сообщение от Seryoga_93 Посмотреть сообщение
scanf("%f",&x,&y);
вот здесь та даешь команду считать одну переменную "%f"
а адрес даешь двух &x,&y
1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
19.09.2013, 23:55 4
Цитата Сообщение от kravam Посмотреть сообщение
scanf("%f%f",&x,&y);
Вот здесь между %f %f неплохо бы пробельчик вставить, или там запятую...
1
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
19.09.2013, 23:56 5
и так сойдёт
1
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 19
20.09.2013, 10:18  [ТС] 6
О, и впрямь! Про это я не подумал. То есть, когда вместе указываешь спецификацию для нескольких переменных, то надо и вводить их через тот же символ, через который они стоят - так? теперь второй запрос видит) всем спасибо!
0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
20.09.2013, 16:53 7
Цитата Сообщение от Seryoga_93 Посмотреть сообщение
то надо и вводить их через тот же символ, через который они стоят - так?
Нет, не так. Если между %f и %f не будет никаких символов (и пробела), то вводить всё равно надо через пробел. А чё сам не попробовал?
2
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 19
23.09.2013, 22:06  [ТС] 8
Да я вообще сперва не обратил на это внимания) Ну а щаз что не так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream.h>
#include <conio.h>
using namespace std;
 
main()
{
bool c;
 scanf("%d",&c);
 if(c==true) cout<<"\nTRUE: "<<c<<"\n" ; else cout<<"FALSE: "<<c;
 
getch();
}
По идее в типе bool все целочисленные значение >=1 позиционируются как ТРУ, почему, когда я проверяю переменную через ==true - он мне выдает на все значения кроме "1" ложь! а когда пишешь просто if(c) ... то все нормально ГДЕ ЛОГИКА?!
0
Почетный модератор
Эксперт С++
5850 / 2861 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
24.09.2013, 10:39 9
Цитата Сообщение от Seryoga_93 Посмотреть сообщение
в типе bool все целочисленные значение >=1 позиционируются как ТРУ
А так же <=1

Цитата Сообщение от Seryoga_93 Посмотреть сообщение
почему, когда я проверяю переменную через ==true - он мне выдает на все значения кроме "1" ложь
Потому, что так и есть. В условии if сравнивается значение переменной с с true, где true обратно конвертируется в единицу. Под переменную типа bool отводится один байт, следовательно туда можно поместить 256 значений, и только одно из них будет равным единице.

Цитата Сообщение от Seryoga_93 Посмотреть сообщение
когда пишешь просто if(c) ... то все нормально
Потому что в условии if автоматически происходит обратное преобразование целочисленного значения в булевское.

Вот попробуйте вот такую штуку:
C++
1
2
3
int i;
 scanf("%d",&i);
 if((bool)i==true) cout<<"TRUE: "<<i ; else cout<<"FALSE: "<<i;
Или вот такой винегрет:
C++
1
2
3
bool c;
 scanf("%d",&c);
 if((bool)(int)c==true) cout<<"TRUE: "<<c ; else cout<<"FALSE: "<<c;
0
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 19
24.09.2013, 20:38  [ТС] 10
Спасибо, теперь более понятно. Это потому что я вводил:
C++
1
2
bool c;
  scanf("%d",&c);
и %d позиционировал ввод как целочисленное? потому что то же самое через cin при сравнении c==true нормально все тоже было - значит уже разные цифры конвертировались в логическую 1/0???
0
24.09.2013, 20:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.09.2013, 20:38
Помогаю со студенческими работами здесь

Неправильно выполняется условный оператор
Доброго времени суток, нужна помощь. При вводе пользователем переменной b переменная a...

Не выполняется оператор соответствующий условию
Не идет программа, постоянно завершается, хотя условие If не выполняется: #include &lt;iostream&gt;...

Неправильно выполняется условный оператор
Засел осваивать c++ в Visual c++ 2008 с 0-ля. Изучаю условный оператор if. Следующий код: ...

Почему-то не выполняется оператор цикла
#pragma hdstop #include &lt;stdio.h&gt; #include &lt;conio.h&gt; int main() { int far; ...

Не выполняется оператор ||
Оператор ИЛИ (||) не выполняется. Код смотрит только на последнее из условий в if и уже по этому...

Не выполняется оператор в цикле
Не выполняется оператор realdn в цикле while при первом прохождение цикла не могу понять из за...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru