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

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

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

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

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

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

В чем проблема?
Код:
ofstream t("3.txt");
	for(int u=0; u<y; u++)
	for(int j=0; j<i; j++)
	{
		if(c[u]!=a[j]) //тут получаетса повтор
		t<<a[j]<<endl;
		else
			continue;
	}

Последний раз редактировалось Cpluser; 08.10.2009 в 18:48.
Cpluser вне форума Ответить с цитированием
Старый 08.10.2009, 19:35   #2
>=VeNoM=<
 
Регистрация: 08.10.2009
Сообщений: 7
По умолчанию

Код:
	for(int u=0; u<y; u++)
	for(int j=0; j<i; j++)
	{
		if(c[u]!=a[j]) //тут получаетса повтор
		t<<a[j]<<endl;
		else
			continue;
	}
точно весь код? тут используется переменная i, объявления которой не видно.
Жизнь надо прожить так, чтобы другим неповадно было!
>=VeNoM=< вне форума Ответить с цитированием
Старый 08.10.2009, 19:55   #3
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Код:
#include <iostream>
#include <fstream>
#include <string>
#include <time.h>
using namespace std;

int main()
{
	setlocale(LC_ALL, "Russian");
	string a[10];
	string c[10];
	ifstream k("1.txt");
	int i=0;
	while(!k.eof())
	{
		k>>a[i];
		cout<<a[i]<<endl;
		i++;
	}
	k.close();
	ifstream kk("2.txt");
	int y=0; 
	while(!kk.eof())
	{
		kk>>c[y];
		y++;
	}
	kk.close();
	ofstream t("3.txt");
	for(int u=0; u<y; u++)
	for(int j=0; j<i; j++)
	{
		if(c[u]!=a[j]) //тут получаетса повтор
		t<<a[j]<<endl;
		else
			continue;
	}
	t.close();
	system("pause");
}
Cpluser вне форума Ответить с цитированием
Старый 08.10.2009, 20:18   #4
>=VeNoM=<
 
Регистрация: 08.10.2009
Сообщений: 7
По умолчанию

Если я правильно понял, программа должна вывести в файл 3.тхт те строки, которые есть в 1.тхт но нет в 2.тхт. В таком случае неправильно построен цикл. Можно так:
Код:
	for(int u=0; u<y; u++)
	for(int j=0; j<i; j++)
	{
		if(c[j]!=a[u])
		{ //тут получаетса повтор
		t<<a[u]<<endl;
		break;
		}
		else
			continue;
	}
Жизнь надо прожить так, чтобы другим неповадно было!

Последний раз редактировалось >=VeNoM=<; 08.10.2009 в 20:22. Причина: Торможу с похмелья
>=VeNoM=< вне форума Ответить с цитированием
Старый 08.10.2009, 20:21   #5
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Пример:
в 1.txt
лала
авыавыва
уцкуцкуц
куку
сфыыфмаавл
куку
гшненгне

в 2.txt
куку
уцкуцкуц

А в 3.txt
должны быть все сторки кроме
куку
гшненгне

Последний раз редактировалось Cpluser; 08.10.2009 в 20:44.
Cpluser вне форума Ответить с цитированием
Старый 08.10.2009, 20:42   #6
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

а как-то так не проще ли
Код:
	ofstream t("3.txt");	
		for(int i=0;i<10;i++) 
		{
			if(a[i]!=c[i])
			{
				t << a[i] << endl ;
			}
		}
	t.close();
только в твоем случа i чем нить другим надо заменить

//ну да с такими примерами файлов мой вариант не подходит

Последний раз редактировалось m0nax; 08.10.2009 в 20:53.
m0nax вне форума Ответить с цитированием
Старый 08.10.2009, 20:48   #7
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Так не работает!
Помогите!
Код:
	ofstream t("3.txt");
	int w=y;
	int r=0;
	int e=0;
for(int u=0; u<i; u++)
{
	w=y;
	r=0;
	while(w>0)
	{
		if(c[w]!=a[u])
			r++;
		w--;
	}
	cout<<r<<endl;
	if(r==y)
	{
		cout<<a[e]<<endl;
		e++;
	}
	else
		continue;
	
}

Последний раз редактировалось Cpluser; 08.10.2009 в 21:03.
Cpluser вне форума Ответить с цитированием
Старый 08.10.2009, 21:05   #8
>=VeNoM=<
 
Регистрация: 08.10.2009
Сообщений: 7
По умолчанию

Код:
#include <iostream>
#include <fstream>
#include <string>
#include <time.h>
using namespace std;

int main()
{
	setlocale(LC_ALL, "Russian");
	string a[10];
	string c[10];
	ifstream k("1.txt");
	int i=0;
	while(!k.eof())
	{
		k>>a[i];
		cout<<a[i]<<endl;
		i++;
	}
	k.close();
	ifstream kk("2.txt");
	int y=0;
	while(!kk.eof())
	{
		kk>>c[y];
		y++;
	}
	kk.close();
	ofstream t("3.txt");
	bool f;
	for(int u=0; u<i; u++)
	{
	for(int j=0; j<y; j++)
	{
		f=false;
		if(c[j]==a[u])
		{
			f=true;
			break;
		}
	}
	if (!f) t<<a[u]<<endl;
	}
	t.close();
	system("pause");
}
смахивает на быдлокодерство, но по крайней мере работает
Жизнь надо прожить так, чтобы другим неповадно было!
>=VeNoM=< вне форума Ответить с цитированием
Старый 08.10.2009, 21:13   #9
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Блин а я целый день голову ламаю никак не мог алгоритм придумать!Спасибо!
Cpluser вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма один раз Dop Общие вопросы Delphi 11 16.07.2009 21:41
Выполнить действие один раз. IVANSour Общие вопросы Delphi 5 02.02.2009 22:01
Выполнить действие один раз. IVANSour Общие вопросы Delphi 6 01.02.2009 17:15
Выполнить действие один раз. IVANSour Общие вопросы Delphi 11 01.02.2009 14:17
Событие один раз Михаил Юрьевич Общие вопросы Delphi 4 01.04.2008 20:40