Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.06.2012, 11:46   #1
kryliaangela
Пользователь
 
Аватар для kryliaangela
 
Регистрация: 12.01.2012
Сообщений: 18
Восклицание Работа с файлом С++

Создать файл, содержащий сведения о выработке предприятием некоторой продукции в течении суток.
Структура записи: код продукции, количество единиц, произведенных к текущему часу, суточная норма, цех производитель.
Написать программу, которая определяет три изделия, по которым имеется наибольшая недостача (в % от суточной нормы)
и сообщает номера цехов, определяет, есть ли товар, по которому норма выполнена и печатает его код.
Код:
#include <iostream>
#include <math.h>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
using namespace std;
FILE *fp;
char buf[10], naz[10];
int i, n, k;
struct produkt //структура производимой продукции предприятием
	{char kod[10];
	 int kod1;
	 char koled[10];
	 int koled1;
	 char sutnorm[10];
	 int sutnorm1;
	 char ceh[10];
	 int ceh1;
	 double proc;
	 produkt *next;};
produkt *head=NULL;
produkt *current=head;
produkt t[100];
void init(FILE *fp) //считывание информации из файла и запись в список
{i=0;
n=0;
head=NULL;
current=head;
fp=fopen("tabl.txt", "r");
fseek(fp,0,SEEK_SET);
if (fp!=NULL)
{while (feof(fp)==0)
	{fgets(buf, sizeof(buf), fp);
	if (buf[0]!='-' && buf[0]!=' ' && buf[0]!='#')
			{current=new produkt;
			current->next=head;
			head=current;
			strcpy(current->kod,buf);
			current->kod1=atoi(current->kod);
			fgets(buf,sizeof(buf), fp);
			strcpy(current->koled, buf);
			current->koled1=atoi(current->koled);
			fgets(buf,sizeof(buf), fp);
			strcpy(current->sutnorm, buf);
			current->sutnorm1=atoi(current->sutnorm);
			fgets(buf,sizeof(buf), fp);
			strcpy(current->ceh, buf);
			current->ceh1=atoi(current->ceh);
			fgets(buf, sizeof(buf), fp);
			t[i].proc=atoi(current->koled)*100/atoi(current->sutnorm);
			i++;
			n++;
			current=current->next;}}}
else cout<<"Ошибка в открытии файла!"<<endl;
fclose(fp);}
это всего лишь часть кода, но из-за не работает вся программа, у меня не получается нормально прочитать из текста данные и забить их в список, а потом нужно еще числа из тескта пересети в обычные числа.

вот пример текстовика, который читает программа:
####
1234
26
150
98
####
2654
5
40
74
####
4732
85
159
83
####
9487
108
107
63
####
6372
72
73
74
####
kryliaangela вне форума Ответить с цитированием
Старый 24.06.2012, 11:50   #2
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

Для чтения форматированных данных из фаилов в ц++ есть очень удобная штука, называется
Код:
fstream
.
rlib вне форума Ответить с цитированием
Старый 24.06.2012, 11:58   #3
kryliaangela
Пользователь
 
Аватар для kryliaangela
 
Регистрация: 12.01.2012
Сообщений: 18
По умолчанию

не могли бы объяснить, как ей пользоваться
kryliaangela вне форума Ответить с цитированием
Старый 24.06.2012, 12:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вопрос в лоб: Файл должен быть обязательно текстовым?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.06.2012, 12:10   #5
kryliaangela
Пользователь
 
Аватар для kryliaangela
 
Регистрация: 12.01.2012
Сообщений: 18
По умолчанию

в том то и проблема, что да
kryliaangela вне форума Ответить с цитированием
Старый 24.06.2012, 12:54   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Анализируй это:
Код:
// w.cpp: определяет точку входа для консольного приложения.
//

#include "stdafx.h"
#include <fstream>
using namespace std;

struct produkt //структура производимой продукции предприятием
	{char kod[10];
	 int kod1;
	 char koled[10];
	 int koled1;
	 char sutnorm[10];
	 int sutnorm1;
	 char ceh[10];
	 int ceh1;
	 double proc;
	 produkt *next;} p;

int _tmain(int argc, _TCHAR* argv[])
{
	
	// Открываем файл
	ifstream f("d:\\1\\q.txt");
	// пока не его конец
	while(!f.eof()){
		// Считываем построчно из файла 4 параметра
		f>>p.kod;
		f>>p.kod; //считываем второй раз потому что #### в файле
		f>>p.koled; // Считываем остальное
		f>>p.sutnorm;
		f>>p.ceh;

		// После переменку р нужно куда-то присвоить. Например в очередной элемент 
		// списка, как это предусмотренно в структуре
	}
	//Закрываем файл.
	f.close();
	return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.06.2012, 13:58   #7
kryliaangela
Пользователь
 
Аватар для kryliaangela
 
Регистрация: 12.01.2012
Сообщений: 18
По умолчанию

такой ворос (возможно глупый):
Код:
#include "stdafx.h"
это от куда взять?
kryliaangela вне форума Ответить с цитированием
Старый 26.06.2012, 14:44   #8
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

можеш удалить ету строчку
rUs_LAN вне форума Ответить с цитированием
Старый 26.06.2012, 23:40   #9
kryliaangela
Пользователь
 
Аватар для kryliaangela
 
Регистрация: 12.01.2012
Сообщений: 18
По умолчанию

удалить то можно, но мне больше интересно для чего вообще это и как этим пользоваться, так как в вижуалке это не стандарное
kryliaangela вне форума Ответить с цитированием
Старый 27.06.2012, 00:11   #10
rUs_LAN
Форумчанин
 
Регистрация: 15.11.2008
Сообщений: 577
По умолчанию

где где говоришь не станартно, в visual studio?)

а по сути там подключаются заголовочный файл типа fstream iostream чтобы не подключать их в каждом файле отдельно.
rUs_LAN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с файлом mirqa Помощь студентам 3 19.06.2012 01:30
Работа С Файлом Sneidi Общие вопросы C/C++ 1 09.06.2012 00:46
работа с файлом zorra123 Общие вопросы C/C++ 2 30.03.2012 18:43
работа с файлом AET Общие вопросы Delphi 7 30.06.2011 23:38
Работа с файлом orkus Общие вопросы Delphi 4 02.04.2010 04:51