Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
SeLf
0 / 0 / 0
Регистрация: 10.06.2008
Сообщений: 5
#1

Переписать в файл g сведения об учениках 9-х классов в определенном порядке - C++

10.06.2008, 09:36. Просмотров 1222. Ответов 8
Метки нет (Все метки)

Помогите с лабой:

Задание :
Сведения об ученике состоят из его имени и фамилии и названия класса (года обучения и буквы), в котором он учится. Дан файл f, содержащий сведения об учениках школы. Переписать в файл g сведения об учениках 9-х классов, поместив вначале сведения об учениках 9-а класса, затем – об учениках 9-б класса и т.д.

Вероятно в проге есть ошибки.
То что у меня получилось:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <iostream.h>
#include <fstream.h>
#include <string.h>
struct klasses
{
    char lastname[40];
 int klass;
    char bukva[40];
};
void createfile(char fname[20], ofstream fout)
{
 
 fout.open(fname, ios::in);
    klasses man;
    cout<<"Enter lastname: ";
    cin>>man.lastname;
 cout<<"Enter nomer klassa: ";
    cin >> man.klass; 
    cout<<"Enter bukvu klassa: ";
    cin>>man.bukva;
    do 
    {
        fout.write((char*)&man, sizeof(man));
        cout<<"---------\n";        
        cout<<"Enter lastname: ";
        cin>>man.lastname;
  cout<<"Enter nomer klassa: ";
        cin >> man.klass; 
        cout<<"Enter bukvu klassa: ";
        cin>>man.bukva; 
 
 
  }
  while (man.klass!=0);
  fout.close();
}
void readfile(char fname[20], ifstream fin)
{
    fin.open(fname, ios::in | ios::binary);
    cout<<"school list:\n";
    klasses man;
    while (fin.read((char*)&man,sizeof(man)))
    {  
        cout<<man.lastname<<"   "<<man.klass<<"   "<<man.bukva<<" klass\n--------";
    }
    fin.close();
}
void analysisfile(char fname[20],ifstream fin, char gname[20], ofstream gout)
{
    fin.open(fname);
 gout.open(gname, ios::out | ios::binary);
    klasses man;
    while (fin.read((char*)&man, sizeof(man)))
  { 
      if (strcmp(man.bukva,"a")!=0 && 
            man.klass == 9)
  {
            gout<<man.lastname<<endl<<man.klass<<endl<<man.bukva<<" century\n--------";
  }
  }
  gout.close();
  fin.close(); 
}
void main()
{
  char filename[20],filenameg [20];
  cout<<"Enter name for new file: ";
  cin>>filename;
  ofstream fout; 
  createfile(filename,fout);
  ifstream fin;
  readfile(filename,fin);
  cout<<"Enter name for new file: ";
  cin>>filenameg;
  ofstream gout;
  analysisfile(filenameg,fin,filenameg,gout);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2008, 09:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переписать в файл g сведения об учениках 9-х классов в определенном порядке (C++):

Экзамен по информатике. Сведения об учениках - C++
Доброго времени суток! Задали задачу, сижу над ней третий день и все не могу дойти, как же ее решать. Я не прошу готовый код. Может кто...

Переписать строки в обратном порядке в другой файл - C++
Вот задание: Имеется текстовый файл. Переписать его строки в обратном порядке (справа налево) в другой файл. Порядок строк во втором...

Дан файл, компонентами которого являются символы. Переписать все символы в новый файл в обратном порядке. - C++
Работа с текстовыми файлами. Дан файл, компонентами которого являются символы. Переписать все символы в новый файл в обратном порядке.

Дан символьный файл, содержащий сведения о студентах группы. Записать эти сведения в файл g, используя образцы - C++
Дан символьный файл, содержащий сведения о студентах группы , записанные по следующему образцу: имя отчество фамилий, имя отчество...

Переписать строки файла в обратном порядке в новый файл - C++
имеется текстовый файл. переписать его строки в обратном порядке(справа налево) в другой файл . порядок строк во втором файле должен быть...

Создать файл действительных чисел и переписать его компоненты в обратном порядке - C++
Создать файл действительных чисел и переписать его компоненты в обратном порядке/ C++ только если можно, то через создание нового файла...

8
BIP
2 / 2 / 0
Регистрация: 30.05.2008
Сообщений: 68
10.06.2008, 10:36 #2
Так в чем помочь? Заново тебе написать, или твой код исправить?
0
SeLf
0 / 0 / 0
Регистрация: 10.06.2008
Сообщений: 5
10.06.2008, 16:35  [ТС] #3
Желательно код исправить.
1. Не могу выйти из цикла.
2. Новый файл создает но в него ничего не пишет.
0
BIP
2 / 2 / 0
Регистрация: 30.05.2008
Сообщений: 68
10.06.2008, 18:39 #4
Вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include <iostream.h>
#include <fstream.h>
//#include <iostream>
//#include <fstream>
 
using namespace std;
 
struct klasses
{
    char lastname[40];
    int klass;
    char bukva[40];
};
 
void createfile(char fname[20], ofstream &fout)
{
 
    fout.open(fname, ios::binary);
    klasses man;
    cout<<"Enter lastname: ";
    cin>>man.lastname;
    cout<<"Enter nomer klassa: ";
    cin >> man.klass; 
    cout<<"Enter bukvu klassa: ";
    cin>>man.bukva;
    do 
    {
        fout.write(reinterpret_cast <const char*> (&man), sizeof(klasses));
        cout<<"---------\n";        
        cout<<"Enter lastname: ";
        cin>>man.lastname;
        cout<<"Enter nomer klassa: ";
        cin >> man.klass; 
        cout<<"Enter bukvu klassa: ";
        cin>>man.bukva; 
 
 
    }
    while (man.klass!=0);
    fout.close();
}
void readfile(char fname[20], ifstream &fin)
{
    fin.open(fname, ios::in | ios::binary);
    cout<<"school list:\n";
    klasses man;
    while (fin.read((char*)&man,sizeof(man)))
    {  
        cout<<man.lastname<<"   "<<man.klass<<"   "<<man.bukva<<" klass\n--------";
    }
    fin.close();
}
void analysisfile(char fname[20],ifstream &fin, char gname[20], ofstream &gout)
{
    fin.open(fname);
    gout.open(gname, ios::out | ios::binary);
    klasses man;
    while (fin.read((char*)&man, sizeof(man)))
    { 
        if (strcmp(man.bukva,"a")!=0 && 
            man.klass == 9)
        {
            gout<<man.lastname<<endl<<man.klass<<endl<<man.bukva<<" century\n--------";
        }
    }
    gout.close();
    fin.close(); 
}
void main()
{
    char filename[20],filenameg [20];
    cout<<"Enter name for new file: ";
    cin>>filename;
    ofstream fout; 
    createfile(filename,fout);
    ifstream fin;
    readfile(filename,fin);
    cout<<"Enter name for new file: ";
    cin>>filenameg;
    ofstream gout;
    analysisfile(filenameg,fin,filenameg,gout);
}
Выход у тебя из цикла, как я смотрю, когда вводишь класс = 0; Вводи 0 и все выходит.
0
SeLf
0 / 0 / 0
Регистрация: 10.06.2008
Сообщений: 5
10.06.2008, 19:42  [ТС] #5
Теперь имею 2 ошибки :
C:\Program Files\Microsoft Visual Studio\MyProjects\TT\SF.CPP(6) : error C2871: 'std' : does not exist or is not a namespace
C:\Program Files\Microsoft Visual Studio\MyProjects\TT\SF.CPP(60) : error C2065: 'strcmp' : undeclared identifier
0
BIP
2 / 2 / 0
Регистрация: 30.05.2008
Сообщений: 68
10.06.2008, 20:01 #6
Попробуй дабавить перед using namespace std;

namespace std{}

и дабавь #include <string.h>

Хотя у меня все и так работатет
0
SeLf
0 / 0 / 0
Регистрация: 10.06.2008
Сообщений: 5
10.06.2008, 20:10  [ТС] #7
Результат выполнения программы:
-Создается файл f с непонятным содержанием
-Создается пустой файл g (в любом случае).
0
BIP
2 / 2 / 0
Регистрация: 30.05.2008
Сообщений: 68
10.06.2008, 23:16 #8
Цитата Сообщение от SeLf Посмотреть сообщение
-Создается файл f с непонятным содержанием
Во-первых: Непонятное, потому что ты работаешь при помощи функций работы с бинарными файлами. Вот и непонятное.

Во-вторых: Код я не смотрел. Я посмотрел только то, что ты просил.
0
SeLf
0 / 0 / 0
Регистрация: 10.06.2008
Сообщений: 5
13.06.2008, 19:49  [ТС] #9
Тему можно закрывать.
0
13.06.2008, 19:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2008, 19:49
Привет! Вот еще темы с ответами:

Записать в файл последовательность строк. Самую короткую строку переписать в обратном порядке - C++
Помогите новичку написать программу, а то у нас требуют объяснять не кто хочет!

В файле input.txt содержатся сведения о группе студентов. переписать данные файла в файл output.txt, отсортировав их по возрастанию - C++
Добрый вечер!!! Я - новичок по работе с С++, помогите, пожалуйста, написать программу на этом языке. В файле input.txt содержатся сведения...

Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке: - C++
. Дан файл f, компоненты которого являются целыми числами. Никакая из компонентов файла не равна нулю. Файл f содержит столько же...

Переписать компоненты файла f в файл g так, чтобы в файле g числа шли в следующем порядке: - C++
Есть задание: Заданный файл f, компоненты которого являются целыми числами. Ни один из компонентов файла не равна нулю. Числа в файле идут...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.