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

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

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

Посоветуйте альтернативу scanf() в этом коде - C++

03.07.2014, 04:07. Просмотров 325. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
// не работает scanf() в цыкле if, если же перед %c поставить пробел почему то, если ввести  Y  то происходит
// замещение строк, выглядит как будто z[2].a, 99 уже введено
#include <cstdio>
#include <iostream>
using namespace std;
 
struct x
{
char a[100], b[100], c[500];
int y;
float v;
} z[3];
 
int main(void)
{
int t = 0;
int r = 0;
char f;
do
        {
        cout << "Put the name of the track:" << endl;
        printf("%d)", t+1);
        cin.getline(z[t].a, 99);
        cout << "Put the author of the composition:" << endl;
        printf("%d)", t+1);
        cin.getline(z[t].b, 99);
        cout << "Put the description of the track:" << endl;
        printf("%d)", t+1);
        cin.getline(z[t].c, 499);
        cout << "Put the number of the track:" << endl;
        printf("%d)", t+1);
        scanf("%d", &z[t].y);
        cout << "Put the rate of the track:" << endl;
        printf("%d)", t+1);
        scanf("%f", &z[t].v);
        t++;
        if(t < 3)
                {
                cout << "Do you want to put information about next track ? Y/n ?" << endl;
                scanf("%c", &f);
                }
        }
while(t < 3 && (f == 'Y' || f == 'y'));
puts("Name      Author          Description             Number  Rate\n");
for(r = 0;r < t; r++)
printf("%s      %s              %s              %d      %.2f", z[r].a, z[r].b, z[r].c, z[r].y, z[r].v);
putchar('\n');
return(0);
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2014, 04:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Посоветуйте альтернативу scanf() в этом коде (C++):

замена scanf и printf на cin и cout в коде - C++
#include &quot;stdio.h&quot; #include &quot;math.h&quot; int main() { float x = -2.0, A = 0, buf = 0; printf(&quot;A = &quot;); scanf(&quot;%f&quot;, &amp;A); ...

Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а - C++
Как считать строку scanf'ом при этом не переходя на новую строку, т.е. без использования Enter'а, необходимо для интерактивного ввода в...

Считывание символа с помощью функции scanf: найти и исправить ошибку в коде - C++
Hello, world! Столкнулся с такой проблемой, как считывание символа с помощью функции scanf. Выкладываю два кода. Один исполняется...

Составить программу, которая по введенному номеру месяца и номеру года выводит количество дней в этом месяце(использовать операторы printf и scanf) - C++
Составить программу, которая по введенному номеру месяца и номеру года выводит количество дней в этом месяце(использовать операторы printf...

Что не правильно в этом коде? - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; using namespace std; int main() { float I; //Годовая процентная...

Все ли хорошо в этом коде - C++
Предложите ваши варианты решения заданий 3. Все ли хорошо в этом коде? Файл legacy.c int values; Файл modern.cpp #define...

6
rikimaru2013
C++ Game Dev
2438 / 1132 / 240
Регистрация: 30.11.2013
Сообщений: 3,688
03.07.2014, 04:34 #2
Цитата Сообщение от noobolamer Посмотреть сообщение
Посоветуйте альтернативу scanf() в этом коде
C++
1
 gets(&f);
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2014, 08:23 #3
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
(cin >> z[t].y).get(); // вместо scanf("%d", &z[t].y);
и т.д.
1
zss
Модератор
Эксперт С++
6486 / 6049 / 1987
Регистрация: 18.12.2011
Сообщений: 15,691
Завершенные тесты: 1
03.07.2014, 08:47 #4
rikimaru2013, gets читает строку, т.е. массив символов (с завершающим нулем), а f у ТС - один символ.
для чтения символов есть функция f=getchar();
0
ValeryS
Модератор
6681 / 5090 / 477
Регистрация: 14.02.2011
Сообщений: 17,090
03.07.2014, 09:05 #5
Цитата Сообщение от noobolamer Посмотреть сообщение
(f == 'Y' || f == 'y'))
раскладку клавы посмотри, по умолчанию вполне может прыгнуть в русский
а лучше так
(f == 'Y' || f == 'y' || f == 'н' || f == 'Н'))
2
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.07.2014, 11:06 #6
Цитата Сообщение от noobolamer Посмотреть сообщение
// не работает scanf() в цыкле if, если же перед %c поставить пробел почему то, если ввести *Y *то происходит
// замещение строк, выглядит как будто z[2].a, 99 уже введено
Если правильно понял проблему:
C++
1
2
scanf("%c", &f);
getchar(); // убрать из потока '\n' перед getline()
0
noobolamer
0 / 0 / 0
Регистрация: 03.07.2014
Сообщений: 2
03.07.2014, 20:03  [ТС] #7
Всем спасибо ответ alsav22 решил проблему.
0
03.07.2014, 20:03
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2014, 20:03
Привет! Вот еще темы с ответами:

Что в этом коде не правильно? - C++
Как правильно синтезировать этот код? array и array_size - выдает ошибку double avg = 0; for (int i = 0; i&lt;array_size; i++) avg +=...

Сколько методов реализовано в этом коде? - C++
Сколько методов реализовано в этом коде? и какие? using namespace std; class Exem { private: char *name; // имя int data; //...

Как пронумеровать текст в этом коде? - C++
Очередной вопрос от полного профана в C++ Для проверки создал цикл while do, решил пронумеровать, но тут такая дилемма - #include...

Как дописать цикл в этом коде? - C++
#include &lt;graphics.h&gt; #include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;dos.h&gt; class wheel { int X,Y;...


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

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

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