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

Исправьте ошибку C++ запись в файл - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Переставляя столбцы матрицы расположить по росту характеристик http://www.cyberforum.ru/cpp-beginners/thread202947.html
характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. переставляя столбцы матрицы расположить по росту характеристик! найти сумму элементов в тех столбцах которые содержат хотя бы один отриц элемент. помогите сделать второе задание.код - #include <iostream.h> #include <stdlib.h> #include <math.h> void main() {int i,j,k; int...
C++ В первый массив перенести все цифры из исходного массива, во второй - все остальные символы. Дорогие друзья,помогите пожалуйста неразбериха какаето-то.Код написал, а что надо не получается. Вот задание: Задан массив из k символов.Создать два новых массива: в первый перенести все цифры из исходного массива, во второй - все остальные символы. Код: #include<iostream.h> #include<math.h> int main() http://www.cyberforum.ru/cpp-beginners/thread202943.html
Перевод систем счисления. C++
Здравствуйте, сразу оговорюсь: занимаюсь программированием три дня. Я вот пытался сделать программу по переводу числа из 16-ричной системы в 10-ную. В Визуал Студио 2008 строю решение. Все работает. Однако вопросы: 1. Как задать чтобы буквы A, B, C, D, E, F, чтобы имели соответственно числовые значения (10, 11, 12 и т.д.)? Куда это писать в программе? Смысл такой чтоб, когда я вводил...
C++ Вывод числа после запятой переменной типа double
Здравствуйте!!! У меня есть 2 программы, одну мне дали вторую написал. Та программа которая была написана мной работает чуть чуть коряво:cry: Задание такое есть какоето число допустим 12.34567...и т.д. мне нужно вывести на экран числа после запятой и через запятую тоесть 3,4,5,6,7... вот код первой программы которую мне дали #include <iostream> using std::cout;
C++ Программа зависает http://www.cyberforum.ru/cpp-beginners/thread202932.html
Переписал пример из книги про указатели. #include <iostream> int main() { int *pA; int a; a=5; pA = &a; std::cout << *pA; delete pA;
C++ Компилятор влияет на результат!!! Есть такая программа: int _tmain(int argc, _TCHAR* argv) { const long l = 10; *((long*)&l) = 200; printf ("%d", l); return 0; } По умолчанию компилируеться как С++ и выводит 10, но когда правой кнопкой кликнуть по проекту и изменить в свойствах настройки компиляции как чистый С, тогда выводит 200. Подскажите почему? подробнее

Показать сообщение отдельно
EvilHero
0 / 0 / 0
Регистрация: 04.12.2010
Сообщений: 29
05.12.2010, 02:27  [ТС]     Исправьте ошибку C++ запись в файл
спасибо все работает)) буду писать дальше, если что спрошу, надеюсь поможете )

Добавлено через 12 часов 16 минут
продолжаю писать прогу, о5 возникла небольшая проблема, но теперь уже с чтением из файла, опять орет на list

code:
Код
    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)
говорит "аргумент типа "const char*" несовместим с параметром "void*"

Добавлено через 1 час 41 минуту
Вот дописал программу, она работает так:
мы создаем список студентов с их именами фамилиями оценкой и возрастом, и записываем в файл db.dat.
далее, мы считываем этот файл и выбираем, что с ним делать, можем отсортировать, добавить студента, удалить, изменить, вывести список на экран и сохранить изменения.

Проверьте пожалуйста на наличие ошибок, и подскажите способ их решения.
пару я уже знаю: в строке № 78 компилятор ругается на list
Код
 fread (list[i].name.c_str(),sl,1,f); //ошибка в list
Еще я так и не разобрался с проверкой на наличие файла, закоментировал если кто знает как справить буду очень рад.

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

вот код:

Код
#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);




}
 
Текущее время: 03:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru