Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
ArsikLis
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 11
1

Структуры. Распечатать анкетные данные студентов, обучающихся на "4" и "5"

07.05.2014, 17:11. Просмотров 903. Ответов 8
Метки нет (Все метки)

Распечатать анкетные данные студентов, обучающихся на "4" и "5".

Заранее спасибо.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.05.2014, 17:11
Ответы с готовыми решениями:

Структуры. Распечатать список студентов фамилии которых начинаются с буквы "К"
Распечатать список студентов фамилии которых начинаются с буквы К. Заранее спасибо :)

Распечатать данные студентов, получивших в сессию все оценки "5"
Задача. Вывести информацию о K студентах группы. Информация содержит ФИО студента, год рождения,...

Получить всех студентов, обучающихся в группах "ЭК"
Мне нужно: Список Все студенты, обучающиеся в группах "ЭК" Вот тут есть пример : Сформировать...

Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость", "Цена"
Создать запись "Двигатель", которая содержит элементы "Название", "Мощность", "Скорость",...

Ввести структуру "историческое событие" с полями "число", "месяц", "год", "событие"
Ввести структуру ИСТОРИЧЕСКОЕ СОБЫТИЕ с полями ЧИСЛО, МЕСЯЦ, ГОД, СОБЫТИЕ. Составить и...

8
zmhan
1 / 1 / 1
Регистрация: 25.02.2014
Сообщений: 53
09.05.2014, 01:53 2
чем помочь?
0
ArsikLis
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 11
09.05.2014, 20:38  [ТС] 3
Это задача по структурам помоги написать
0
zmhan
1 / 1 / 1
Регистрация: 25.02.2014
Сообщений: 53
09.05.2014, 20:52 4
я еще эту тему не проходил, хотел написать но не смог(
0
ArsikLis
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 11
09.05.2014, 23:20  [ТС] 5
А я пропустил лекцию по этой теме и теперь не могу разобраться
0
chjornoe_solnce
54 / 54 / 47
Регистрация: 16.03.2014
Сообщений: 110
Записей в блоге: 2
10.05.2014, 02:39 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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <wchar.h>
#include <locale.h>
 
#define NSBJ 3
 
struct Subject {
    wchar_t *subject;
    unsigned short score;
};
 
struct Student {
    wchar_t *fname;
    wchar_t *lname;
    
    unsigned int born;
    unsigned int class;
    
    unsigned short n_sbj;
    struct Subject sbj[NSBJ];
};
 
bool is_excellent(struct Student *std) {
    for(unsigned int i = 0; i < std->n_sbj; ++i) {
        if(3 >= std->sbj[i].score) {
            return false;
        }
    }
    
    return true;
}
 
void print_excellent_student(unsigned int n, struct Student std[n]) {
    for(unsigned int i = 0, j; i < n; ++i) {
        if(true == is_excellent(&std[i])) {
            fwprintf(stdout, L"---------------------------------------------\n");
            fwprintf(stdout, L"     Фамилия: %ls\n", std[i].lname);
            fwprintf(stdout, L"         Имя: %ls\n", std[i].fname);
            fwprintf(stdout, L"Год рождения: %u\n",  std[i].born);
            fwprintf(stdout, L"       Класс: %u\n",  std[i].class);
            fwprintf(stdout, L"\nГодовые оценки по предметам:\n\n");
            fwprintf(stdout, L"  Предмет   | Оценка\n");
            for(j = 0; j < std[i].n_sbj; ++j) {
                fwprintf(stdout, L" %-10ls | %3hu\n", std[i].sbj[j].subject, std[i].sbj[j].score);
            }
            fwprintf(stdout, L"---------------------------------------------\n");
        }
    }
}
 
int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    struct Student std[] = 
            {{L"Василий"
             ,L"Иванов"
             ,1999
             ,7
             ,NSBJ
             ,{{L"Русский", 3}, {L"Математика", 4}, {L"Химия", 3}}},
             {L"Максим"
             ,L"Белозёрский"
             ,1998
             ,7
             ,NSBJ
             ,{{L"Русский", 5}, {L"Математика", 5}, {L"Химия", 4}}},
             {L"Елена"
             ,L"Кузнецова"
             ,2000
             ,7
             ,NSBJ
             ,{{L"Русский", 5}, {L"Математика", 4}, {L"Химия", 4}}},
             {L"Марина"
             ,L"Красильникова"
             ,1999
             ,7
             ,NSBJ
             ,{{L"Русский", 4}, {L"Математика", 4}, {L"Химия", 3}}},
             {L"Вячеслав"
             ,L"Бочаров"
             ,1999
             ,7
             ,NSBJ
             ,{{L"Русский", 3}, {L"Математика", 4}, {L"Химия", 4}}},
            };
    
    unsigned int SIZE = sizeof(std) / sizeof(std[0]);
    
    print_excellent_student(SIZE, std);
    
    return EXIT_SUCCESS;
}
0
Wlad0xFF
1 / 1 / 0
Регистрация: 11.05.2014
Сообщений: 10
11.05.2014, 10:55 7
chjornoe_solnce, а можно листинг программы с комментариями?
0
ArsikLis
0 / 0 / 0
Регистрация: 01.02.2014
Сообщений: 11
11.05.2014, 20:33  [ТС] 8
Ой код программы такой большой какой то . Я уже разобрался и вот написал все гораздо проще
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <locale.h>
 
const int n=3;
 
struct info{
    char name [10];
    char surname [15];
    int mark;
}st[n];
 
void main(){
    setlocale(LC_ALL,"Ukrainian");
    printf("Введiть даннi про студентiв:\n\n");
    for(int i=0; i<n; i++)
        scanf("%s %s %i", &st[i].name, &st[i].surname, &st[i].mark);
    printf("\nСтуденти, якi вчаться на оцінку 4 i 5: \n"); 
    for(int i=0; i<n; i++)
        if(st[i].mark >= 4) printf("%s %s\n", st[i].name, st[i].surname);
    getch();
    }
Добавлено через 57 секунд
Коменти я писав по українськи так як я з України )
0
chjornoe_solnce
54 / 54 / 47
Регистрация: 16.03.2014
Сообщений: 110
Записей в блоге: 2
11.05.2014, 20:36 9
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <wchar.h>
#include <locale.h>
 
#define NSBJ 3 // Число предметов
 
// Описание структуры, содержащей описание предмета
// Она будет частью другой структуры
struct Subject {
    wchar_t *subject; // название предмета
    unsigned short score; // оценка по предмету
};
 
// Описание структуры, содержащей информацию о студенте
struct Student {
    wchar_t *fname; // Имя
    wchar_t *lname; // Фамилия
    
    unsigned int born; // Год рождения
    unsigned int class; // Текущий класс
    
    unsigned short n_sbj; // Число предметов
    struct Subject sbj[NSBJ]; // Информация о предметах
                              // В этом месте лучше объявить указатель на структуру
                              // и с помощью malloc() и free() добовлять и удалять
                              // информацию о предметах
                              // Данное объявление сделанно исключительно вцелях простоты
                              // определения объекта структуры
};
 
// Функция определяет является ли ученик отличником.
// Принимает описание студента в качестве указателя на структуру std
// Возвращает true, ученик отличник иначе - false
bool is_excellent(struct Student *std) {
    // просматриваем оченки по предметам
    // поскольку std является указателем, то используем
    // коственную операцию пренадлежности "->" к элементу структуры
    // std->n_sbj
    for(unsigned int i = 0; i < std->n_sbj; ++i) {
        // поскольку sbj является массивом структур, то выражение sbj[i]
        // есть обращение к i-му объекту массива структур.
        // И раз sbj[i] является объектом структуры, то доступ к элементу
        // структуры происходит через операцию принадлежности "."
        if(3 >= std->sbj[i].score) {
            return false;
        }
    }
    
    return true;
}
 
// Функция выводит на печать информацию о студентах, прошедших проверку
// Входящая информация - число студентов (размер массива) n, массив
// структур с описаниями о студентах std[n]
void print_excellent_student(unsigned int n, struct Student std[n]) {
    for(unsigned int i = 0, j; i < n; ++i) {
        // Определяем является ли студент отличником, для этого передаём
        // в функцию is_excellent() указатель на текущий элемент в массиве
        // структур (std[i]). Используем для этого операцию получения адреса - &
        if(true == is_excellent(&std[i])) {
            // Выводим на печать элементы структуры, ипользуя операцию принадлежности "."
            fwprintf(stdout, L"---------------------------------------------\n");
            fwprintf(stdout, L"     Фамилия: %ls\n", std[i].lname);
            fwprintf(stdout, L"         Имя: %ls\n", std[i].fname);
            fwprintf(stdout, L"Год рождения: %u\n",  std[i].born);
            fwprintf(stdout, L"       Класс: %u\n",  std[i].class);
            fwprintf(stdout, L"\nГодовые оценки по предметам:\n\n");
            fwprintf(stdout, L"  Предмет   | Оценка\n");
            for(j = 0; j < std[i].n_sbj; ++j) {
                // std[i] является объектом структуры содержащим масив 
                // объектов структур sbj. Поэтому ипользуем операцию принадлежности "."
                // для доступа sbj
                //
                // std[i].sbj
                //
                // Но sbj[j] сам является объектом структуры, поэтому к
                // доступу элементов, которые он содержит, так же 
                // используем операцию принадлежности "."
                //
                // std[i].sbj[j].subject
                //
                fwprintf(stdout, L" %-10ls | %3hu\n", std[i].sbj[j].subject, std[i].sbj[j].score);
            }
            fwprintf(stdout, L"---------------------------------------------\n");
        }
    }
}
 
int main(int argc, char *argv[]) {
    setlocale(LC_ALL, "ru_RU.UTF-8");
    
    // Объявляем массив структур std и инициализируем элементы структуры
    struct Student std[] = 
            { // Открывающая скобка массива структур std
             { // Открывающая скобка инициализации элементов структуры std
              L"Василий" // fname
             ,L"Иванов"  // lname
             ,1999       // born
             ,7          // class
             ,NSBJ       // n_sbj
             ,{ // Открывающая скобка массива структур sbj
                 { // Открывающая скобка инициализации элементов структуры sbj
                     L"Русский", // subject
                     3           // score
                 }, // Закрывающая скобка инициализации элементов структуры sbj
                 // следующий элемент массива структур sbj
                 {L"Математика", 4},
                 {L"Химия", 3}
              } // Закрывающая скобка массива структур sbj
             }, // Закрывающая скобка инициализации элементов структуры sdt
             
             // следующий элемент массива структур std
             {L"Максим"
             ,L"Белозёрский"
             ,1998
             ,7
             ,3
             ,{{L"Русский", 5}, {L"Математика", 5}, {L"Химия", 4}}},
             
             {L"Елена"
             ,L"Кузнецова"
             ,2000
             ,7
             ,NSBJ
             ,{{L"Русский", 5}, {L"Математика", 4}, {L"Химия", 4}}},
             
             {L"Марина"
             ,L"Красильникова"
             ,1999
             ,7
             ,NSBJ
             ,{{L"Русский", 4}, {L"Математика", 4}, {L"Химия", 3}}},
             
             {L"Вячеслав"
             ,L"Бочаров"
             ,1999
             ,7
             ,NSBJ
             ,{{L"Русский", 3}, {L"Математика", 4}, {L"Химия", 4}}},
            }; // Закрывающая скобка массива структур std
    
    unsigned int SIZE = sizeof(std) / sizeof(std[0]); // получаем размер массива структур std
    
    print_excellent_student(SIZE, std);
    
    return EXIT_SUCCESS;
}
0
11.05.2014, 20:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2014, 20:36

Вывести фамилии студентов, учащихся на "4" и "5" и их процентное соотношение с другими
вот условие: Ведомость о результатах зимней сессии содержит информацию: фамилия и инициалы...

Напечатать фамилии студентов, учащихся на "4". "5" и их процентное соотношение с другими
Ведомость о результатах зимней сессии содержит информацию: фамилия и инициалы студента, номер...

Подсчитать общее количество вхождений в строку символов "А", "a", "B" и "b"
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;conio.h&gt; main() { int i; int k; ...


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

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

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