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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
LightAgrail
#1

Вывод трёх переменных - C++

24.11.2010, 19:15. Просмотров 1364. Ответов 3
Метки нет (Все метки)

Самое простое задание, которое можно себе представить, не получается решить. Подозреваю неправильную постановку задачи, но, всё-таки, может руки кривые совсем у меня.

Текст задания:
Введите три переменные r (тип const float), simbol (тип char), и flag (тип bool). Их значение определите с помощью оператора scanf. Выведите на экран значение переменных в строку, используя оператор printf, определив размер поля для каждой переменной 10, для типа double после запятой должно выводиться три числа.

Сразу, что бросается в глаза:
1) Переменной типа double просят вывести три числа после запятой, хотя в начале программы не объявляются переменные данного типа.
2) Переменной типа const float необходимо задавать значение через scanf. Насколько мне известно, константы нужно инициализировать сразу.
3) Переменной типа bool тоже значение необходимо задать при объявлении flag.

Программу необходимо компилировать через lcc. Текст программы получился такой, если напрямую следовать заданию, заменив double на float:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <conio.h>
#include <stdbool.h>
void main () {
    const float r;
    char simbol;
    bool flag;
    printf("Enter r, simbol, flag \n");
    scanf("%f %c %d",&r,&simbol,&flag);
    printf("%10.3f %10c %10d",r,simbol,flag);
    getch();
}
В результате ввода получаю вещественное число r с тремя знаками после запятой, а потом начинаются интересные и непонятные метаморфозы. Если ввести числовое значение переменной flag - не будет отображаться текстовая переменная, если ввести текстовое значение flag - отобразиться символ. Также, переменная flag принимает значение 1 при вводе 1, и значение 0 при любом другом (что вполне логично). Если написать символ двумя знаками, то отобразиться первый из них при любом значении flag.

Страшно в общем смотреть на это. Если следовать следующим предположениям:
1) Значение переменной r должно задаваться при объявлении, потому что const.
2) Значение переменной flag должно задаваться при объявлении, потому что bool.
то получаем:

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <conio.h>
#include <stdbool.h>
void main () {
    const float r=3.5134;
    char simbol;
    bool flag=false;
    printf("Enter simbol \n");
    scanf("%c",&simbol);
    printf("%10.3f %10c %10d",r,simbol,flag);
    getch();
}
В таком виде программа прекрасно работает. Собственно, суть темы - правильны ли предположения о том, что инициализация const и bool производиться во время объявления переменных? Можно ли исходный код заставить работать корректно?
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2010, 19:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывод трёх переменных (C++):

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

Составить программу обмена значениями трёх переменных - C++
Условия задачи такие: Составить программу обмена значениями трёх переменных величин a,b,c по след схеме: b присвоить значение c, a...

Найти значение функции A, которая зависит от трёх переменных - C++
Нужно создать программу для вычисления функции A, которая зависит от трёх переменных x, y, z. Ввод значения переменных сделать с...

Создать функцию для расчёта максимального из трёх переменных - C++
Даны действительные числа x, y, z. Создать собственную функцию для расчёта максимального из трёх переменных max(a,b,c).

Вывод трёх чисел по убыванию - C++
Нужно написать программу которая бы из 3 ёх чисел выбирала самое маленькое число и писало бы его в столбик &quot;температура&quot; второе по...

Запрос ввода трёх целых чисел, и вывод суммы их половинок - C++
1) Программа просит ввести пользователя 3 целых числа и выводит сумму их половинок #include &lt;stdio.h&gt; #include &lt;conio.h&gt; ...

3
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
24.11.2010, 19:22 #2
Цитата Сообщение от LightAgrail Посмотреть сообщение
Значение переменной r должно задаваться при объявлении, потому что const.
Правильно.
Цитата Сообщение от LightAgrail Посмотреть сообщение
Значение переменной flag должно задаваться при объявлении, потому что boo
Не совсем. Можно читать переменную, например, в int, а потом преобразовывать в bool.
1
LightAgrail
24.11.2010, 19:43 #3
Спасибо за внимание, получился вот такой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <conio.h>
#include <stdbool.h>
void main () {
    const float r=3.5134;
    char simbol;
    int flag;
    printf("Enter simbol, flag \n");
    scanf("%c %d",&simbol,&flag);
    flag = (bool) flag;
    printf("%10.3f %10c %10d",r,simbol,flag);
    getch();
}
Всё прекрасно работает.
gooseim
Эксперт С++
508 / 412 / 37
Регистрация: 23.09.2010
Сообщений: 1,159
24.11.2010, 20:08 #4
интересно, как работает с
Цитата Сообщение от LightAgrail Посмотреть сообщение
const float r
Добавлено через 46 секунд
а
вы вообще не читаете его
0
24.11.2010, 20:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2010, 20:08
Привет! Вот еще темы с ответами:

Вывод переменных - C++
Что с выводом координат x и y? #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { float x,y; int...

Вывод значений переменных - C++
Задача Есть в текстовый файл с таким содержанием ( например ): asd123 = 111 12dsd2 = 222 324asd = 333 ds7sd = 444; 1adf = 555; ...

Вывод переменных в файл - C++
Здравствуйте. Есть переменная типа Vector. Выглядит она при выводе у меня вот так: . Ну и значения постоянно меняются. Вывожу я её в файл...

Вывод значения двух переменных - C++
есть к примеру : шаблон функции (параметры) { что то делаеться и return двух переменных} вызов : cout&lt;&lt;шаблон...


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

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

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