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

C++ база данных найдите ошибки - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ [C++] Каков номер машины http://www.cyberforum.ru/cpp-beginners/thread204162.html
Три приятеля были свидетелями нарушения правил дорожного движения. Номер автомобиля (четырёхзначный) ни один из них не запомнил. Однако один запомнил, что этот номер делится на 2, на 7 и на 11; другой запомнил, что в записи номера учавствует только две цифры, а третия заметил, что сумма цифр числа равна 30. Каков номер машины. Вроде задача и простая, но мы ещё массивы не проходили, так что у...
C++ Найти максимальный путь между вершинами дерева... Помогите решить задачку: Найти такой максимальный путь между вершинами дерева, у которого корневая вершина находится на наименьшей глубине. Удалить (правым удалением) эту корневую вершину. http://www.cyberforum.ru/cpp-beginners/thread204160.html
Узнать номер символа в строке. C++
Здравствуйте. Помогите, пожалуйста! Задача Подсчитать кол-во символов в строке после последнего вхождения символа <<charg>>. Вот моя программа: #include <iostream> #include <cstring> using namespace std; int main() { const int max=80; int n,j,m=0,kol; char charg1;
C++ МСА и ЛСА
Нужно составить программу что б выводила матричную схему алгоритма (эта таблица на рисунке заполненная) и логическую схему алгоритма (это под таблицей большая цепочка значений)
C++ прога на класы http://www.cyberforum.ru/cpp-beginners/thread204153.html
Помогите с прогой: Нада создать клас "Символ",даные класу-целое,символьное и 16-е представление символу.Опредилить методы для ввода данных и конвертирование символу в нужный формат.
C++ Windows и wine Господа, хочу создать приложение, что бы оно запускалась как под windows, так и под Линукс (через вайн). Вопрос в том, что луше использовать - C++ Builder или Visual C++? Если VC++, то какой тип роекта мне создавать? Пожалуйста, QT не предлагать. подробнее

Показать сообщение отдельно
EvilHero
0 / 0 / 0
Регистрация: 04.12.2010
Сообщений: 29
05.12.2010, 21:33     C++ база данных найдите ошибки
Вот дописал программу, она работает так:
мы создаем список студентов с их именами фамилиями оценкой и возрастом, и записываем в файл db.dat.
далее, мы считываем этот файл и выбираем, что с ним делать, можем отсортировать, добавить студента, удалить, изменить, вывести список на экран и сохранить изменения.

Проверьте пожалуйста на наличие ошибок, и подскажите способ их решения.
пару я уже знаю: в строке № 78 компилятор ругается на list
Код


Код
 fread (list[i].name.c_str(),sl,1,f); //ошибка в list
говорит "аргумент типа "const char*" несовместим с параметром "void*"

Еще я так и не разобрался с проверкой на наличие файла, закоментировал если кто знает как справить буду очень рад.

больше ошибок не заметил, если есть сообщите пожалуйста.

вот код:
Код
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <stdio.h>
#include <ctype.h>


using namespace std;


struct student                        // Шаблон структуры 
{
    string name;                    // имя и фамилия
    int year;                        // возраст
    int mark;                        // оценка
};
        vector <student> list;        // вектор данных по группе
        student buffer;                // Дополнительная структура
        int i, j, z, records ;
        char ci;                    //буквенный аналог i
int main (int)
{
    student students;
        {
        do                                // Заполняем массив структур
            {
                records=0;
                cout <<  "Vvedite imya i familiu    ";
                cin >> students.name;
                cout <<  "Vvedite vozrast    ";
                cin >> students.year;
                cout << "Vvedite ocenky    ";
                cin >> students.mark;
                records++;
                list.push_back (students);
                cout << "Prodoljit' zapolnenie? [y/n]  ";
                cin >> ci;
                cout << endl;
            }
        while(ci!='n') ;
        }

    FILE*f=fopen("db.dat","rb");
    //if ((f=fopen("db.dat","rb"))==NULL)
    //    {
 //          cout << "Missing File db.dat " << endl <<"Create file bd.dat? [y/n]    ";
    //       cin >> ci;
    //       if (ci!='n')
    //        {
    //        exit(1);
    //        }
    //           FILE*f=fopen("db.dat","wb");
    //        cout << "File db.dat created" <<endl;
    //    }
    int size=list.size();
    fwrite(&size,sizeof(size),1,f);
    for(unsigned i=0;i<list.size();i++)
        {
            int sl=list[i].name.length()+1; 
            fwrite (&sl,sizeof(sl),1,f);
            fwrite (list[i].name.c_str(),list[i].name.length()+1,1,f);
            fwrite (&list[i].year,sizeof(int),1,f);
            fwrite (&list[i].mark,sizeof(int),1,f);
        }
    fclose(f);

    FILE*f=fopen("db.dat","wb");
    int size=0;
    fread(&size,sizeof(size),1,f);
    list.resize(size);
    for (unsigned i=0;i<size;i++)
        {
            int sl=0;
            fread(&sl,sizeof(sl),1,f);
            list[i].name.resize(sl);
            fread (list[i].name.c_str(),sl,1,f); //ошибка в list
            fread(&list[i].year,sizeof(int),1,f);
            fread(&list[i].mark,sizeof(int),1,f);
        }
    fclose(f);
    do
    {
    cout<<"Vi nahodites' v glavnom menu, viberite deistvie:"<<endl
        <<"1 - dobavit' studenta."<<endl
        <<"2 - ydalit' studenta."<<endl
        <<"3 - izmenit' studenta."<<endl
        <<"4 - sortirovka."<<endl
        <<"5 - pokazat' spisok"<<endl
        <<"6 - sohranit' db.dat"<<endl
        <<"Prss any key for exit"<<endl;
        cin >> i;
        switch (i)
        {
        case 1:
            cout<< "Vi zahoteli dobavit' studenta"<<endl;
            do
            {
                cout <<  "Vvedite imya i familiu    ";
                cin >> students.name;
                cout <<  "Vvedite vozrast    ";
                cin >> students.year;
                cout << "Vvedite ocenky    ";
                cin >> students.mark;
                records++;
                list.insert(list.end()+1,students);
                i++;
                cout << "Prodoljit' zapolnenie? [y/n]  ";
                cin >> ci;
                cout << endl;
            }
        while(ci!='n');
            
            break;
        case 2:
            cout<< "Vi zahoteli ydalit' studenta"<<endl
                <<"Vvedite ID:";
            cin >> i;
            cout<< endl <<"Student #"<<i
                << list[i].name
                <<"    "
                <<list[i].year
                <<"    "
                <<list[i].mark;
            cout<<"deleted";
            records--;
            list.erase(list.begin()+i);
            break;
        case 3:
                cout<< "Vi zahoteli izmenit' studenta"<<endl
                <<"Vvedite ID:";
            do
            {
                cin >> i;
                cout <<  "Vvedite imya i familiu    ";
                cin >> students.name;
                cout <<  "Vvedite vozrast    ";
                cin >> students.year;
                cout << "Vvedite ocenky    ";
                cin >> students.mark;
                records++;
                list.insert(list.begin()+i,students);
                cout << "Prodoljit' redaktirovanie? [y/n]  ";
                cin >> ci;
                cout << endl;
            }
        while(ci!='n');
            break;
        case 4:
            cout << "Vi vibrali sortirovky"<<endl<<"Viberite variant sortirovki:"<<endl;
            cout << "Otsortirovat' po ocenke - 1 " <<endl; 
            cout << "Otsortirovat' po vozrasty - 2  "<< endl;
            cout << endl;
            cin >> i;
            switch (i)
                {
                case 1:
                cout << "Vi vibrali sortirovky po ocenke "<<endl;
                cout << "1- po vozrastaniu" <<  endl << "2- po ubivaniu";
                cout << endl;
                cin >> z;
        cout << endl;
        switch (z)
        {
        case 1:
    for (i = 0; i < records-1; i++)        // сортирует
    for (j = i; j < records;j++)   
    if (list[i].mark > list[j].mark)
        { 
            buffer = list[i];    // Перестановка элементов
            list[i] = list[j];    // структуры, особенность
            list[j] = buffer;    // языка C/C++
        }
    break;
    case 2:
    for (i = 0; i < records-1; i++)            // сортирует
    for (j = i; j < records;j++)   
    if (list[i].mark < list[j].mark)
        { 
            buffer = list[i];    // Перестановка элементов
            list[i] = list[j];    // структуры, особенность
            list[j] = buffer;    // языка C/C++
        }
    break;
    default: break;
        }
break;
case 2:
    
    cout << "Vi vibrali sortirovky po vozrasty"<<endl;
        cout << "1- po vozrastaniu" <<  endl << "2- po ubivaniu" << endl;
        cin >> z;
        cout << endl;
        switch (z)
        {
        case 1:
        cout << endl;
    for (i = 0; i < records-1; i++)            // сортирует
    for (j = i; j < records;j++)   
    if (list[i].year > list[j].year)
        { 
            buffer = list[i];    // Перестановка элементов
            list[i] = list[j];    // структуры, особенность
            list[j] = buffer;    // языка C/C++
        }
    break;
    case 2:
        cout << endl;
    for (i = 0; i < records-1; i++)            // сортирует
    for (j = i; j < records;j++)   
    if (list[i].year < list[j].year)
        { 
            buffer = list[i];    // Перестановка элементов
            list[i] = list[j];    // структуры, особенность
            list[j] = buffer;    // языка C/C++
        }
    break;
default: break;
        }
default: break;
    }
        case 5:
            for (i = 0; i < records; i++)            // Выводим результат
            {
            cout <<endl;
            cout << " Student " << list[i].name ;
            cout << " Vozrast " <<  list[i].year;  
            cout << " Ocenka " <<  list[i].mark;
            }
        break;
        case 6:
                int size=list.size();
                fwrite(&size,sizeof(size),1,f);
                for(unsigned i=0;i<list.size();i++)
                {
                    int sl=list[i].name.length()+1; 
                    fwrite (&sl,sizeof(sl),1,f);
                    fwrite (list[i].name.c_str(),list[i].name.length()+1,1,f);
                    fwrite (&list[i].year,sizeof(int),1,f);
                    fwrite (&list[i].mark,sizeof(int),1,f);
                }
                fclose(f);
                break;
        default: break;
            }
            cout << "Dlya vozvrata v glavmoe menu najmite 0";
            cin >> i;

            }
            while (i==0);
            exit(1);




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