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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
LightAgrail
Сообщений: n/a
24.11.2010, 19:15     Вывод трёх переменных #1
Самое простое задание, которое можно себе представить, не получается решить. Подозреваю неправильную постановку задачи, но, всё-таки, может руки кривые совсем у меня.

Текст задания:
Введите три переменные 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++
C++ Вывод переменных
Вывод переменных в файл C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gooseim
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
24.11.2010, 19:22     Вывод трёх переменных #2
Цитата Сообщение от LightAgrail Посмотреть сообщение
Значение переменной r должно задаваться при объявлении, потому что const.
Правильно.
Цитата Сообщение от LightAgrail Посмотреть сообщение
Значение переменной flag должно задаваться при объявлении, потому что boo
Не совсем. Можно читать переменную, например, в int, а потом преобразовывать в bool.
LightAgrail
Сообщений: n/a
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
Эксперт C++
500 / 404 / 35
Регистрация: 23.09.2010
Сообщений: 1,139
24.11.2010, 20:08     Вывод трёх переменных #4
интересно, как работает с
Цитата Сообщение от LightAgrail Посмотреть сообщение
const float r
Добавлено через 46 секунд
а
вы вообще не читаете его
Yandex
Объявления
24.11.2010, 20:08     Вывод трёх переменных
Ответ Создать тему
Опции темы

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