Премини към съдържанието
valio957

Помощ за поправяне на грешка в код за курсова работа

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


Съставете програма с функции за:
а) Въвеждане от клавиатура във файл (чрез допълване) данните за N (до 30) студента: име, факултетен номер, специалност (Е или АИУТ), група, среден успех от семестъра (с проверки за коректност по: специалност - Е или АИУТ, група - 1 до 4, среден успех). Извеждане текущото съдържание на масива ( файла ) на екрана.
б) Извеждане на данни за студент по въведени от клавиатурата факултетен номер, специалност и група или съобщение, че няма данни за студента ( със запитване за нова справка).
в) Извеждане данните за студентите с отличен среден успех (над 5,50) за всяка от групите или съобщение: " Няма данни за студенти от групата" или " Няма отличници в групата".
Главна функция маин() - с меню за избор на функции и проверка за състоянието на данните.

 

Имам проблем с кода. След като написах функцията " void ocenki() " ми излизат следните проблеми 
 

1>d:\c++\obichamc\obichamc\obichamc.cpp(127): error C2446: '==' : no conversion from 'int' to 'char *'
1>          Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style cast
1>d:\c++\obichamc\obichamc\obichamc.cpp(127): error C2040: '==' : 'char [10]' differs in levels of indirection from 'int'
1>d:\c++\obichamc\obichamc\obichamc.cpp(130): error C2446: '>=' : no conversion from 'double' to 'char *'
1>d:\c++\obichamc\obichamc\obichamc.cpp(130): error C2440: '>=' : cannot convert from 'double' to 'char [10]'
 
 
Ето го и кода: 
 
 
#include <iostream>
#include <string>
#include <cstdlib>
#include <string>
#include <iomanip>
using namespace std;
int top=0,i;
struct school
{
char ime[30];
char specialnost[10];
char grupa[10];
char fnomer[10];
char uspeh[10];
} studenti[1000]={0};
 
void save () //за запаметяване на данните
 int err = 0;
      FILE * out;
      err=fopen_s(&out, "danni.txt","ba+");
      fwrite(&top,sizeof(top),1,out);
      fwrite(studenti,sizeof(studenti),1,out);
      fclose(out);
}
void load () //въвежда и записва данните в текстов файл в директорията на cpp файла
{
      FILE * in;
      if(fopen_s(&in, "danni.txt", "rb"))
      {
       cout<<"File not found"<<endl;
       return;
       }
       if((fread(&top,sizeof(top),1,in))!=1)
       {
       cout<<"Error reading from file"<<endl;
         return;
       }
         if((fread(studenti,sizeof(studenti),1,in))!=1)
         {
         cout<<"Error reading from file"<<endl;
         return;
         }
       fclose(in);
}
void input() //въвеждане на данните
if(top<30)
system("cls"); 
getchar(); 
cout<<"Vyvedete danni (za krai natisnete * ):"<<endl; //за въвеждане на данните
for(i=top;;top++,i++) //обхожда и запаметява данните 
{
   if(top<30)break;
cout<<endl; 
   cout<<"Ime (ne poveche ot 19 simvola): "; 
   gets_s(studenti.ime); 
   if(studenti.ime[0]=='*') break; //да се въведе * за да се върнем ж главното меню
   cout<<endl; 
   cout<<"Specialnost (ne poveche ot 6 simvola): "; 
   gets_s(studenti.specialnost); 
   cout<<endl; 
   cout<<"Grupa: (ne poveche ot 2 simvola): "; 
   gets_s(studenti.grupa); 
   cout<<endl; 
   cout<<"Fnomer (ne poveche ot 10 simvola): " ; 
   gets_s(studenti.fnomer); 
   cout<<endl; 
   cout<<"Uspeh (ne poveche ot 5 simvola): "; 
   gets_s(studenti.uspeh);
   cout<<endl;
   //чрез cout извежда какво трябва да пишем и посочва адреса за запаметяване
    }save(); //запаметява въведените данни
    } 
 
void uchashti() //справка номер 1
{  
system("cls"); 
     string s; //декларираме string
     int r=0; //декларираме променлива
     cout<<"vyvedete fakulteten nomer!"<<endl; //за въвеждане на рег. номер
    cin>>s; //въвеждаме ф. номер от клавиатурата
    for(i=0;i<top;i++) //обхожда записаните данни
    {
    if(s==studenti.fnomer ) //проверява дали въведеният ни string S е равен на някои рег. номер от данните
    {
  cout<<"Studentite s takuv fakulteten nomer sa:"<<endl; 
  cout<<"Ime:"<<studenti.ime<<setw(19-strlen(studenti.ime))<<"  specialnost:"<<studenti.specialnost<<setw(18-strlen(studenti.specialnost))<<endl;  
    //извежда данните за име и адрес по дадения рег. номер
    r=1; //параметъра приема стойност 1 за наличност на такъв резултат
    }}
    if(r==0)cout<<"Nqma studenti s takuv fakulteten nomer!"<<endl; //при липса на такъв номер параметъра е равен на 0
    system ("pause");
     return;                  
void broi()   //справка номер 2
{  
     system("cls");  
     string p; //dдекларираме string p
     int br=0,s=0; //декларираме 2 променливи с начало 0
    cout<<"Vyvedete dadenata specialnost!"<<endl;
    cin>>p; //избираме от клавиатурата марката
  for(i=0;i<top;i++) //обхожда запазените данни
    {
    if(p==studenti.specialnost) //проверява кога string p e ражен на въведените данни
    br++; //ако if-a е изпълнен броят се увеличава
    s++; //параметъра показва наличност на такива данни
     
        }
if(s==0)cout<<"Nqma takiva studenti!"<<endl; //показва че няма подобни данни запаметени
 else  cout<<"Broqt na studentite v takava specialnost sa:"<<br<<endl;    //извежда броят марки   
  system ("pause"); 
    return;  
 
void ocenki()
{
int group = -1;
bool grupaFound = false;
bool studentiFound = false;
 
cout << "Grupa: ";
cin >> group;
 
for(int n = 0; n < top; n++)
{
        if(studenti[n].grupa==group)
        {
                grupaFound = true;
                if(studenti[n].uspeh>=5.50)
                {
                        cout << studenti[n].ime << endl;
                }
        }
}
 
if(!grupaFound)
{
        cout << "No students found for group: " << group << endl;
}
else if(!studentiFound)
{
        cout << "No students with GPA >= 5.50" << endl;
}
}
 
void view() //всички данни
 { 
  system("cls"); 
   cout<<endl<<endl<<endl;
                            for(i=0;i<80;i++) cout<<"="; 
    cout<<"|\t\t\t\t\t\t\t\t\t       |"; 
    cout<<"|                                   VIEW                                       |"; 
    cout<<"|\t\t\t\t\t\t\t\t\t       |"; 
                             for(i=0;i<30;i++) cout<<"="; 
                             for(i=0;i<30;i++) cout<<"_"; 
 
 
    cout<<"|№|ime               "<<"|specialnost            "<<"|grupa     "<<"|fnomer   "<<"|uspeh   "<<"|"; 
    //главната част
    for(i=0;i<30;i++) cout<<"-"; 
    //в горните редове е изведен целият списък като таблица
  for(i=0;i<top;i++) //обхожда данните
  {
  cout<<"|"<<i+1<<"|" <<studenti.ime<<setw(19-strlen(studenti.ime))<<"|"<<studenti.specialnost<<setw(18-strlen(studenti.specialnost))<<"|";
  cout<<studenti.fnomer<<setw(11-strlen(studenti.fnomer))<<"|"<<studenti.uspeh<<setw(9-strlen(studenti.uspeh))<<"|";
  // извежда номера и данните от въведените в imput-a
  }
  system("pause");
   return; 
 } 
 
char consult() //справките
    char ch='3'; //декларираме за ch 3 избора
    system("cls"); 
    cout<<endl<<endl<<endl; 
     cout<<"        |---------------------CONSULT MENU--------------------------|\n";  
     cout<<"        |                                                           |\n";
     cout<<"        |       1.studenti i danni.                                 |\n";
     cout<<"        |       2.izvejdane na studenti i ocenki.                   |\n";
     cout<<"        |       3.danni sus studenti                                |\n";
     cout<<"        |         za uspeh.                                         |\n";
     cout<<"        |-----------------------------------------------------------|\n"; 
     //изкарвам таблицата с опциите за справки
     cout<<"                             choose<1-2-3>"<<endl<<endl;                  
     //задава се избор от 1-2-3  
  cout<<"Za da se vyrnete v glavnoto menu natisnete proizvolen buton"<<endl;
    cin>>ch; //въвеждаме избора си от клавиатурата
   if(ch=='1') uchashti(); //ако е въведено 1 извежда справката със собствениците
   if(ch=='2') broi(); //ако е въведено 2 извежда справката с броя
   
    return ch; } 
 
char menu () //главното меню
 
           char ch;
           system("cls");
           cout<<endl<<endl<<endl;
 
            for(i=1;i<=2;i++)cout<<endl<<"\n\n\t";
            for(i=1;i<67;i++) cout<<"=";
            cout<<endl;
            cout<<endl<<"\tII\t\t\t\t MENU    \t\t\tII\n\n\t";
            for(i=1;i<67;i++) cout<<"=";
            cout<<endl;
            cout<<endl<<"\tII\t  1) Vyvedi\t\t\t\t\t\tII\n";
            cout<<endl<<"\tII\t  2) Spravki\t\t\t\t\t\tII\n";
            cout<<endl<<"\tII\t  3) Izhod\t\t\t\t\t\tII\n";
            cout<<endl<<"\t";
      for(i=1;i<67;i++) cout<<"=";
      cout<<"                        Enter your choice(1-3):";  
      //с горните редове се оформя главното мену и опциите за избор
      cout<<endl<<endl<<endl;
           cin>>ch; //въвеждаме данните си
           if(ch=='1') input(); //при опция  1 извежда функцията за въвеждане на данните
           else if(ch=='2') consult(); //при опция 2 извежда функцията със справките
           else if(ch=='3') return ch; //извежда края на програмата
          
}
void end() //визитка
{
     { 
           int i; 
           system("cls"); 
           cout<<endl<<endl<<endl;
           
           for(i=1;i<67;i++) cout<<"=";
           cout<<endl;
           cout<<"II\t\t\t\t\t\t\t\tII"<<endl;
           cout<<"II\t\t\t   KURSOVA RABOTA\t\t\tII"<<endl;
           cout<<"II\t\t\t\t\t\t\t\tII";
           cout<<endl;
           for(i=1;i<67;i++) cout<<"=";
           cout<<endl;
           cout<<"II\t\t\t\t\t\t\t\tII"<<endl;
           cout<<"II\t\t\t\t N A\t\t\t\tII"<<endl; 
           cout<<"II\t\t\tVALENTIN GEORGIEV GEORGIEV\t\t\tII"<<endl;
           cout<<"II\t\t    Student v TY,KST,I-kurs 61460182   \t\tII"<<endl;
           cout<<"II\t\t\t\t\t\t\t\tII"<<endl;
           cout<<"II\t\t\t\t\t\t\t\tII"<<endl;
           for(i=1;i<67;i++) cout<<"=";
           cout<<endl<<endl<<endl;
           system ("pause");
           return;
    } 
    //цялата функция end служи като визитка
}
int main() //за главното меню
{
 
          load();
          char ch;
          ch=menu();
 while(ch!='3')
          end();
          return 0;
}
 

 

Сподели този отговор


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

Защо grupa и ocenka са от тип char? Щом групата трябва да е число от 1 до 4, по-добре ще бъде да я представиш като integer, а за оценката float или double.

 

Менюто си го омазал здраво или просто не си го довършил, не знам кое от двете.

Сподели този отговор


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

Предполагам за да може да се пишат оценки като 2+ :)

Редактирано от ined (преглед на промените)

Сподели този отговор


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

Защо grupa и ocenka са от тип char? Щом групата трябва да е число от 1 до 4, по-добре ще бъде да я представиш като integer, а за оценката float или double.

 

Менюто си го омазал здраво или просто не си го довършил, не знам кое от двете.

не съм завършил менюто защото днес добавих последната функция ... искам да оправя грешките и после ще оправя и менюто

Сподели този отговор


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

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


Сподели този отговор


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

Регистрирайте се или влезете в профила си за да коментирате

Трябва да имате регистрация за да може да коментирате това

Регистрирайте се

Създайте нова регистрация в нашия форум. Лесно е!

Нова регистрация

Вход

Имате регистрация? Влезте от тук.

Вход

×

Информация

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