Консультация № 36450
01.03.2006, 08:24
0.00 руб.
0 3 2
Помогите решить прогу:
Из строки входного потока сформировать стринг, состоящий из слов встречающихся более одного раза. Слова в стринге должны распологаться в порядке обратном их появлению во входном потоке и разделяться обратной наклонной чертой. Задачу сделать с помощью указателей при этом индексы массивов заменяя на указатели, и выделять динамически память для указателей.
Условием окончания входного потока CTRL+Z.
Пример:
петя вася коля
саша коля толя петя
жора гоша вася
жора
CTRL^Z
Вывод
жора/коля/вася/петя

Обсуждение

Неизвестный
01.03.2006, 12:46
общий
это ответ
Здравствуйте, Лыткин А. В.!
Давай уточним (не вижу сложностей в решении задачи) - в минифоруме дам ответ:
то есть, требуется, чтобы ТОЛЬКО по CTRL+Z заканчивался ввод, и ни коим образом по ENTER?
И в каком С или С++?
Неизвестный
01.03.2006, 16:48
общий
это ответ
Здравствуйте, Лыткин А. В.!

Тут уже на шару контрольные делают? В чем собственно ваша проблема - покажите свой код, расскажите как вы пытались решить эту задачу и как у вас не получилось ...
Неизвестный
01.03.2006, 20:36
общий
Привет! Я очень рад помощи с твоей сторны.Сейчас я программирую в СПризнак окончания входного потока данных означает не Enter а комбинация клавиш CTRL и Z и нажимаеш Enter это осуществляется при вводе данныхВ этой задачке строка получаетса как одно слово и я не умею работать с указателями#include<stdio.h>#include<string.h>#include<conio.h> povtor(char A[], char B[]) {int i,p; i=p=0; while(i<strlen(A)&&p==0) {if (A[i]!=B[i]) p=1; i++; } return p; } copy(char c[], char d[]) {int i; for(i=0;i<strlen(d);i++) c[i]=d[i]; }main(){clrscr(); const int max=30; char s[max][max],c; int i,j,n,k,l,m; printf("Vvedite dannie\n"); i=0;j=0; while ((c=getchar())!=EOF) { if (c!=‘\n‘) s[i][j++]=c; else { s[i++][j]=‘\0‘; j=0; } } n=i; i=0; while(i<n) { j=i+1; k=j; l=0; while(j<n) { if(povtor(s[i],s[j])!=0) copy(s[k++],s[j]); else l=1; j++; } if(l==0) { for(m=i;m<n-1;m++) copy(s[m],s[m+1]); n--; i--; } else n=k; i++; } printf("%s",s[n-1]); for(i=n-2;i>=0;i--) printf(" %s",s[i]);}
Форма ответа