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

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

Войти
Регистрация
Восстановить пароль
 
girlsbest
0 / 0 / 0
Регистрация: 27.10.2008
Сообщений: 14
#1

обработка файлов - C++

14.12.2008, 15:52. Просмотров 561. Ответов 0
Метки нет (Все метки)

14. Строки текстового файла input.txt состоят из слов, разделенных одним или несколькими пробелами. Перед первым, а также после последнего слова строки пробелы могут отсутствовать. Требуется на основе исходного файла построить предметный указатель и вывести его в файл output.txt. Каждая строка предметного указателя содержит слово и номера строк текстового файла, в которых это слово встречается, разделенные одним пробелом.

это условие...я написала вот это
Код
#include <fstream>
#include <string.h>
#include <stdlib.h>
const int maxLineLength=256;
const int maxWordCountInSubjPointer = 1000;
const  int countNumberLength = 3;
const char delimiters[] = " ";
void main()
{
	int i;
	//allocate memory
	char* line = new char[maxLineLength];//line from input file
	char* word = new char[maxLineLength];// separate word from the line in input file
	//matrix of strings: word -> numbers of lines in input file
	char*** subjectPointer = new char**[maxWordCountInSubjPointer]; 	
	char * numberStr = new char[countNumberLength];
	for(int i = 0; i < maxLineLength; ++i)
	{
		subjectPointer[i] = new char*[2];
		subjectPointer[i][0] = new char[maxLineLength];
		subjectPointer[i][1] = new char[maxLineLength];
	}

	int numberOfWords = 0;//number of found unique words
	int lineNumber = 0;//current line number in input file

	//open input file
	FILE* in;
	FILE * out;
    if(!(in=fopen("input.txt","w")))
	{
		printf("ошибка открытия файла\n");
		return;
	}
	if(!(out=fopen("output.txt","w")))
	{
		printf("ошибка открытия файла\n");
		return;
	}
    fscanf(in,"%s %d",line, maxLineLength);
	while(!feof(in))
	{
		printf("%s  %d\n",line, maxLineLength);
		fscanf(in,"%s %d",line, maxLineLength);
		++lineNumber;
		word = strtok(line, delimiters);//extract word
		while (word != NULL)
		{
			bool found = false;
			for(int i = 0; i < numberOfWords; ++i)
			{
				if (strcmp(word, subjectPointer[i][0]) == 0)//check if this word already exists in Pointer
				{					
					itoa(lineNumber, numberStr, 10);//get string with line number
					bool exists = true;//check if this line number has been already added
					int wordLen = strlen(subjectPointer[i][1]);
					int numberStrLen = strlen(numberStr);
					for(int j =0; j < strlen(numberStr);++j)
					{
						if (subjectPointer[i][1][wordLen -j] 
							!= numberStr[numberStrLen - j])
						{
							exists = false;
						}
					}
					if (!exists)
					{
						strcat(subjectPointer[i][1], " ");
						strcat(subjectPointer[i][1], itoa(lineNumber, numberStr, 10));
						found = true;
					}
				}
			}
			if(!found)
			{
				itoa(lineNumber, subjectPointer[numberOfWords++][1], 10);
				strcpy(subjectPointer[numberOfWords][0], word);
				

			}
			word = strtok(NULL, delimiters);
		}
	}
	fclose(in);

	//write results to output file
	
	for(i = 0;i< numberOfWords; ++i)
	{
		fprintf(out,"%s %s\n",subjectPointer[i][0],subjectPointer[i][1]);
		
	}	
	fclose(out);
	//free memory
	for(i = 0; i < maxLineLength; ++i)
	{
		delete[] subjectPointer[i][0];
		delete[] subjectPointer[i][1];
		delete[] subjectPointer[i];		
	}
	delete[] numberStr;
	delete[] subjectPointer;

	delete[] line;
	delete[] word;

}
у меня беконечно выводит две полоски, а потом цифры...и из исходного файла все удаляет....плиз найдите ошибки
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.12.2008, 15:52     обработка файлов
Посмотрите здесь:

Обработка файлов - C++
Написать программу обрабатывающую текстовые файлы, чтобы создавался текстовый файл, в котором символы табуляции , пропуски, которые...

обработка файлов - C++
Записать в файл п произвольных натуральных чисел Переписать в другой файл те элементы, которые кратны К. Вывести полученный файл на печать.

Обработка файлов - C++
Дан текстовый файл. Каждая строка имеет следующий формат: фамилия пол рост. Создать новый текстовый файл, включающий список мужчин из...

c++ обработка файлов - C++
ОЧЕНЬ нужна программа на c++. Из текстового файла А.txt вывести кол-во символов (не учитывая пробел) в файл B.txt Например в файле...

обработка файлов - C++
дан текстовый файл. получить строку, в которой минимальное число слов.

обработка файлов - C++
товарищи подскажите что не так??? заранее благодарен!!! суть задачи следующая: &quot;Найти максимальный из отрицательных элементов в файле целых...

Обработка файлов - C++
нужна программа, в которой ты вводишь имя файла с клавы, она открывает его, ты задаешь условие, которое программа удалит везде в этом файле...

обработка файлов - C++
Помогите,пожалуйста.как извлекать из файла нужную информацию?(на си) например каждая строчка содержит дату,время,температуру и тд .И...

Обработка файлов - C++
Программа рассчитывает и показывает правильный результат через раз. Как я понял прога работает всегда НЕ правильно, возможно мне везет и...

Создание и обработка файлов - C++
В массиве целых чисел M (14) найти среднее арифметическое всех четных элементов, стоящих на четных местах. Вывести на экран массив и...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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