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

Где ошибка в коде? - C++

Восстановить пароль Регистрация
 
Protor
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 4
27.12.2013, 11:54     Где ошибка в коде? #1
Доброго времени суток!

Я недавно начал учиться писать программы на С++, сайчас возникла такая проблема, по условиям задания надо так, чтобы пользователь ввел целое число, вещественное и получил в итоге надпись: Vi vveli pervoe A, vtoroe B, sohraneno C
C - тоже вещественное. По сути для задачи достаточно написать так:
C++
1
2
3
4
5
6
7
8
9
10
#include "stdio.h"
int main(void)
{
 int a;
 float b,c;
 c=1.234567;
 scanf("%d %f", &a,&b);
 printf("Vivveli pervoe %d, vtoroe %f, sohraneno %f\n",a,b,c);
 return(0);
}
Но мне немного захотелось усовершенствовать, в частности русский язык и чтобы выводило надпись о том, что вообще надо ввести, написал так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
int main(void) {
    setlocale(0, "Rus");
    int a;
    float b, c=4.500;
    printf("Введите целое число \n");
    scanf_s("%d", &a);
    printf("Введите вещественное число \n");
    scanf_s("%f", &b);
    printf("Вы ввели первое %a, второе %f, сохранено %f", a, b, c);
    return(0);
}
Компиллируется без проблем, но потом в консоли получается что-то типа вот этого:
Введите целое число
5
Введите вещественное число
4.56
Вы ввели первое 0x0,000000p-1022, второе 0,000000, сохранено 0,000000Для продолж
ения нажмите любую клавишу . . .
В чем у меня ошибка?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2013, 11:54     Где ошибка в коде?
Посмотрите здесь:

где ошибка в коде C++
C++ Где то в коде ошибка
C++ Где ошибка в програмном коде
C++ Где ошибка в коде
Где ошибка в коде?Не могу понять C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
bradobrei
Продам уран 238U
 Аватар для bradobrei
119 / 119 / 23
Регистрация: 22.01.2013
Сообщений: 298
27.12.2013, 12:07     Где ошибка в коде? #2
C++
1
 printf("Вы ввели первое %a, второе %f, сохранено %f", a, b, c);
вместо %a поставить %d
и используй scanf вместо scanf_s
остальное вроде правильно
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,165
Завершенные тесты: 1
27.12.2013, 12:08     Где ошибка в коде? #3
C++
1
printf("Вы ввели первое %d, второе %f, сохранено %f\n", a, b, c);
Protor
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 4
27.12.2013, 12:20  [ТС]     Где ошибка в коде? #4
Спасибо большое). Надо ж было такую ерунду просмотреть).
bradobrei, я использовал scanf, как и требуется в уроке, но Visual Studio пишет при компилляции, что с ним возможны проблемы, и впринципе ничего старшного, но вежливо предлагает передумать в сторону использования scanf_s, потому и перешел на него). Пока еще не читал в справочниках про функции, потом разберусь в чем отличие.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
27.12.2013, 13:05     Где ошибка в коде? #5
Цитата Сообщение от bradobrei Посмотреть сообщение
и используй scanf вместо scanf_s
Немного странный совет. Конечно _s версия это не стандарт, а предложение от MS. Конечно, даже в MS компиляторах использовать _s актуально только если в строке форматов указаны "%s" или "%c".
Но не стоит забывать, что scanf это в первую очередь сишная функция (не плюсовая), поэтому рекомендовать я бы тут не стал, ни scanf, ни scanf_s. Лучше использовать <iostream> и перегруженные операторы чтения из потока operator<<.
Protor
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 4
27.12.2013, 16:28  [ТС]     Где ошибка в коде? #6
Tulosba, я точно не знаю, возможно просто урок устарел - он 2011 года и под Visual Studio 2008, есть даже задание удалить return и посмотреть какую ошибку выдаст при компилляции, а Visual Studio 2008 может обойтись и без return, ну или просто чтобы попроще было для начала дали именно scanf использовать.
Ну и там рекомендуется stdio.h вместо <iostream>. На <iostream> я сам перешел когда понял, что stdio.h не дает возможности выводить кириллицу, при этом остальные функции работают. Хотя и понятия не имею пока в чем между ними разница).
Yandex
Объявления
27.12.2013, 16:28     Где ошибка в коде?
Ответ Создать тему
Опции темы

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