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

Структура "Школьник" - C++

Восстановить пароль Регистрация
 
AngryGolod
1 / 1 / 1
Регистрация: 26.01.2014
Сообщений: 8
27.01.2014, 13:57     Структура "Школьник" #1
Здравствуйте, сегодня в 5 вечера будет перезачёт =) нужно принести контрольную описывающую программу, впрочем её пока что нет, как и программы, искал по форуму похожие, нашёл парочку, но там немного другие операторы используются, которые мы даже ещё не проходили.
Собственно описание задачи
Кликните здесь для просмотра всего текста
"Используя функции, решить указанную в варианте задачу. Значения для поиска, должны передаваться в функцию как параметры и должны быть заданы вводом с клавиатуры."
вариант 6.
Структура "Школьник":
- фамилия, имя, отчество;
- класс;
- номер телефона;
- оценки по предметам (математика, физика, русский язык, литература).
Вывести все элементы, у которых есть 2 хотя бы по одному предмету. Определить отличников по указанному предмету в каждом классе. Осуществить поиск школьника по указанной фамилии.

теперь перейдём к выполнению, сам с помощью лекций в тетрадке и интернета наклепал структуру в которую можно забить информацию, но не знаю что написать, что бы можно было осуществить поиск из этой структуры по каждому критерию, то есть исходя из задания, нужно дописать программку так, что бы после ввода информации о выбранном кол-ве школьниках, появлялась надпись "выберите действие:
A-найти всех у кого есть 2 по предмету;
B (и приписать сюда значение предмета например rus)- выдать всех школьников у кого есть 5 по данному предмету;
C (и приписать сюда фамилию школьника)- выдать всю информацию о школьниках у которых есть такая фамилия"
часть программы которую я смог реализовать и которая не работает с недопоиском по фамилии, брал из темы где нужно было сделать поиск по номеру телефона, решил для эксперемента искать не по фамилии, а по номеру, заработало, но после вывода найденной информации, программа почему-то сразу закрывается...
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
#include <iostream.h>
#include <string>
#include <windows.h>
using namespace std;
struct schoolboy
{char fam[30];
char name[30];
char name2[30];
short mat;
short phy;
short rus;
short lit;
long phone;
char group;
}st1,st2;
int main ()
{
    cout << "enter number of schoolboys: ";
    int rcount = 0;
    cin >> rcount;
    schoolboy st[10];
    schoolboy *strct = new schoolboy[rcount];
for (int i=0; i<rcount; i++)
{
    cout<<"firstname ";
    cin>>strct[i].name;
    cout<<"lastname ";
    cin>>strct[i].fam;
    cout<<"middlename ";
    cin>>strct[i].name2;
    cout<<"mat score ";
    cin>>strct[i].mat;
    cout<<"phy score ";
    cin>>strct[i].phy;
    cout<<"rus score ";
    cin>>strct[i].rus;
    cout<<"lit score ";
    cin>>strct[i].lit;
    cout<<"phone ";
    cin>>strct[i].phone;
    cout<<"class ";
    cin>>strct[i].group;
}
//ниже недопоиск, по идее по фамилиям, но у меня не получилось его запустить, так как он ругался на строчку 50, что то про то что не может сравнивать значения char и int, хотя я указывал char и char, я решил чисто из интереса попробовать поиск не по фамилиям, а по номеру телефона, заработало, но после вывода найденной информации сразу закрывается
cout << "enter fam for search: ";
    int phone=0;
    cin >> phone;
 
    int find = 0;
    for(char i=0; i<rcount; i++)
    {
        if(strct[i].phone == phone) 
        {
            cout<< strct[i].group << ' ' << cout << strct[i].fam << ' ' << strct[i].name << ' ' << strct[i].name2 << '.' << strct[i].mat << '.' << strct[i].phy << '.' << strct[i].rus  << '.' << strct[i].lit << endl;
            find = 1;
        }
    }
    if(!find) cout << "not found!" << endl;
    delete [] strct;
    return 0;
    
}
буду рад помощи более опытных людей разбирающихся в C++, а именно прошу, что бы дописали программу до финальной стадии, ну или на крайний случай подсказали как делать, а то уже через 2.5 часа в универ выходить, а я ещё даже титульный лист не начинал

Добавлено через 26 минут
немного покумекав смог таки завести поиск по фамилиям, опять же сразу после вывода информации окно закрывается...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cout << "enter fam for search: ";
    char fam1[30] ;
    cin >> fam1;
 
    int find = 0;
    for(int i=0; i<1; i++)
    {
        if(strct[i].fam == fam1) 
        {
            cout<< strct[i].group << ' ' << cout << strct[i].fam << ' ' << strct[i].name << ' ' << strct[i].name2 << '.' << strct[i].mat << '.' << strct[i].phy << '.' << strct[i].rus  << '.' << strct[i].lit << endl;
            find = 1;
        }
    }
    if(!find) cout << "not found!" << endl;
    delete [] strct;
    return 0;
    
}
Добавлено через 5 минут
поправка, удалось запустить программу, поиск даже при вводе фамилии пишет not found
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:11     Структура "Школьник" #2
C++
1
for(char i=0; i<rcount; i++)
а вот char там зачем?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
27.01.2014, 14:13     Структура "Школьник" #3
Цитата Сообщение от AngryGolod Посмотреть сообщение
if(strct[i].fam == fam1)
либо там в оригинале использовался std::string, либо ошибка.
Сравнение char* производится через функцию strcmp
AngryGolod
1 / 1 / 1
Регистрация: 26.01.2014
Сообщений: 8
27.01.2014, 14:16  [ТС]     Структура "Школьник" #4
Цитата Сообщение от lukalexrus Посмотреть сообщение
C++
1
for(char i=0; i<rcount; i++)
а вот char там зачем?
сейчас уже нету, ниже же прекрепил обновлённый поисковик по фамилиям, сейчас тоже опять переделал немного
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
cout << "enter fam for search: ";
    char fame[30] ;
    cin >> fame;
    int find = 0;
    for(int i=0; i<rcount; i++)
    {
    if(strct[i].fam == fame) 
        {
            cout<<"class" strct[i].group;
            cout<<"lastname" strct[i].fam; 
            cout<<"name" strct[i].name; 
            cout<<"middlename" strct[i].name2; 
            cout<<"mat score" strct[i].mat; 
            cout<<"phy score" strct[i].phy; 
            cout<<"rus score" strct[i].rus;  
            cout<<"lit score" strct[i].lit;
        
            find = 1;
        }
    }
    if(!find) cout << "not found!";    
}
да и волнует больше не поисковик по фамилиям, а остальная программа в целом
lukalexrus
7 / 6 / 1
Регистрация: 12.01.2014
Сообщений: 32
27.01.2014, 14:28     Структура "Школьник" #5
AngryGolod, а что с самой программой не так, вроде все работает(ну в структуру добавляется я имею ввиду), про сравнение char вам сказали что используется функция strcmp.
AngryGolod
1 / 1 / 1
Регистрация: 26.01.2014
Сообщений: 8
27.01.2014, 14:43  [ТС]     Структура "Школьник" #6
Цитата Сообщение от lukalexrus Посмотреть сообщение
AngryGolod, а что с самой программой не так, вроде все работает(ну в структуру добавляется я имею ввиду), про сравнение char вам сказали что используется функция strcmp.
ну я же писал что нужно после ввода данных о школьниках сделать разветвление
A-найти всех у кого есть 2 по предмету;
B (и приписать сюда значение предмета например rus)- выдать всех школьников у кого есть 5 по данному предмету;
C (и приписать сюда фамилию школьника)- выдать всю информацию о школьниках у которых есть такая
фамилия"
а у меня есть только поиск по фамилиям, всё время выдающий not found
Yandex
Объявления
27.01.2014, 14:43     Структура "Школьник"
Ответ Создать тему
Опции темы

Текущее время: 07:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru