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

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

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

Помогите с лабой - C++

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

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

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

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


Код
#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);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2008, 09:36     Помогите с лабой
Посмотрите здесь:

Помогите с лабой! - C++
В Си нужно из файла вызвать матрицу. В этой матрицы найти все ненулевые элементы и написать все значения и индексы этих значений.. Вот...

Помогите справиться с лабой по массивам) - C++
Задан массив из k чисел. Определить количество инверсий в массиве (т. е. таких пар элементов, в которых большее число находится слева от...

хэлп с лабой) - C++
1. В файле в каждой строке заменить ту комбинацию из трех символов, которая чаще всех встречается в строке, на символ '&amp;'. 2. В...

C++ и бинарные файлы(непонятки с лабой) - C++
Здравствуйте. Можно вопрос по С++ и бинарным файла. есть такой кусок задания &quot;Слова в двоичном файле хранятся в массивах ...

Кто может помочь с Лабой на С++,я не могу написать(( - C++
Тема Операторы ВЫбора вариант 4. Для целого числа k от 1 до 99 напечатать фразу «мне k лет», учитывая при этом, что при некоторых...

Кто нибуть помогите пожалуйста с лабой никак не могу сделать... - QBasic
Вывести на печать, используя функции SPACE и STRING в цикле: # * * * * * # # * * * * # # # * * * # # # # * * # # # # # *

подскажите девушке с лабой) - VBA
Помогите пожалуйста,а то я не поняла по методичке как делать лабу) . Написать программу,осуществляющую заданные вычисления с использованием...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BIP
2 / 2 / 0
Регистрация: 30.05.2008
Сообщений: 68
10.06.2008, 10:36     Помогите с лабой #2
Так в чем помочь? Заново тебе написать, или твой код исправить?
SeLf
0 / 0 / 0
Регистрация: 10.06.2008
Сообщений: 5
10.06.2008, 16:35  [ТС]     Помогите с лабой #3
Желательно код исправить.
1. Не могу выйти из цикла.
2. Новый файл создает но в него ничего не пишет.
BIP
2 / 2 / 0
Регистрация: 30.05.2008
Сообщений: 68
10.06.2008, 18:39     Помогите с лабой #4
Вот код
Код
#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 и все выходит.
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
BIP
2 / 2 / 0
Регистрация: 30.05.2008
Сообщений: 68
10.06.2008, 20:01     Помогите с лабой #6
Попробуй дабавить перед using namespace std;

namespace std{}

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

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

Во-вторых: Код я не смотрел. Я посмотрел только то, что ты просил.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2008, 19:49     Помогите с лабой
Еще ссылки по теме:

Проблемы с лабой по Object Pascal - Delphi
На форме 1 кнопка,1 надпись,1 едит и 1 мемо.Вводится строка из нескольких слов и чисел,разделенных неопределенным числом пробелов.Выбрать...


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

Или воспользуйтесь поиском по форуму:
SeLf
0 / 0 / 0
Регистрация: 10.06.2008
Сообщений: 5
13.06.2008, 19:49  [ТС]     Помогите с лабой #9
Тему можно закрывать.
Yandex
Объявления
13.06.2008, 19:49     Помогите с лабой
Ответ Создать тему
Опции темы

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