Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2013, 11:16   #1
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Сообщений: 117
Восклицание Средний бал по 4 предметам

Всем привет. Помогите пожалуйста найти средний бал по предметам и если средний бал больше 7 то сохранить в файл, а то чета я вообще не могу.

Вот код проги:

Код:
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <fstream.h>

 
FILE *fl;
 
typedef struct
{
    char fio[30];
    unsigned char matem;
    unsigned char oaip;
    unsigned char english;
}TStudent;
 
TStudent stud[30]; //массив структур
char name[20];//имя файла
int nst=0;//число введенных структур
 
int menu();    //меню
void spisok(); //Ввести список
void resc();   //Вывести результат на экран
void resf();   //Сохранить результат в файл



int main()
{
	while (true)
	{
		switch (menu())
		{
			
			case 1: spisok(); break; //Ввести список
            case 2: resc(); break; //Вывести результат на экран
			case 3: resf(); break; //Сохранить результат в файл

			case 4: return 0;
			default: "Viberite pravilno!";
		}
		puts("pres any key to continue");
		getch();
		system("cls"); 
}
} 
 
 
int menu()//меню
{
	cout<<"viberite:"<<endl;
	cout<<"1.vvod studentov"<<endl;
	cout<<"2.vivesti rezultat na ekran"<<endl;
	cout<<"3.sohranit rezultat v file"<<endl;
	cout<<"4.Exit"<<endl;
	int i;
	cin>>i;
	return i;
}





void resc()//вывести результат на экран
{
    char fio[30];
    unsigned char matem;
    unsigned char oaip;
    unsigned char english;
 
    ifstream fin("ofile.txt", ios::in);
    
    fin.getline(fio, 30);
    fin >> matem >> oaip >> english;
    fin.ignore(2);
 
    while(!fin.eof()){
 
        cout << fio << '\n' << matem << '\n' << oaip << '\n' << english << "\n\n";
 
        fin.getline(fio, 30);
        fin >> matem >> oaip >> english;
        fin.ignore(2);
    }
 
    fin.close();
    system("pause");
}



void spisok () //ввести список
{
 
    cout<<"vvedite chislo studentov"<<endl;
    cin>>nst;
 
    for (int i=0;i<nst;i++)
    {
        cout<<"vvedite imya: ";
        cin>>stud[i].fio;
        cout<<"vvedite ocenki po matem.: ";
        cin>>stud[i].matem;
        cout<<"vvedite ocenku po oaip: ";
        cin>>stud[i].oaip;
            cout<<"vvedite ocenku po english: ";
        cin>>stud[i].english;

	}

}

void resf()////сохранение в файл
{
    ofstream fout("ofile.txt", ios::app);
    for (int i=0;i<2;i++)
    {
        fout << stud[i].fio << endl << stud[i].english << endl
                << stud[i].matem << endl << stud[i].oaip << endl << endl;
    }
}
shilovec5377 вне форума Ответить с цитированием
Старый 16.05.2013, 10:40   #2
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Сообщений: 117
По умолчанию

Вот мой код, все вроде правильно, пробегаюсь по файлу и если средний бал >6 то вывести этого человека, но что-то его не выводит.
Подскажите пж в чем проблемка.

Код:
void resc() //Вывод на экран
{
    char fio[30];
    int matem;
    int oaip;
    int english;
   double srb;
 

    ifstream fin("ofile.txt", ios::in);
    
    fin.getline(fio, 30);
    fin >> matem >> oaip >> english>>srb;
    fin.ignore(1);
 
   //while(!fin.eof())

    
    

 for (int i=0;i<nst;i++)
 {
     if(stud[i].srb > '6')


    
         cout << fio << '\n' << matem << '\n' << oaip << '\n' << english << '\n'<< srb <<  "\n\n"; 
 
        fin.getline(fio, 30);
        fin >> matem >> oaip >> english>>srb;
        fin.ignore(1);
 
 
    fin.close();
    system("pause");
}}
shilovec5377 вне форума Ответить с цитированием
Старый 20.05.2013, 10:56   #3
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Сообщений: 117
По умолчанию

пробую писать
Код:
if(srb > '6')
всеравно не хочет, подскажите пж в чем проблема.
shilovec5377 вне форума Ответить с цитированием
Старый 20.05.2013, 13:26   #4
shilovec5377
Форумчанин
 
Аватар для shilovec5377
 
Регистрация: 29.06.2011
Сообщений: 117
По умолчанию

пробую так:
Код:
void resc() //na ekran
{
    char fio[30];
    double matem;
    double oaip;
    double english;
    double srb;
 
 
    ifstream fin("ofile.txt", ios::in);
    
    fin.getline(fio, 30);
    fin >> matem >> oaip >> english>>srb;
    fin.ignore(1);
 
   //while(!fin.eof())
 
    
        
 
 for (int i=0;i<nst;i++)
 {
     if(srb >= 6.0)
 
 
     
         cout << fio << '\n' << matem << '\n' << oaip << '\n' << english << '\n'<< srb <<  "\n\n"; 
 
 
        fin.getline(fio, 30);
        fin >> matem >> oaip >> english>>srb;
        fin.ignore(1);
 
 
    fin.close();
    system("pause");
}}
но выводит только 1 человека и только 1 раз, при следующем запуске не выводит.
shilovec5377 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить средний бал учеников в классе, если известны оценки каждого ученика (Паскаль) Tolya92 Помощь студентам 1 14.12.2012 11:31
создать типизированный файл, в который записать Фамилию, имя, возраст, средний бал, телефон учащегося. Alerq Паскаль, Turbo Pascal, PascalABC.NET 4 22.02.2012 09:34
Вычислить средний бал учеников класса Aimet Паскаль, Turbo Pascal, PascalABC.NET 0 16.06.2011 20:56