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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2009, 13:29   #1
phpcreator
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 18
По умолчанию Задачка с сайта acm.timus.ru

Решал вот эту задачку http://acm.timus.ru/problem.aspx?space=1&num=1496
вот код:

Код:
#include <cstdlib>
#include <iostream>


using namespace std;
struct xxx{
       char x[30];
       }A[100];

int main()
{int n,i,j,k=0; 
   cin>>n;
   fflush(stdin);
   if((n<100)&&(n>0))
   {
   for (i=0;i<n;i++)
   cin.getline(A[i].x,30);

   for(i=0;i<(n-1);i++)
   if (strcmp(A[i].x,"")){
   for(j=i+1;j<n;j++)
   if (!strcmp(A[i].x,A[j].x)) {if(k==0){cout<<A[i].x;k++;} else cout<<endl<<A[i].x; for(j;j<n;j++) if(!strcmp(A[i].x,A[j].x)) strcpy(A[j].x,""); } } } 

   return 0;
   
}
хоть убей не могу понять где я ошибаюсь(
phpcreator вне форума Ответить с цитированием
Старый 17.10.2009, 14:03   #2
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Где ошибся не могу сказать, запутано у тебя, вот только что набросал свое, тут понятнее

Код:
#include <iostream.h>
#include <conio.h>
#include <string.h>

int main()
{
clrscr();

char *spam[10]={"spam","fdg","spamer","cbdf","spam","wer","spamer","spam","sxc","spam"};

int kol=0;

for (int i=0;i<10;i++)
{
	for (int j=0;j<10;j++)
		{
		if (strcmp(spam[i],spam[j])==0)
			kol++;
		if (kol > 1)
			{
				cout << spam[i] << "\n";
                                kol=0;
				break;
			}
		}
}

return 0;
}
Правда нужно подкоректировать, что бы по одному нику выводил.

Последний раз редактировалось profi; 17.10.2009 в 14:06.
profi вне форума Ответить с цитированием
Старый 17.10.2009, 14:13   #3
phpcreator
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 18
По умолчанию

ну твоя программа совсем не то выполняет
phpcreator вне форума Ответить с цитированием
Старый 17.10.2009, 14:14   #4
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

думаю ошибка была с вводом данных, первые две строчки почему-то были пустыми
вот работающий вариант, читает из in.txt
Код:
#include <fstream>
#include <cstring>
#include <iostream>
using namespace std;
int main()
{
	char A[100][30];
	ifstream fin("in.txt");
	int n,i,j; 
	fin >>n;
	if(n>100||n<0){
		cout <<"Значение n лежит вне допустимого диапазона!\n";
		return 1;
	}
	
	for (i=0;i<n;i++)
		fin >>A[i];
	
	for(i=0;i<(n-1);i++)
		if (strcmp(A[i],"")){
			for(j=i+1;j<n;j++)
				if (!strcmp(A[i],A[j])){
						cout<<A[i]<<endl;
						for(j;j<n;j++)
							if(!strcmp(A[i],A[j]))
								strcpy(A[j],"");
				} 
		}
	return 0;
}

Последний раз редактировалось Namolem; 17.10.2009 в 14:24.
Namolem вне форума Ответить с цитированием
Старый 17.10.2009, 14:18   #5
phpcreator
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 18
По умолчанию

"думаю ошибка была с вводом данных, первые две строчки почему-то были пустыми" какие именно две строчки пустые? у меня нету никаких пустых строк
phpcreator вне форума Ответить с цитированием
Старый 17.10.2009, 14:19   #6
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Цитата:
ну твоя программа совсем не то выполняет
В задаче нужно найти одинаковые ники и вывести их, просто у меня ники одинаковые все выводятся, нужно просто подкоректировать так что бы по одному выводилось и все.
profi вне форума Ответить с цитированием
Старый 17.10.2009, 14:33   #7
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

Если сразу после ввода данных добавить их вывод, наблюдается такая вещь:
=================================== ======
ввод:
3
one
two
вывод:
""
"one"
"two"
=================================== ======
ввод:
3 one
two
three
вывод:
" one"
"two"
"three"
=================================== ======
ввод:
3one
two
three
вывод:
"one"
"two"
"three"
Namolem вне форума Ответить с цитированием
Старый 17.10.2009, 14:56   #8
phpcreator
Пользователь
 
Регистрация: 09.09.2009
Сообщений: 18
По умолчанию

Namolem у меня все нормально вводится и выводится. Такая же фишка как у тебя получилась у меня без использования функции fflush(stdin); А с ней у меня вроде как все правильно работает
phpcreator вне форума Ответить с цитированием
Старый 17.10.2009, 15:00   #9
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию

в чем проблема твоя? покажи входные и выходные данные
Namolem вне форума Ответить с цитированием
Старый 17.10.2009, 15:19   #10
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Вот подкоректировал её:

Код:
#include <iostream.h>
#include <conio.h>
#include <string.h>

int main()
{
clrscr();

char *spam[10]={"spam","fdg","spamer","spam","spam","wer","spamer","spam","sxc","spam"};

char *temp,*s[5];

int kol=0,flag=0,n=0;

for (int i=0;i<10;i++)
{
	for (int j=0;j<10;j++)
		{
		if (strcmp(spam[i],spam[j])==0)
				kol++;
		if (kol > 1)
			{
			for (int k=0;k<n;k++)
				if (strcmp(s[k],spam[i])==0)
					{
						flag=1;
						break;
					}

				if (flag==0)
					{
						s[n]=spam[i];
						n++;
					}

                                flag=0;
				kol=0;
				break;
			}
		}
}

for (int l=0;l<n;l++)
	cout << s[l] << "\n";

return 0;
}

Последний раз редактировалось profi; 17.10.2009 в 15:22.
profi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Парсинг сайта AnToHa-KiLL Общие вопросы Delphi 3 30.06.2009 08:22
Требуется специалист для создания сайта со строгой аутентификацией или зашифрованного сайта. artembar Фриланс 1 01.09.2008 16:11
скачивание сайта Лубышев Софт 2 09.03.2008 20:43