Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 02.03.2016
Сообщений: 60
1

Вывести на экран информацию о неуспевающих студентах (массив структур "Student")

02.03.2016, 23:40. Показов 1182. Ответов 13
Метки нет (Все метки)

Ребят, очень нужна помощь, долблюсь уже с прогой неделю, не хочет выводить успевающих и неуспевающих студентов
Миниатюры
Вывести на экран информацию о неуспевающих студентах (массив структур "Student")  
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2016, 23:40
Ответы с готовыми решениями:

Массив структур "Музыкальная школа": вывести информацию по ученикам, играющим на заданном инструменте
Создать массив, элементами которого являются структуры – список учеников музыкальной школы...

Структура Student: вывести на экран информацию о студентах, средний балл которых превышает введенное число
STUDENT (наименование учебного заведения, фамилия и инициалы студента,номер группы,набор из пяти...

Ругается на строку Student student = new Student ("Динар", "19", "Е09-31"); В чём причина?
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Заменить в строке "Мама мыла раму" буквы "а" на знак "_" . Вывести полученный массив на экран
Заменить в строке "Мама мыла раму" буквы "а" на знак "_" . Вывести полученный массив на экран....

13
С чаем беда...
Эксперт CЭксперт С++
9447 / 4939 / 1352
Регистрация: 18.10.2014
Сообщений: 11,508
02.03.2016, 23:57 2
Что значит "не хочет"? Как обосновывает?

Для 'char group, fakul;' чтение как 'scanf("%s", &group)' и 'scanf("%s", &fakul)' - это полная белиберда. Непустая строка никак не может поместиться в один 'char'.

Почему поле 'int mark' читается со спецификатором формата '%s'???

P.S. Хоть на работоспособность кода это обычно не влияет, передача массива 'char array[N]' в 'scanf' для спецификатора формата '%s' делается либо как 'scanf("%s", array)' (без использования оператора '&'), либо как 'scanf("%s", &array[0])'. Ваше 'scanf("%s", &array)' формально некорретно.
1
0 / 0 / 0
Регистрация: 02.03.2016
Сообщений: 60
03.03.2016, 00:01  [ТС] 3
я тоже сомневалась в постановке "&", однако преподаватель сказал так надо =_=
а "не хочет" - не выполняется условие
Миниатюры
Вывести на экран информацию о неуспевающих студентах (массив структур "Student")  
0
С чаем беда...
Эксперт CЭксперт С++
9447 / 4939 / 1352
Регистрация: 18.10.2014
Сообщений: 11,508
03.03.2016, 00:07 4
Если вам преподаватель сказал, что "так надо", то он сказал чепуху. Однако я сомневаюсь, что вы его правильно поняли. Скорее всего он сказал как-то по-другому.

А условие у вас "не выполняется" потому что, еще раз, вы умудряетесь читать поле 'mark' с неправильным спецификатором формата '%s'. Поэтому в ваше поле 'mark' ложится не то, что вы вводили, а фактически мусор.

И что у вас за система оценок? Хорошая успеваемость обозначается меньшими оценками? Это так и задумано?

И вышеупомянутая проблема с 'char group, fakul;' - это тоже очень серьезно.
1
0 / 0 / 0
Регистрация: 02.03.2016
Сообщений: 60
03.03.2016, 00:15  [ТС] 5
спасибо
0
0 / 0 / 0
Регистрация: 02.03.2016
Сообщений: 60
03.03.2016, 00:32  [ТС] 6
Нужно создать программку, где через структуру вводятся данные о студентах, а именно фио, шифр предмета, оценка по этому предмету. Нужно вывести на экран неуспевающих, как можно сделать вывод неуспевающих? :3
Миниатюры
Вывести на экран информацию о неуспевающих студентах (массив структур "Student")  
0
С чаем беда...
Эксперт CЭксперт С++
9447 / 4939 / 1352
Регистрация: 18.10.2014
Сообщений: 11,508
03.03.2016, 00:42 7
Так у вас же все было правильно написано в предыдущем варианте, с той только оговоркой, что оценки 1, 2, 3 считались "успевающими", а выше 3 - "не успевающими".

Я вижу, что проблему с вводом 'mark' вы исправили. И проблему с 'group, fakul' тоже.

В чем теперь проблема? Зачем вы выкосили вашу реализацию?
0
0 / 0 / 0
Регистрация: 02.03.2016
Сообщений: 60
03.03.2016, 00:46  [ТС] 8
Потому что оно не работает оно не выводит на экран неуспевающих и успевающих возможно нужно через другой цикл пробовать?.. Простите за мою тупость((
0
С чаем беда...
Эксперт CЭксперт С++
9447 / 4939 / 1352
Регистрация: 18.10.2014
Сообщений: 11,508
03.03.2016, 01:10 9
Ну это уж у вас какая-то магия творится. А попробовать, к сожалению, невозможно, ибо вы почему-то решили постить сюда скриншоты, вместо нормального текста. Давайте нормальный текст программы. Мы тут не секретарши-машинистки ваши программы с картинок набирать.
0
0 / 0 / 0
Регистрация: 02.03.2016
Сообщений: 60
03.03.2016, 15:34  [ТС] 10
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
#include<stdio.h>
#include<locale.h>
#include <conio.h>
#include <math.h>
struct student {
    int numz;
    char surname[30], name[30], otchestvo[30];
    int shifr;
    int mark;
}; 
    int main ()
{   
    int N, kurs; char group[30], fakul[30];
    setlocale(LC_ALL, "Rus");
    printf("\n Факультет:  "); scanf( "%s", &fakul);
    printf(" Группа:  "); scanf( "%s", &group);
    printf(" Курс: "); scanf( "%d", &kurs);
    printf(" сколько человек в группе?");
    scanf("%d", &N);
    struct student stud[30];  int i; 
    for (i=0; i<N; i++) 
{   printf("%d-й студент", i+1);
    printf("\n Номер зачетки:  "); scanf( "%d", &stud[i].numz);
    printf("\n Ф.И.О :  "); scanf( "%s %s %s", &stud[i].surname, &stud[i].name, &stud[i].otchestvo);
    printf("\n Шифр предмета:  "); scanf( "%d", &stud[i].shifr);
    printf("\n Оценка:  \n"); scanf( "%d", &stud[i].mark);
    }
    for (i=0; i<N; i++) {
    if((stud[i].mark)<3)
    printf("Не успевает по %d\n ", stud[i].shifr );
    else
    {
    if((stud[i].mark)>=3)
    printf("Успевает по %d\n", stud[i].shifr );
    }
    getch();
}
}
0
С чаем беда...
Эксперт CЭксперт С++
9447 / 4939 / 1352
Регистрация: 18.10.2014
Сообщений: 11,508
03.03.2016, 18:09 11
И что ж тут не работает? Попробовал - все работает как ожидается.
1
0 / 0 / 0
Регистрация: 02.03.2016
Сообщений: 60
03.03.2016, 19:31  [ТС] 12
мне нужно, чтобы выводило и успевающих и неуспевающих, причем всех, а оно выводит лишь одного...

Добавлено через 12 минут
через какой цикл или функцию можно это привести в действие?
0
С чаем беда...
Эксперт CЭксперт С++
9447 / 4939 / 1352
Регистрация: 18.10.2014
Сообщений: 11,508
03.03.2016, 19:45 13
Цитата Сообщение от Lindemann Till Посмотреть сообщение
а оно выводит лишь одного
Как это "лишь одного"? Только что попробовал. Выводит всех.

Вы, надеюсь, замечаете, что сами вписали ваш вызов getch() внутрь цикла вывода? То есть после вывода каждого студента надо нажимать клавишу, чтобы увидеть следующего.

Если вы хотели, чтобы оно выводило всех сразу, то зачем вы тогда засунули этот getch() внутрь цикла?
1
0 / 0 / 0
Регистрация: 02.03.2016
Сообщений: 60
03.03.2016, 19:50  [ТС] 14
БОЖЕ, капец я дура, спасибо огромное!!!!!!!
0
03.03.2016, 19:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.03.2016, 19:50

Выводит ошибку на строке StudentA student = new Student ("Динар", "19", "Е09-31");В чем причина?
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Массив структур содержит информацию о студентах группы
/*Массив структур содержит информацию о студентах группы: в первом поле стоит фамилия, во втором...

Реализовать поиск в массиве структур "Student" по заданному полю
Я очень мало понимаю в программировании, но лабораторные как-то надо сдавать, учитывая, что препод...

Реализовать поиск по заданному полю в массиве структур типа "Student"
не могу понять почему не работает цикл void init?? Срабатывает только один раз(то есть могу ввести...


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

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

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