0 / 0 / 0
Регистрация: 05.05.2020
Сообщений: 9
1

Почему пропускается ввод с клавиатуры ?

07.05.2020, 18:29. Показов 567. Ответов 2
Метки c++ (Все метки)

Задача(не важна):
Каждого студента можно описать при помощи следующих характеристик: ФИО, курс, специальность, предмет 1, предмет 2, предмет 3. Написать программу, определяющую количество студентов:
1) сдавших сессию на «отлично»;
2) не сдавших хотя бы 1 экзамен.
Вопрос: почему пропускается вод с клавиатуры в 28 строчке и сразу переходит на 30 строчку?
Код:
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
50
51
52
53
#include "stdio.h"
#include "stdlib.h"
#include  <iostream>
using namespace std;
 
 
typedef struct
{
    char fio[30];
    int kurs;
    char spec[50];
    int hist;
    int math;
    int phis;
} stud;
int main()
{
    setlocale(LC_ALL, "Russian");
    stud *st;
    int n, i, count_5, count_2;
        printf("Введите n: ");
        scanf("%i", &n);
        st = (stud*)malloc(n * sizeof(stud));
        
        for (i = 0; i <= n; i++)
        {
            printf("ФИО: "); 
            gets_s((st+i)->fio);
            printf("Специальность: "); 
            gets_s((st+i)->spec);
            printf("Курс: ");
            scanf("%i", &(st + i)->kurs);
            printf("История: ");
            scanf("%i", &(st + i)->hist);
            printf("Математика: ");
            scanf("%i", &(st + i)->math);
            printf("Физика: ");
            scanf("%i", &(st + i)->phis);
        }
        count_5 = count_2 = 0;
 
        for (i = 0; i <= n; i++)
        {
            if ((st + i)->hist == 5 && (st + i)->math == 5 && (st + i)->phis == 5)
                count_5++;
                if((st + i)->hist == 2 && (st + i)->math == 2 && (st + i)->phis == 2)
                    count_2++;
        }
        printf("Отличников: %i\n", count_5);
        printf("Двоечников: %i\n", count_2);
        free(st);
        return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2020, 18:29
Ответы с готовыми решениями:

После 1-го цикла пропускается ввод adres, почему так происходит?
#include&lt;iostream&gt; #include &lt;cstring&gt; using namespace std; struct anketa{ char fio;...

Скажите пожалуйста, что не так: Почему в выделенной части кода пропускается ввод фамилии?
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; #include...

Пропускается ввод
Собственно вопрос: почему при вводе второго элемента массива структур пропускается ввод имени? ...

Пропускается ввод
Есть код (пишу в Visual Studio 17 Enterprice) int dimension = 2; // если тут будут бОльшие...

2
6565 / 4550 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
07.05.2020, 19:32 2
Цитата Сообщение от VUMI Посмотреть сообщение
Вопрос: почему пропускается вод с клавиатуры в 28 строчке и сразу переходит на 30 строчку?
Сделай там scanf вместо gets
C++
1
2
3
4
        printf("ФИО: ");
        scanf("%s", st[i].fio);
        printf("Специальность: ");
        scanf("%s", st[i].spec);
Добавлено через 26 секунд
Цитата Сообщение от VUMI Посмотреть сообщение
for (i = 0; i <= n; i++)
for (i = 0; i < n; i++)
0
Модератор
Эксперт С++
12088 / 9763 / 5906
Регистрация: 18.12.2011
Сообщений: 26,213
07.05.2020, 20:32 3
На всякий случай
1. сначала
Цитата Сообщение от VUMI Посмотреть сообщение
scanf("%i", &n);
в потоке ввода оставляет \n
2. потом
Цитата Сообщение от VUMI Посмотреть сообщение
gets_s((st+i)->fio);
читает это \n как пустую строку
См.
Распространенные ошибки
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2020, 20:32
Помогаю со студенческими работами здесь

В цикле пропускается ввод данных
В цикле пропускает ввод названия продукта и даты изготовления. Почему и как исправить? #include...

Пропускается ввод первого элемента массива
#include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;string&gt; #include &lt;stdio.h&gt;...

Пропускается ввод одного из элементов структуры
Здравствуйте, в коде ниже ошибка- пропускается ввод одного из элементов структуры: #include...

Почему то пропускается условие
В программе нужно указать записывать в файл или нет. Вроде бы все правильно, но почему то...

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

Почему пропускается getline?
//функция ввода вопросов void create () { string question; int key; ofstream...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru