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

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

Войти
Регистрация
Восстановить пароль
 
Protor
0 / 0 / 0
Регистрация: 27.12.2013
Сообщений: 4
#1

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

27.12.2013, 11:54. Просмотров 267. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Где ошибка в коде? (C++):

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

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

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

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

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

Где то в коде ошибка - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #define TRUE 1 #define FALSE 0 #define XRY 8 //Количество вершин графа. typedef int...

5
bradobrei
Продам уран 238U
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
остальное вроде правильно
1
zss
Модератор
Эксперт С++
6636 / 6198 / 2051
Регистрация: 18.12.2011
Сообщений: 16,159
Завершенные тесты: 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
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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
Привет! Вот еще темы с ответами:

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

Ошибка где-то в коде - C++
Не могу найти ошибку в коде. Выдает: недопустимо , правый оператор имеет тип int. #include &quot;stdafx.h&quot; #include&lt;iostream&gt; using...

Не пойму где ошибка в коде - C++
Задача: (В задаче можно использовать только такие библиотеки и решить надо только через условные операторы.) Все проходит и решение...

Где ошибка в програмном коде - C++
Вычислить Z=(x+y)/(k*n),где x и k- сумма и количество положительных элементов массива А(40), где y и n - сумма и количество отрицательных...


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

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

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