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

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

Восстановить пароль Регистрация
 
Seryoga_93
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 19
19.09.2013, 23:21     Не выполняется (проскакивает) оператор #1
Здравствуйте! Я новичок в С. Простите за наиглупейший вопрос, но почему так? В простейшем консольном приложении после считывания переменных и вычисления значения 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");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 23:21     Не выполняется (проскакивает) оператор
Посмотрите здесь:

C++ Написать программу, содержащую оператор оператор for для счета от 2 до 5 через 1
"Проскакивает" getline(), если ранее вводилась целочисленная переменная. Почему? C++
Проскакивает чтение с клавиатуры C++
C++ Код не выполняется в одном месте, но выполняется в другом
C++ Не работает(Запускаю программу,ввожу числа,а среднее арифметическое не считает,а просто проскакивает экран)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
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");
}
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
19.09.2013, 23:43     Не выполняется (проскакивает) оператор #3
Цитата Сообщение от Seryoga_93 Посмотреть сообщение
scanf("%f",&x,&y);
вот здесь та даешь команду считать одну переменную "%f"
а адрес даешь двух &x,&y
Байт
 Аватар для Байт
13974 / 8805 / 1227
Регистрация: 24.12.2010
Сообщений: 15,949
19.09.2013, 23:55     Не выполняется (проскакивает) оператор #4
Цитата Сообщение от kravam Посмотреть сообщение
scanf("%f%f",&x,&y);
Вот здесь между %f %f неплохо бы пробельчик вставить, или там запятую...
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
19.09.2013, 23:56     Не выполняется (проскакивает) оператор #5
и так сойдёт
Seryoga_93
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 19
20.09.2013, 10:18  [ТС]     Не выполняется (проскакивает) оператор #6
О, и впрямь! Про это я не подумал. То есть, когда вместе указываешь спецификацию для нескольких переменных, то надо и вводить их через тот же символ, через который они стоят - так? теперь второй запрос видит) всем спасибо!
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
20.09.2013, 16:53     Не выполняется (проскакивает) оператор #7
Цитата Сообщение от Seryoga_93 Посмотреть сообщение
то надо и вводить их через тот же символ, через который они стоят - так?
Нет, не так. Если между %f и %f не будет никаких символов (и пробела), то вводить всё равно надо через пробел. А чё сам не попробовал?
Seryoga_93
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) ... то все нормально ГДЕ ЛОГИКА?!
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
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;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2013, 20:38     Не выполняется (проскакивает) оператор
Еще ссылки по теме:

Программа проскакивает с ошибкой. Одномерный массив C++
"Проскакивает" выбор пункта меню C++
C++ Не выполняется перегруженный оператор присваивания

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

Или воспользуйтесь поиском по форуму:
Seryoga_93
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???
Yandex
Объявления
24.09.2013, 20:38     Не выполняется (проскакивает) оператор
Ответ Создать тему
Опции темы

Текущее время: 16:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru