Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Protor
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 4
1

Где ошибка в коде?

27.12.2013, 11:54. Просмотров 325. Ответов 5
Метки нет (Все метки)

Доброго времени суток!

Я недавно начал учиться писать программы на С++, сайчас возникла такая проблема, по условиям задания надо так, чтобы пользователь ввел целое число, вещественное и получил в итоге надпись: 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Для продолж
ения нажмите любую клавишу . . .
В чем у меня ошибка?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2013, 11:54
Ответы с готовыми решениями:

Ошибка где-то в коде
Не могу найти ошибку в коде. Выдает: недопустимо , правый оператор имеет тип int. #include...

Где ошибка в коде
по запросу строки программа должна выдавать строку с увеличением на 2 .Например запрашиваю 1 строку...

Где то в коде ошибка
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #define TRUE 1 #define FALSE 0 #define XRY 8 ...

где ошибка в коде
// Урок 9. C++ Игра Угадай число.cpp: определяет точку входа для консольного приложения. // ...

Где ошибка в коде?
Задание такое: Дан одномерный массив с большим количеством нулей. Заменить в нем каждую группу из...

5
bradobrei
Продам уран 238U
121 / 120 / 127
Регистрация: 22.01.2013
Сообщений: 298
27.12.2013, 12:07 2
C++
1
 printf("Вы ввели первое %a, второе %f, сохранено %f", a, b, c);
вместо %a поставить %d
и используй scanf вместо scanf_s
остальное вроде правильно
1
zss
Модератор
Эксперт С++
8100 / 7237 / 4505
Регистрация: 18.12.2011
Сообщений: 19,132
Завершенные тесты: 1
27.12.2013, 12:08 3
C++
1
printf("Вы ввели первое %d, второе %f, сохранено %f\n", a, b, c);
1
Protor
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 4
27.12.2013, 12:20  [ТС] 4
Спасибо большое). Надо ж было такую ерунду просмотреть).
bradobrei, я использовал scanf, как и требуется в уроке, но Visual Studio пишет при компилляции, что с ним возможны проблемы, и впринципе ничего старшного, но вежливо предлагает передумать в сторону использования scanf_s, потому и перешел на него). Пока еще не читал в справочниках про функции, потом разберусь в чем отличие.
0
Tulosba
:)
Эксперт С++
4751 / 3245 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
27.12.2013, 13:05 5
Цитата Сообщение от bradobrei Посмотреть сообщение
и используй scanf вместо scanf_s
Немного странный совет. Конечно _s версия это не стандарт, а предложение от MS. Конечно, даже в MS компиляторах использовать _s актуально только если в строке форматов указаны "%s" или "%c".
Но не стоит забывать, что scanf это в первую очередь сишная функция (не плюсовая), поэтому рекомендовать я бы тут не стал, ни scanf, ни scanf_s. Лучше использовать <iostream> и перегруженные операторы чтения из потока operator<<.
1
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 не дает возможности выводить кириллицу, при этом остальные функции работают. Хотя и понятия не имею пока в чем между ними разница).
0
27.12.2013, 16:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2013, 16:28

Где ошибка в коде?
Написал код , в нем вводятся 15 чисел , числа входящие в диапозон от 0 до 10 возводит в квадрат , и...

где ошибка в коде?
видимо неправильно работает функция симметричности матрицы. потому что ввожу не симметричную...

Где ошибка в коде ?
задача Треугольный ряд чисел : первое число 1 второе на 2 больше чем первое , 3е на 3 больше...


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

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

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