Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для Женя.
4 / 4 / 1
Регистрация: 10.02.2010
Сообщений: 38

Добавить функционал в программу сведений о студентах

11.02.2010, 14:25. Показов 1195. Ответов 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
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
#include <stdio.h>
#include <stdlib.h>
 
typedef struct {
char imie[100];
char nazwisko [100];
char nr_indeksa[100];
int semestr;
} STUDENT ;
 
int main ()
{char symbol;
char c;
STUDENT kadra[100];
int i,n = 0;
printf ( " co chcesz robic daliej? "); // что делать дальше?
//scanf ( "%s", c);
while ((c = getchar() ) != 'q' ) // пока не будет введен символ чтобы остановить прогу
{
printf ( "podaj symbol");
scanf ("%c", &symbol);
if (symbol == 'a')  //а - вписать  студентов
{ printf ("imie");
scanf ("%s", kadra [i].imie);
printf ("nazwisko");
scanf ("%s",&(kadra [i].nazwisko));
printf ("nr_indeksa");
scanf ("%s", &(kadra[i].nr_indeksa));
printf ("semestr");
scanf ("%d", &(kadra[i].semestr));
n++;
} else
if (symbol == 'b')   // б - выписать всех студентов
{ for (i=0; i<=n; i++)
printf ("imie %s\n nazwisko %s\n nr_indeksa %s\n semestr %d\n\n" , kadra[i].imie, kadra[i].nazwisko, kadra[i].nr_indeksa, kadra[i].semestr);
} else
if (symbol == 'c') // с - выписать за семестром
{
int semestr_;
printf ("podaj semestr_");
scanf ("%d", &semestr_);
for (i=0; i<=n ; i ++)
while ( semestr_ == kadra[i].semestr )
printf ("imie %s\n nazwisko %s\n nr_indeksa %s\n" , kadra[i].imie, kadra[i].nazwisko, kadra[i].nr_indeksa);
}
else
 
getchar ();
getchar ();
}
return 0;
}
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.02.2010, 14:25
Ответы с готовыми решениями:

Написать программу выполняющую функцию базы сведений о студентах первого курса.
прошу сделать в проге таблицу,чтобы данные выводились в ней вот задание:(чтобы было понятнее) Написать программу выполняющую...

Добавить функционал в готовую программу решения систем дифферинциальных уравнений
Здравствуйте, мне нужно сделать программу, которая будет решать различные системы дифуров, заданные мною же. У меня есть, мною же...

Обработка сведений о студентах группы
Молю вас помогите, спасибо заранее

8
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.02.2010, 04:06
Цитата Сообщение от Женя.
Эта прога делает делает
_записывает данные
не, сначала нужно i инициализировать
как минимум там цикла нет в блоке if (symbol == 'a') {
0
 Аватар для Женя.
4 / 4 / 1
Регистрация: 10.02.2010
Сообщений: 38
12.02.2010, 04:10  [ТС]
мне кажись она написана верно, я только продолжить не могу...

а вот цикл

C
1
2
3
4
5
6
7
8
9
10
11
if (symbol == 'a')  //а - вписать  студентов
{ printf ("imie");
scanf ("%s", kadra [i].imie);
printf ("nazwisko");
scanf ("%s",&(kadra [i].nazwisko));
printf ("nr_indeksa");
scanf ("%s", &(kadra[i].nr_indeksa));
printf ("semestr");
scanf ("%d", &(kadra[i].semestr));
n++;
}
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.02.2010, 04:13
это не цикл
эта штука выполняется один раз,
а нужно внутри сделать цикл, который выполнится сто раз
C
1
2
3
4
5
6
7
8
9
10
11
12
13
if (symbol == 'a') {
 
    for (i = 0; i < 100; i++) {
        printf("imie:" "\n");
        scanf("%s", kadra[i].imie);
 
        ...
 
    }
 
    ...
 
}
1
 Аватар для Женя.
4 / 4 / 1
Регистрация: 10.02.2010
Сообщений: 38
12.02.2010, 04:27  [ТС]
хм... да - это верно... и не надо постоянно символ "а" вводить чтобы студента добавить...
спасибо за совет

а вот как их выписать в алфавитном порядке?
что нужно использовать?
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.02.2010, 04:53
сначала отсортировать в алфавитном порядке сам массив
а потом просто его вывести
"сортировать структуры"
0
 Аватар для Andrianka
3 / 3 / 0
Регистрация: 09.02.2010
Сообщений: 34
13.02.2010, 04:47
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
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
typedef struct {
    char imie[100];                     // First name
    char nazwisko [100];                // Last name
    char studentNazwisko[100];          // Last name (search)
    char nr_indeksa[100];               // Index no. (must be unique)
    int semestr;                        // Semester no.
} STUDENT ;
 
int main ()
{
    char symbol;                        // Input from user (letter)
    char c;                             // Input from user
    STUDENT kadra[100];                 // Storage to save students
    int i,j,x,n,y, checkIndeksNo = 0;   // Start variables with zero
    char *pstr;                         // Used for sort function
    int sortStudents=1;                 // Used for sort function
    char *names[100];                   // Used for sort function
 
    printf ("Press ENTER to start!");
 
    while ((c = getchar()) != 'q' )
    // Continue executing until users quits (keyboard 'q'
    {
        printf ("Make your choice to continue:");
        printf("\na = Add new student");
        printf("\nb = Show list of all students");
        printf("\nc = Show list of all students in choosen semester");
        printf("\nd = Search student on last name");
        printf("\ne = Sort all students on last name");
        printf("\nq = Quit program\n");
        scanf ("%c", &symbol);
 
        if (symbol == 'a')
        {
            // Reset indeks check no.
            checkIndeksNo = 0;
 
            // Add new student
            printf ("Imie: ");
            scanf ("%s", & (kadra[i].imie));
            printf ("Nazwisko: ");
            scanf ("%s",&(kadra[i].nazwisko));
            printf ("No. indeks: ");
            scanf ("%s",&(kadra[i].nr_indeksa));
 
            while (checkIndeksNo!=1){
                // This while() won't stop before the user enters an unique indeks no.
 
                for (x=0; x<i; x++){
                    // Check if indeks no. already exists in array
                    if (!strcmp(kadra[i].nr_indeksa,kadra[x].nr_indeksa)){
                        if (x != i){
                            // The last input will always return true, so check only records from the past
                            checkIndeksNo = 2;
 
                            printf ("\nError: Indeks no. already used for: '");
                            printf (kadra[x].imie);
                            printf (" ");
                            printf (kadra[x].nazwisko);
                            printf ("'. Please enter a new indeks no.\n");
                        }
                    }
                }
 
                if (checkIndeksNo == 2){
                    // Indeks no. exists already in array, user need to fill in once again a number
                    printf ("No. indeks: ");
                    scanf ("%s",&(kadra[i].nr_indeksa));
 
                    // Reset check (while loop will run again)
                    checkIndeksNo = 0;
                }
                else {
                    // Everything is OK, save the indeks no and continue with the next question (while loop will be finished)
                    checkIndeksNo = 1;
                }
            }
 
            printf ("Semestr: ");
            scanf ("%d", &(kadra[i].semestr));
            i++;
        }
        else if (symbol == 'b')
        {
            // List all students
            for (x=0; x<i; x++ )
            {
                printf ("First name: %s\nLast name: %s\nIndeks no: %s\nSemester: %d\n\n" , kadra[x].imie, kadra[x].nazwisko, kadra[x].nr_indeksa, kadra[x].semestr);
            }
        }
        else if (symbol == 'c')
        {
            // List all students for a selected semester
            int semestr_;
            printf ("\nType semester: \n\n");
            scanf ("%d", &semestr_);
 
            for (x=0; x<i; x++){
                if(semestr_ == kadra[x].semestr){
                    printf ("First name: %s\nLast name: %s\nIndeks no: %s\nSemester: %d\n\n" , kadra[x].imie, kadra[x].nazwisko, kadra[x].nr_indeksa, kadra[x].semestr);
                }
            }
        }
        else if (symbol == 'd')
        {
            // Search student on last name
            char studentNazwisko;
 
            printf ("\nType the last name of the student: ");
            //scanf ("%s", &studentNazwisko);
            scanf ("%s",(&studentNazwisko));
 
            printf ("\nSearch results for '");
            printf (&studentNazwisko);
            printf ("':\n\n");
 
            for (x=0; x<i; x++){
                if (!strcmp(&studentNazwisko,kadra[x].nazwisko)){
                    printf ("First name: %s\nLast name: %s\nIndeks no: %s\nSemester: %d\n\n" , kadra[x].imie, kadra[x].nazwisko, kadra[x].nr_indeksa, kadra[x].semestr);
                }
            }
        }
        else if (symbol == 'e')
        {
            sortStudents = 1;
 
            for (x=0; x<i; x++){
                // If this function is more often used, then clear first the varible with putting their "-"
                // The character "#" will be used as delimiter between the name and the indeks-code, otherwise
                // there will be only a list of names, and not a connection with the rest of information.
                names[x] = "-";
                names[x] = kadra[x].nazwisko;
                names[x] = strcat(names[x], "#");
                names[x] = strcat(names[x], kadra[x].nr_indeksa);
            }
 
            // Sort all records in array on last name
            while (sortStudents)
            {
                sortStudents=0;
                for(x=0;x<i-1;x++)
                {
                    for(j=x+1;j<i;j++)
                    {
                        if(strcmp(names[x],names[j])>0)
                        {
                            pstr=names[x];
                            names[x]=names[j];
                            names[j]=pstr;
                            sortStudents=1;
                        }
                    }
                }
            }
        }
    }
    return 0;
}
что-то типа так....)))
0
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
13.02.2010, 13:10
опять та же волынка

C
1
scanf ("%s", & (kadra[i].imie));
i не инициализирована

C
1
for (x=0; x<i; x++){
здесь тоже

да, switch бы здесь больше прокатил

C
1
2
3
4
 
        int semestr_;
        printf ("\nType semester: \n\n");
        scanf ("%d", &semestr_);
автор по ходу не знает про локальные переменные блока

C
1
2
3
4
        char studentNazwisko;
        printf ("\nType the last name of the student: ");
        //scanf ("%s", &studentNazwisko);
        scanf ("%s",(&studentNazwisko));
в символ читает строку

сортировка правильно
0
 Аватар для Женя.
4 / 4 / 1
Регистрация: 10.02.2010
Сообщений: 38
13.02.2010, 23:40  [ТС]
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

хм.... но наконецто я дошла к правильному результату.!!!..
но эту прогу можна сделать немного проще
хотя и без цикла,но все компилирует =) и немного другая сортировка




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
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
typedef struct {
    char imie[100];
    char nazwisko [100];
    char nr_indeksa[100];
    int semestr;
} STUDENT ;
 
int compare(const void *a, const void *b)
{
    int n = strcmp((*(STUDENT*)a).nazwisko, (*(STUDENT*)b).nazwisko);
    if(n==0)
          return strcmp((*(STUDENT*)a).imie, (*(STUDENT*)b).imie);
    else return n;
}
 
int main ()
{
    char symbol;
   // char c;
    STUDENT kadra[100];
    int i,x, checkIndeksNo = 0;
   // char *pstr;
   // int sortStudents=1;
   // char *names[100];
 
    printf ("Press ENTER to start!");
    symbol = 0;
    i = 0;
    while (symbol != 'q' )
 
    {
        printf ("Co chesz robic");
        printf("\na = dodaj studenta");
        printf("\nb = pokaz wszystkich studentow");
        printf("\nc = wypisanie wszystkich studentow z danego semestru");
        printf("\nd = Szukanie studenta na nazwisko");
        printf("\ne = wypisywanie wszystkich studentow z danego semestru w kolejnosci alfabetyczn");
        printf("\nq = koniec\n");
        scanf ("%c", &symbol);
        getchar();
        if (symbol == 'a')
        {
            // Сбросить индекс проверить
            checkIndeksNo = 0;
            // додать студента
            printf ("Imie: ");
            scanf ("%s", & (kadra[i].imie));
            printf ("Nazwisko: ");
            scanf ("%s",&(kadra[i].nazwisko));
            printf ("indeks: ");
            scanf ("%s",&(kadra[i].nr_indeksa));
 
            while (checkIndeksNo!=1){
                // Это в то время как () не остановится перед тем как пользователь входит уникальный индекс
 
                for (x=0; x<i; x++){
                    // Проверьте, если индекс  уже существует в массиве
                    if (!strcmp(kadra[i].nr_indeksa,kadra[x].nr_indeksa)){
                        if (x != i){
                            // Последний ввод будет всегда возвращаться, правда, такая проверка только записи из прошлого
                            checkIndeksNo = 2;
 
                            printf ("\nError: indeks jest zajety '");
                            printf (kadra[x].imie);
                            printf (" ");
                            printf (kadra[x].nazwisko);
                            printf ("'.podaj nowy indeks\n");
                        }
                    }
                }
 
                if (checkIndeksNo == 2){
                    // Индекс уже существует в массиве, пользователю необходимо заполнить вновь числа
                    printf ("indeks: ");
                    scanf ("%s",&(kadra[i].nr_indeksa));
                    // Сброс чека (в то время как цикл будет запустить снова)
                    checkIndeksNo = 0;
                }
                else {
                    // Все нормально, за исключением индекса , и переходите к следующему вопросу (в то время как цикл будет завершен)
                    checkIndeksNo = 1;
                }
            }
 
            printf ("Semestr: ");
            scanf ("%d", &(kadra[i].semestr));
            getchar();
            i++;
        }
        else if (symbol == 'b')
        {
            // листа всіх студентів
            for (x=0; x<i; x++ )
            {
                printf ("imie: %s\nNazwisko: %s\nIndeks : %s\nSemestr: %d\n\n" , kadra[x].imie, kadra[x].nazwisko, kadra[x].nr_indeksa, kadra[x].semestr);
            }
 
        }
        else if (symbol == 'c')
        {
            // листа всіх студентів за вибраним семестром
            int semestr_;
            printf ("\nsemestr: \n\n");
            scanf ("%d", &semestr_);
            getchar();
            for (x=0; x<i; x++){
                if(semestr_ == kadra[x].semestr){
                    printf ("Imie: %s\nNazwisko: %s\nIndeks: %s\nSemestr: %d\n\n" , kadra[x].imie, kadra[x].nazwisko, kadra[x].nr_indeksa, kadra[x].semestr);
                }
            }
        }
        else if (symbol == 'd')
        {
            // пошук за введеним прізвищем
            char studentNazwisko[100];
 
            printf ("\nWpisz nazwisko studenta: ");
            scanf ("%s",(&studentNazwisko));
            getchar();
            printf ("\nWyniki wyszukiwania dla '");
            printf ("%s", studentNazwisko);
            printf ("':\n\n");
 
            for (x=0; x<i; x++){
                if (strstr(kadra[x].nazwisko, &studentNazwisko)!=NULL){
                    printf ("Imie: %s\nNazwisko: %s\nIndeks: %s\nSemestr: %d\n\n" , kadra[x].imie, kadra[x].nazwisko, kadra[x].nr_indeksa, kadra[x].semestr);
                }
            }
        }
        else if (symbol == 'e')
        {
            qsort(kadra, i, sizeof(STUDENT), compare);
            printf("Posortowane!\n");
        }
    }
    return 0;
}
СПАСИБО БОЛЬШОЕ ЧТО ПОМОГЛИ МНЕ ПРИДТИ К ЭТОМУ РЕЗУЛЬТАТУ !
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.02.2010, 23:40
Помогаю со студенческими работами здесь

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

Ошибка при выводе сведений о студентах
Народ помогите найти ошибку. Не могу найти. #include&lt;stdio.h&gt; void main() {char fio; char nomsh; char klass; char srball; ...

Автоматизированная система учета сведений о студентах в общежитии
Привет:)Помогите написать программу на С++ Создать Субд позволяющую вести учет сведений о студентах в общежитии.Должна храниться...

Загрузка сведений о выбранных в ListBox студентах из файла в Memo
Задача такова: По нажатию кнопки «Сведения» данные о выбранных в правом ListBox студентах отображаются в поле Memo. Данные о студентах...

Дан файл, содержащий набор сведений о студентах группы. Выполнить перевод студентов на следующий курс
Ребят помогите решить задачу ,а то я совсем не шарю =( Дан файл, содержащий набор сведений о студентах группы. Не используя нового файла,...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru