Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите её починить...:-/ 
:(
    Опции темы
heeee1p
  Дата 10.12.2009, 01:11 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 8.12.2009

Репутация: нет
Всего: нет



Помогите запустить эту прогу... smile 
Код
 
#include <iostream>
#include <cstring>
#include <conio.h>

using namespace std;

const int STRLENGTH = 20;

struct Predmet {
    char NPred[21]; //Название предмета
    char Ocen[11]; //Оценка
};

struct Sesi9 {
    Predmet Pred[9]; //Список предметов
    int S; //Номер сессии
};

struct Student {
    char Fam[STRLENGTH + 1]; //Фамилия
    char Im9[STRLENGTH + 1]; //Имя
    char Ot4[STRLENGTH + 1]; //Отчество
    int GodRog; //Год рождения
    int DenRog; //День рождения
    int MesRog; //Месяц рождения
    int GodPos; //Год поступления
    Sesi9 Ses[12]; //Все сессии
    char NomZa4[STRLENGTH + 1];  //Номер зачетки
    int KolSes; //Количество сессий
    int KolPre; //Количество предметов
};

const char* g_filename = "111.txt";

//Ввод данных
void vvod();

//Вывод данных
void vuvod();

void poiskM();

void poiskZ();

void poiskF();

//Очистка экрана
inline void clrscr() {
 system("cls");
}

//Получаем число записей
int get_records_count() {
 FILE* fp = fopen(g_filename, "rb");

 if (fp == NULL) {
  cerr << "File ne naiden\n";
  return -1;
 }

 int records_count = 0;
    for (Student temp; {
        fread(&temp, sizeof(Student), 1, fp);
        if (feof(fp)) {
         break;
        }
        else {
         records_count++;
        }
    }
    fclose(fp);
 return records_count;
}

void show_record(const Student& R) {
 cout << "\n-----------------------------------------------------------------------\n";
    cout << R.Fam << "  ";
 cout << R.Im9 << "  ";
 cout << R.Ot4 << "  ";
 cout << R.GodRog << "  ";
 cout << R.DenRog << "  ";
 cout << R.MesRog << "  ";
 cout << R.GodPos << "  ";
 cout << R.NomZa4 << "  \n";
 for (int j = 0; j < R.KolSes; j++) {
  cout<<"___________________________"<<"\n";
  for (int i = 0; i < R.KolPre; i++) {
   if (R.Ses[j].Pred[i].Ocen[0] != '\0') {
    cout << R.Ses[j].S << "-a9 Sesi9 ";
    cout << R.Ses[j].Pred[i].NPred << "  ";
    cout << R.Ses[j].Pred[i].Ocen << "\n";
    cout << "===========================\n";
   }
  }
 }
}

int main() {
    for (;;) {
        clrscr();
        cout << "1 - Vvod\n\n";
        cout << "2 - Vuvod\n\n";
        cout << "3 - Poisk\n\n";
        cout << "4 - Vuxod\n\n";
        int tp;
        cin >> tp;
        switch (tp)
        {
        case 1:
            vvod();
            break;
        case 2:
            vuvod();
            break;
        case 3:
            poiskM();
            break;
        case 4:
            exit(0);
        }
    }
    return 0;
}

void vvod() {
    FILE* fp = fopen(g_filename, "ab");
    fclose(fp);
    clrscr();
    Student new_record;
    char buf[256];

 fflush(stdin);

    cout << "Vvedite Familiy\n";
    gets(buf);
    strncpy(new_record.Fam, buf, STRLENGTH);
    new_record.Fam[STRLENGTH] = '\0';

    cout << "Vvedite Im9\n";
    gets(buf);
    strncpy(new_record.Im9, buf, STRLENGTH);
    new_record.Im9[STRLENGTH] = '\0';


    cout << "Vvedite Ot4estvo\n";
    gets(buf);
    strncpy(new_record.Ot4, buf, STRLENGTH);
    new_record.Ot4[STRLENGTH] = '\0';

    for (;;) {
        cout << "Vvedite god rogdeni9\n";
        cin >> new_record.GodRog;
        if (new_record.GodRog <= 0) {
            cout<<"NEVOZMOGNO!!! Otricatel'nui god"<<"\n";
        }
        else {
         break;
        }
    }
    for (;;) {
        cout << "Vvedite den' rogdeni9"<<"\n";
        cin >> new_record.DenRog;
        if (new_record.DenRog < 32 && new_record.DenRog > 0) {
            break;
        }
        else {
         cout << "V mes9tce ne bol'he 31 dn9 i 4islo ne mohet but' otricatel'num\n";
        }
    }
    for (;;) {
        cout << "Vvedite mes9c rordeni9\n";
        cin >> new_record.MesRog;
        if (new_record.MesRog < 13 && new_record.MesRog > 0) {
            break;
        }
        else {
         cout << "V gody ne bol'he 12 mes9cev i 4islo ne mohet but' otricatel'num\n";
        }
    }
    for (;;) {
        cout << "Vvedite god postypleni9\n";
        cin >> new_record.GodPos;
        if (new_record.GodPos > 0 && (new_record.GodPos - 15) > new_record.GodRog) {
            break;
        }
        else {
         cout << "Stydent ne moget but' mladhe 15 let\n";
        }
    }

    for (;;) {
        cout << "Vvedite nomer za4etki\n";
        gets(buf);
        strncpy(new_record.NomZa4, buf, STRLENGTH);
        new_record.NomZa4[STRLENGTH] = '\0';

        int records_count = get_records_count();

        fp = fopen(g_filename, "rb");
        bool za4_found = false;
        for (int i = 0; i < records_count; i++) {
         Student temp;
            fread(&temp,  sizeof(Student), 1, fp);
            if (strcmp(temp.NomZa4, new_record.NomZa4) == 0) {
                cout << "Za4etka na dolhna povtor9ts9\n";
                za4_found = true;
            }
        }
        fclose(fp);
        if (!za4_found) {
            break;
        }
    }

    cout << "Vvedite kolli4esvo sesii'\n";
    cin >> new_record.KolSes;

    for (int j = 0; j < new_record.KolSes; j++) {
        new_record.Ses[j].S = j + 1;
        cout << "Vvedite kolli4estvo predmetov v " << new_record.Ses[j].S << " sesii\n";
        cin >> new_record.KolPre;
        for (int i = 0; i < new_record.KolPre; i++)
        {
            cout << "Vvedite predmet za " << new_record.Ses[j].S << " sesiy\n";
            cin >> new_record.Ses[j].Pred[i].NPred;
            cout << "Vveditet ocenky\n";
            cin >> new_record.Ses[j].Pred[i].Ocen;
        }
    }

    fp = fopen(g_filename, "ab");
    fwrite(&new_record, sizeof(Student), 1, fp);
    fclose(fp);
    system("PAUSE");
}

void vuvod() {
    clrscr();

    int records_count = get_records_count();

    cout << "V faile " << records_count << " zapis'-(ei)\n";

    FILE* fp = fopen(g_filename, "rb");

    for (int i = 0; i < records_count; i++) {
     Student temp;
        fread(&temp, sizeof(Student), 1, fp);
        cout << string(70, '-') << endl;
        cout << temp.Fam << "  ";
        cout << temp.Im9 << "  ";
        cout << temp.Ot4 << "  ";
        cout << temp.GodRog << "  ";
        cout << temp.DenRog << "  ";
        cout << temp.MesRog << "  ";
        cout << temp.GodPos << "  ";
        cout << temp.NomZa4 << "  \n";
    }
    cout << "\n\n";
 fclose(fp);
    system("PAUSE");
}

void poiskM() {
    clrscr();
    cout << "1-Poisk po familii\n";
    cout << "2-Poisk po za4etke\n";
    cout << "3-V glavnoe meny\n";
    int tp;
    cin >> tp;
    switch (tp) {
    case 1:
        poiskF();
        break;
    case 2:
        poiskZ();
        break;
    case 3:
        main();
        break;
    }
}

void poiskF() {
    clrscr();

    cout << "Vvedite familiy dl9 poiska\n";

 fflush(stdin);

    char buf[256];
    gets(buf);
 buf[STRLENGTH] = '\0';

    int records_count = get_records_count();

    FILE* fp = fopen(g_filename, "rb");
    bool found = false;
    for (int i = 0; i < records_count; i++) {
     Student temp;
        fread(&temp,  sizeof(Student), 1, fp);
        if (strcmp(temp.Fam, buf) == 0) {
   show_record(temp);
   found = true;
        }
    }
    if (!found) {
        cout << "\nNi4ego ne naidenno!!!\n\n";
    }
    fclose(fp);
    system("PAUSE");
}

void poiskZ() {
    clrscr();

    cout << "Vvedite za4etky dl9 poiska\n";

 fflush(stdin);

    char buf[256];
    gets(buf);
    buf[STRLENGTH] = '\0';

 int records_count = get_records_count();

    FILE *fp = fopen(g_filename, "rb");
    bool found = false;
    for (int i = 0; i < records_count; i++) {
     Student temp;
        fread(&temp,  sizeof(Student), 1, fp);
        if (strcmp(temp.NomZa4, buf) == 0) {
         show_record(temp);
         found = true;
        }
    }
    if (found) {
        cout << "\nNi4ego ne naidenno!!!\n\n";
    }
    fclose(fp);
    system("PAUSE");
}


PM MAIL   Вверх
ISergeyN
Дата 10.12.2009, 01:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 11.10.2008
Где: Україна

Репутация: 2
Всего: 2



А о том что компилятор говорит влом посмотреть?

это как понимать:
Код

for (Student temp; {
        fread(&temp, sizeof(Student), 1, fp);

PM MAIL Skype   Вверх
MightyCat
Дата 11.12.2009, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 60
Регистрация: 2.11.2008
Где: Донецк

Репутация: нет
Всего: нет



Цитата(ISergeyN @  10.12.2009,  01:26 Найти цитируемый пост)
Код

for (Student temp; {
        fread(&temp, sizeof(Student), 1, fp);


Очень интересный момент smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.