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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.12.2009, 00:13   #1
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию похожые строки

Есть отсортированый список!Нада в файл записать строки без повторения.Например в файле mass.txt есть
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
ВКонтакте.ру
Форум об инвестициях, заработке в сети Интернет, создании и раскрутке сайтов
Форум об инвестициях, заработке в сети Интернет, создании и раскрутке сайтов
Форум об инвестициях, заработке в сети Интернет, создании и раскрутке сайтов
Форум программистов
Форум программистов
Нада записать без повторения!
Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	setlocale(LC_ALL,"russian");
	string a[100];
	string t="";
 ifstream f("mass.txt"); 
 ofstream d("mask.txt");
 int i=0;
 while(!f.eof())
 {
	 f>>a[i];
	 i++;
 }
 int y;
 for(int g=0; g<i; g++)
 {
	y=g+1;
	 t=a[y];
	 if(a[g]!=t)
		 d<<a[y]<<endl;
	 cout<<a[g]<<endl;
 }	
  system("PAUSE");
}
Cpluser вне форума Ответить с цитированием
Старый 02.12.2009, 00:23   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Хранишь массив использованных строк
Идешь по файлу.
Если текущей строки нету в массиве то добавляешь её туда и выводишь в файл.
Всё.
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 02.12.2009, 00:40   #3
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Поправте ошибки.
Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	setlocale(LC_ALL,"russian");
	string a[100];
	string t;
	string r;
 ifstream f("mass.txt"); 
 ofstream d("mask.txt");
 int i=0;
 while(!f.eof())
 {
	 f>>a[i];
	 i++;
 }
 string aa;
 bool g;
ifstream dd("mask.txt");
 for(int g=0; g<i; g++)
 {
	 g=false;
	 t=a[g];
	 while(!dd.eof())
	 {
		dd>>aa;
		if(t!=aa && g==false)
		{
			d<<t<<endl;
			g=true;
		}
		cout<<g<<endl;
	 }
	
 }	
  system("PAUSE");
}
Cpluser вне форума Ответить с цитированием
Старый 02.12.2009, 00:47   #4
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Цитата:
Сообщение от Cpluser Посмотреть сообщение
Поправте ошибки.
Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	setlocale(LC_ALL,"russian");
	string a[100];
	string t;
	string r;
 ifstream f("mass.txt"); 
 ofstream d("mask.txt");
 int i=0;
 while(!f.eof())
 {
	 f>>a[i];
	 i++;
 }
 string aa;
 bool g;
ifstream dd("mask.txt");
 for(int g=0; g<i; g++)
 {
	 g=false;
	 t=a[g];
	 while(!dd.eof())
	 {
		dd>>aa;
		if(t!=aa && g==false)
		{
			d<<t<<endl;
			g=true;
		}
		cout<<g<<endl;
	 }
	
 }	
  system("PAUSE");
}
Криво всё очень написано.Ошибка вероятней в том что
ifstream dd("mask.txt"); создаётся 1 раз и одну итерацию цикла прочитывается весь файл а на последующих итераций dd.eof() выдаёт true так как файл уже прочитан.Попробуй вставить ifstream dd("mask.txt"); в цикл for(int g=0; g<i; g++).Если не получится то завтра с утра напишу понятный код
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 02.12.2009, 00:50   #5
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Вот лутше вроде!
Код:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main()
{
	setlocale(LC_ALL,"russian");
	string a[100];
	string t;
	string r;
 ifstream f("mass.txt"); 
 ofstream d("mask.txt");
 int i=0;
 int e=0;
 while(!f.eof())
 {
	 
	 f>>t;
	 if(t!=r)
	 {
		 a[e]=t;
		 e++;
	 }
		r=t;
	 i++;
	 
 }

 for(int g=0; g<e; g++)
 {
	cout<<a[g]<<endl;
	
 }	
  system("PAUSE");
}
Cpluser вне форума Ответить с цитированием
Старый 02.12.2009, 00:50   #6
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
По умолчанию

Я вот так сделал. Но только setlocale убрал И исходный файл - английские строки естественно.

Код:
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include "string"
#include "conio.h"
using namespace std;

int main()
{
string a[100];
string t="";
ifstream f("mass.txt"); 
 if (!f)
 {
	 cout<<"Fail in open F!\n";
 }
 ofstream d("mask.txt");
 if (!d)
 {
	 cout<<"Fail in open D!\n";
 }
 int i=0;
 while(!f.eof())
 {
	 f>>a[i];
	 cout<<a[i]<<"\n";
	 i++;
 }
 for(int g=0; g<i; g++)
 {
	 if(a[g]!=a[g+1])
	 { 
	   d<<a[g]<<endl;
	   cout<<a[g]<<endl;
	 }
 }	
 d.close();
 f.close();
_getch();
return 0;
}
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума Ответить с цитированием
Старый 02.12.2009, 00:56   #7
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Код:
#include <string>
#include <vector>
#include <fstream>

using namespace std;

ifstream fin("input.txt");
ofstream fout("output.txt");

vector<string>hash;

bool inhash(const string &s)
{
	for(int i=0;i<hash.size();i++)
		if(hash[i]==s)
			return 1;
	return 0;
}

int main()
{
	string s;
	vector<string>data;
	while(fin>>s)
		data.push_back(s);
	for(int i=0;i<data.size();i++)
		if(!inhash(data[i]))
		{
			hash.push_back(data[i]);
			fout<<data[i]<<endl;	
		}
	return 0;
}
вот так.
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer

Последний раз редактировалось Ozerich; 02.12.2009 в 01:04.
Ozerich вне форума Ответить с цитированием
Старый 02.12.2009, 01:10   #8
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

forsaken66 я так тоже пробывал токо там нада флашок использовать(bool)
Спасибо!Но есть ошибки не все выдает
ВКонтакте.ру
Форум об инвестициях, заработке в сети Интернет, создании и раскрутке сайтов
А Форум программистов нету.
Cpluser вне форума Ответить с цитированием
Старый 02.12.2009, 01:19   #9
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Цитата:
Сообщение от Cpluser Посмотреть сообщение
forsaken66 я так тоже пробывал токо там нада флашок использовать(bool)
Спасибо!Но есть ошибки не все выдает
ВКонтакте.ру
Форум об инвестициях, заработке в сети Интернет, создании и раскрутке сайтов
А Форум программистов нету.
Код:
#include <string>
#include <vector>
#include <fstream>

using namespace std;

ifstream fin("input.txt");
ofstream fout("output.txt");

vector<string>hash;

bool inhash(const string &s)
{
	for(int i=0;i<hash.size();i++)
		if(hash[i]==s)
			return 1;
	return 0;
}

int main()
{
	string s;
	vector<string>data;
	getline(fin,s);
	while(s.size()>0)
	{
		data.push_back(s);
		s.clear();
		getline(fin,s);
	}
	for(int i=0;i<data.size();i++)
		if(!inhash(data[i]))
		{
			hash.push_back(data[i]);
			fout<<data[i]<<endl;	
		}
	return 0;
}
Учти что строки полностью должны совпадат,пробелы в том числе
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 02.12.2009, 01:21   #10
forsaken66
Куды бечь?
Форумчанин
 
Аватар для forsaken66
 
Регистрация: 05.10.2009
Сообщений: 104
По умолчанию

Форум об инвестициях, заработке в сети Интернет, создании и раскрутке сайтов
иях, за
Ааа, я понял, слова-то пробелом отделяются, я просто твой исходный файл невнимательно глянул. Конечно, получается что
Форум об инвестициях,
заработке в сети Интернет,
создании и раскрутке сайтов - это все разные строки тогда конечно нужно в массив все пихать и сравнивать пошагово как Ozerich написал.
Ozerich, кстати, отличный способ Я сразу не подумал так сделать
Не хватало всего одного байта. Да-да, того самого, что из восьми бит состоит.
forsaken66 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенести символа с начала строки в место перед запятой этой же строки. Zhiltsov Microsoft Office Excel 4 05.06.2009 13:10
Строки. Как вывести часть строки? Anfall Общие вопросы Delphi 7 26.02.2009 09:10
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27
Строки 11111 Паскаль, Turbo Pascal, PascalABC.NET 4 17.02.2008 18:45
как вывести строку поочередно сначала первая буква первой строки потом первая буква второй строки и т.д. vitalik007 Помощь студентам 1 25.09.2007 20:45