Премини към съдържанието
  • Добре дошли!

    Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

    Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

     

Семестриална работа c++


Petko105

Препоръчан отговор

Здравейте,някой може ли да ми съдейства с тази задача, защото опитвам тук някви неща,ама все ми излизат някви грешки... 

Да се напише компютърна програма, реализираща информационна система, която поддържа специалности във факултет. Програмата съхранява и обработва данни за студентите в специалности (КСТ и СИТ, факултетен номер, група, име, година и месец на раждане, списък с дисциплини). Максималния брой студенти от двете специалности е 30. Всеки студент има 5 оценки по дисциплините (име, оценка) от 1-ви семестър. 

A. Меню за избор на функциите в програмата. 

B. Добавяне на студенти в специалност  a. Добавяне на един студент в специалността с оценки по 5 дисциплини от 1 семестър; b. Добавяне на списък от студенти. Въвежда се цяло число n и след него n на брой студенти с оценки по 5 дисциплини от 1 семестър.

C. Извеждане на всички студенти на екрана (8-9 седмица) a. Извеждане на студенти от дадена специалност b. Извеждане на студенти с оценка Отличен по БП

Линк към коментара
Сподели в други сайтове

преди 22 часа, Petko105 написа:

Здравейте,някой може ли да ми съдейства с тази задача, защото опитвам тук някви неща,ама все ми излизат някви грешки... 

Да се напише компютърна програма, реализираща информационна система, която поддържа специалности във факултет. Програмата съхранява и обработва данни за студентите в специалности (КСТ и СИТ, факултетен номер, група, име, година и месец на раждане, списък с дисциплини). Максималния брой студенти от двете специалности е 30. Всеки студент има 5 оценки по дисциплините (име, оценка) от 1-ви семестър. 

A. Меню за избор на функциите в програмата. 

B. Добавяне на студенти в специалност  a. Добавяне на един студент в специалността с оценки по 5 дисциплини от 1 семестър; b. Добавяне на списък от студенти. Въвежда се цяло число n и след него n на брой студенти с оценки по 5 дисциплини от 1 семестър.

C. Извеждане на всички студенти на екрана (8-9 седмица) a. Извеждане на студенти от дадена специалност b. Извеждане на студенти с оценка Отличен по БП

Това баз давам, че е за С++, иначе дай да видим какви грешки ти хвърля

Линк към коментара
Сподели в други сайтове

преди 22 часа, kyoshinn написа:

Това баз давам, че е за С++, иначе дай да видим какви грешки ти хвърля

#include <iostream>
#include <string> 
#include<cmath>
#include<fstream>
using namespace std;


struct Student
{
    char name[1];
    char mesec[12];
    char godina[12] ;
    char facultnomer[10];
    char grupa[5] ;
};

const int maxStudenti = 30;
const int specialnosti = 2;

const int MAX_MENU_ITEM = 4;    
const int MAX_SUB_MENU_1_ITEM = 3;

 

void inputOneStudentData(); 
void inputManyStudentData(); 
void calcStipendiya(); 
void reportStutenstByMinUspeh(); 

 

int subМenu1() 

int choise = 0; 
cout << "*** Menu ***" << endl; 
cout << "1.1. Vavedete danni za edin student" << endl; 
cout << "1.2. Vavedete danni za niakolko studenta" << endl; 
cout << "1.3. Izhod" << endl; 

// валидиране на избора от менюто 

do 

cout << "Izberete opcia: "; 
cin >> choise; 
}while(choise < 1 || choise > MAX_SUB_MENU_1_ITEM); 
return choise; 

 

int menu() 

int choise = 0; 
cout << "*** MENU ***" << endl; 
cout << "1. Vavedete danni za student" << endl; 
cout << "2. Izchislete stipendiata na student" << endl; 
cout << "3. Spravki" << endl; 
cout << "4. Izhod" << endl; 

do 

cout << "Izberete opcia: "; 
cin >> choise; 
}while(choise < 1 || choise > MAX_MENU_ITEM); 
return choise; 

int main() 

int menuItem = 0; 
int subMenuItem = 0; 
do 

menuItem = menu(); 
system("CLS"); 

switch(menuItem) 

case 1:  
do 

subMenuItem = subМenu1(); 

system("CLS"); 

switch(subMenuItem) 

case 1: inputOneStudentData(); break; 

case 2: inputManyStudentData(); break; 

default: cout << "Vrashtane v glavnoto menu" << endl; 

system("CLS"); 

 

}while(subMenuItem < MAX_SUB_MENU_1_ITEM); 

 

system("CLS"); 

break; 

 

case 2: calcStipendiya(); break; 

 

case 3:  reportStutenstByMinUspeh();  break; 

 

case 4:  break; 

default: cout << "Kraj na programata" << endl; break; 

 

system("CLS"); 

}while(menuItem < MAX_MENU_ITEM); 
system("PAUSE"); 
return 0; 

void inputOneStudentData() 


cout<<endl<<"Funkciata ne e razrabotena 1"<<endl; 
system("PAUSE"); 

void inputManyStudentData() 


cout<<endl<<"Funkciata ne e razrabotena 2"<<endl; 
system("PAUSE"); 

void calcStipendiya() 

cout<<endl<<"Funkciata ne e razrabotena 3"<<endl; 
system("PAUSE"); 

 void reportStutenstByMinUspeh() 

cout<<endl<<"Funkciata ne e razrabotena 4"<<endl; 
system("PAUSE"); 
}

 

 

 

 

преди 22 часа, kyoshinn написа:

Това баз давам, че е за С++, иначе дай да видим какви грешки ти хвърля

като цяло мисля да я правя по този принцип, ама работата с масиви ме затруднява и не знам как да я довърша и затова съм написал, че не са разработени .. 

Линк към коментара
Сподели в други сайтове

на 6.01.2022 г. в 13:27, Petko105 написа:

#include <iostream>
#include <string> 
#include<cmath>
#include<fstream>
using namespace std;


struct Student
{
    char name[1];
    char mesec[12];
    char godina[12] ;
    char facultnomer[10];
    char grupa[5] ;
};

const int maxStudenti = 30;
const int specialnosti = 2;

const int MAX_MENU_ITEM = 4;    
const int MAX_SUB_MENU_1_ITEM = 3;

 

void inputOneStudentData(); 
void inputManyStudentData(); 
void calcStipendiya(); 
void reportStutenstByMinUspeh(); 

 

int subМenu1() 

int choise = 0; 
cout << "*** Menu ***" << endl; 
cout << "1.1. Vavedete danni za edin student" << endl; 
cout << "1.2. Vavedete danni za niakolko studenta" << endl; 
cout << "1.3. Izhod" << endl; 

// валидиране на избора от менюто 

do 

cout << "Izberete opcia: "; 
cin >> choise; 
}while(choise < 1 || choise > MAX_SUB_MENU_1_ITEM); 
return choise; 

 

int menu() 

int choise = 0; 
cout << "*** MENU ***" << endl; 
cout << "1. Vavedete danni za student" << endl; 
cout << "2. Izchislete stipendiata na student" << endl; 
cout << "3. Spravki" << endl; 
cout << "4. Izhod" << endl; 

do 

cout << "Izberete opcia: "; 
cin >> choise; 
}while(choise < 1 || choise > MAX_MENU_ITEM); 
return choise; 

int main() 

int menuItem = 0; 
int subMenuItem = 0; 
do 

menuItem = menu(); 
system("CLS"); 

switch(menuItem) 

case 1:  
do 

subMenuItem = subМenu1(); 

system("CLS"); 

switch(subMenuItem) 

case 1: inputOneStudentData(); break; 

case 2: inputManyStudentData(); break; 

default: cout << "Vrashtane v glavnoto menu" << endl; 

system("CLS"); 

 

}while(subMenuItem < MAX_SUB_MENU_1_ITEM); 

 

system("CLS"); 

break; 

 

case 2: calcStipendiya(); break; 

 

case 3:  reportStutenstByMinUspeh();  break; 

 

case 4:  break; 

default: cout << "Kraj na programata" << endl; break; 

 

system("CLS"); 

}while(menuItem < MAX_MENU_ITEM); 
system("PAUSE"); 
return 0; 

void inputOneStudentData() 


cout<<endl<<"Funkciata ne e razrabotena 1"<<endl; 
system("PAUSE"); 

void inputManyStudentData() 


cout<<endl<<"Funkciata ne e razrabotena 2"<<endl; 
system("PAUSE"); 

void calcStipendiya() 

cout<<endl<<"Funkciata ne e razrabotena 3"<<endl; 
system("PAUSE"); 

 void reportStutenstByMinUspeh() 

cout<<endl<<"Funkciata ne e razrabotena 4"<<endl; 
system("PAUSE"); 
}

 

 

 

 

като цяло мисля да я правя по този принцип, ама работата с масиви ме затруднява и не знам как да я довърша и затова съм написал, че не са разработени .. 

Значи за обработката към всяка функция трябва да подадеш масива като аргумент. Например в първата функция void inputOneStudentData(масива от студенти) и вътре във функцията работиш с този масив. Аз лично бих използвал листове вместо масиви, за да мога по-лесно да добавям дата. Но основното ти е това, във всяка функция подаваш масива, който искаш да правиш реално нещо с него.

П.П. Погледнах, че трябва и да допълниш, че реално подаваш масива/листа като референция, а не като стойност, тоест трябва да ти стане нещо подобно:

void InputOneStudentData(list<Student>  &(ето тази гадория показва, че се подава по референция) students, ) {

      Student currentStudent = new Student(...); - тук понеже ти трябват и данните, с които трябва да направиш студента, който да се добави, то ще трябва и тези данни да ги подадеш отвън.

}

на 6.01.2022 г. в 13:27, Petko105 написа:

#include <iostream>
#include <string> 
#include<cmath>
#include<fstream>
using namespace std;


struct Student
{
    char name[1];
    char mesec[12];
    char godina[12] ;
    char facultnomer[10];
    char grupa[5] ;
};

const int maxStudenti = 30;
const int specialnosti = 2;

const int MAX_MENU_ITEM = 4;    
const int MAX_SUB_MENU_1_ITEM = 3;

 

void inputOneStudentData(); 
void inputManyStudentData(); 
void calcStipendiya(); 
void reportStutenstByMinUspeh(); 

 

int subМenu1() 

int choise = 0; 
cout << "*** Menu ***" << endl; 
cout << "1.1. Vavedete danni za edin student" << endl; 
cout << "1.2. Vavedete danni za niakolko studenta" << endl; 
cout << "1.3. Izhod" << endl; 

// валидиране на избора от менюто 

do 

cout << "Izberete opcia: "; 
cin >> choise; 
}while(choise < 1 || choise > MAX_SUB_MENU_1_ITEM); 
return choise; 

 

int menu() 

int choise = 0; 
cout << "*** MENU ***" << endl; 
cout << "1. Vavedete danni za student" << endl; 
cout << "2. Izchislete stipendiata na student" << endl; 
cout << "3. Spravki" << endl; 
cout << "4. Izhod" << endl; 

do 

cout << "Izberete opcia: "; 
cin >> choise; 
}while(choise < 1 || choise > MAX_MENU_ITEM); 
return choise; 

int main() 

int menuItem = 0; 
int subMenuItem = 0; 
do 

menuItem = menu(); 
system("CLS"); 

switch(menuItem) 

case 1:  
do 

subMenuItem = subМenu1(); 

system("CLS"); 

switch(subMenuItem) 

case 1: inputOneStudentData(); break; 

case 2: inputManyStudentData(); break; 

default: cout << "Vrashtane v glavnoto menu" << endl; 

system("CLS"); 

 

}while(subMenuItem < MAX_SUB_MENU_1_ITEM); 

 

system("CLS"); 

break; 

 

case 2: calcStipendiya(); break; 

 

case 3:  reportStutenstByMinUspeh();  break; 

 

case 4:  break; 

default: cout << "Kraj na programata" << endl; break; 

 

system("CLS"); 

}while(menuItem < MAX_MENU_ITEM); 
system("PAUSE"); 
return 0; 

void inputOneStudentData() 


cout<<endl<<"Funkciata ne e razrabotena 1"<<endl; 
system("PAUSE"); 

void inputManyStudentData() 


cout<<endl<<"Funkciata ne e razrabotena 2"<<endl; 
system("PAUSE"); 

void calcStipendiya() 

cout<<endl<<"Funkciata ne e razrabotena 3"<<endl; 
system("PAUSE"); 

 void reportStutenstByMinUspeh() 

cout<<endl<<"Funkciata ne e razrabotena 4"<<endl; 
system("PAUSE"); 
}

 

 

 

 

като цяло мисля да я правя по този принцип, ама работата с масиви ме затруднява и не знам как да я довърша и затова съм написал, че не са разработени .. 

Значи за обработката към всяка функция трябва да подадеш масива като аргумент. Например в първата функция void inputOneStudentData(масива от студенти) и вътре във функцията работиш с този масив. Аз лично бих използвал листове вместо масиви, за да мога по-лесно да добавям дата. Но основното ти е това, във всяка функция подаваш масива, който искаш да правиш реално нещо с него.

П.П. Погледнах, че трябва и да допълниш, че реално подаваш масива/листа като референция, а не като стойност, тоест трябва да ти стане нещо подобно:

void InputOneStudentData(list<Student>  &(ето тази гадория показва, че се подава по референция) students, string studentData) {

      Student currentStudent = new Student(...); - тук понеже ти трябват и данните, с които трябва да направиш студента, който да се добави, то ще трябва и тези данни да ги подадеш отвън.

students.push_back(currentStudent);

}

Там където не променяш масива със студенти не трябва да го подаваш като референция (тоест може, но не е нужно)

Линк към коментара
Сподели в други сайтове

преди 1 час, kyo1 написа:

void InputOneStudentData(list<Student>  &(ето тази гадория показва, че се подава по референция) students, ) {

Някои наричат тая гадория pointer...

Линк към коментара
Сподели в други сайтове

преди 2 часа, piх3l написа:

Защото така искам. Проблем?

Ами след като ме и цитираш, явно имаш нещо

Линк към коментара
Сподели в други сайтове

на 7.01.2022 г. в 16:20, kyo1 написа:

Значи за обработката към всяка функция трябва да подадеш масива като аргумент. Например в първата функция void inputOneStudentData(масива от студенти) и вътре във функцията работиш с този масив. Аз лично бих използвал листове вместо масиви, за да мога по-лесно да добавям дата. Но основното ти е това, във всяка функция подаваш масива, който искаш да правиш реално нещо с него.

П.П. Погледнах, че трябва и да допълниш, че реално подаваш масива/листа като референция, а не като стойност, тоест трябва да ти стане нещо подобно:

void InputOneStudentData(list<Student>  &(ето тази гадория показва, че се подава по референция) students, ) {

      Student currentStudent = new Student(...); - тук понеже ти трябват и данните, с които трябва да направиш студента, който да се добави, то ще трябва и тези данни да ги подадеш отвън.

}

Значи за обработката към всяка функция трябва да подадеш масива като аргумент. Например в първата функция void inputOneStudentData(масива от студенти) и вътре във функцията работиш с този масив. Аз лично бих използвал листове вместо масиви, за да мога по-лесно да добавям дата. Но основното ти е това, във всяка функция подаваш масива, който искаш да правиш реално нещо с него.

П.П. Погледнах, че трябва и да допълниш, че реално подаваш масива/листа като референция, а не като стойност, тоест трябва да ти стане нещо подобно:

void InputOneStudentData(list<Student>  &(ето тази гадория показва, че се подава по референция) students, string studentData) {

      Student currentStudent = new Student(...); - тук понеже ти трябват и данните, с които трябва да направиш студента, който да се добави, то ще трябва и тези данни да ги подадеш отвън.

students.push_back(currentStudent);

}

Там където не променяш масива със студенти не трябва да го подаваш като референция (тоест може, но не е нужно)

Като цяло схванах самата идея, но съжалявам,че не обърнах повече внимание на масивите, като беше време.. благодаря все пак 

Линк към коментара
Сподели в други сайтове

  • 11 месеца по-късно...

Добавете отговор

Можете да публикувате отговор сега и да се регистрирате по-късно. Ако имате регистрация, влезте в профила си за да публикувате от него.

Гост
Публикацията ви съдържа термини, които не допускаме! Моля, редактирайте съдържанието си и премахнете подчертаните думи по-долу. Ако замените букви от думата със звездички или друго, за да заобиколите това предупреждение, профилът ви ще бъде блокиран и наказан!
Напишете отговор в тази тема...

×   Вмъкнахте текст, който съдържа форматиране.   Премахни форматирането на текста

  Разрешени са само 75 емотикони.

×   Съдържанието от линка беше вградено автоматично.   Премахни съдържанието и покажи само линк

×   Съдържанието, което сте написали преди беше възстановено..   Изтрий всичко

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Добави ново...