IPB
ЛогинПароль:

> Внимание!

1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Строки в Си
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 61
Пол: Мужской

Репутация: -  0  +


Помогите пожайлуста разобратся где в программе ошибка.
Ввести с клавиатуры строку не более 128 символов. Сформировать массив строк, в который скопировать слова исходного текста. При наличии в строке повторяющихся слов, в формируемом массиве держать только одну копию. В качестве разделителей между словами в исходной строке используются пробел и точка. Сформированный массив строк выдать на экран.
Вот что у меня получилось. Компилятор Turbo C++

#include <conio.h>
#include <string.h>
#include <iostream.h>
#include <ctype.h>
#define true 1
#define false 0

void copy(char *str1, char *str2, int _start, int _end)
{
len1=strlen(str1);
j=i-1;
for (int i = 0; i <= len1; i++)
{
if(str2[_start] == str1[i])
n = i+1;
for(j = n; n +_end -_start; n++)
{
if (str1[n] == str2[_start++])
k++;
}
If(k != _end - _start+1&&str1[n+1] == ‘ ‘)

for ( p = _start; p <= _end; p++)
str1[j++] = str2[p];


}
str1[_end - _start + 1] = '\0';
}

void main()
{
clrscr();
char str[128];

cout<<"Vvedite stroku: ";
gets(str);

char Str1[128];

int count = 0, start = 0, end = 0, len = strlen(str);
int i,j,len1,n,k;

str[len+1] = ' ';

for (i = 0; i <= len+1; i++)
{
if ((str[i] == ' ')
{
end = i - 1;
if ((end - start) > 0)
copy(Str1, str, start, end);
start = i + 1;
}
else
}
cout<<”Poluchivsha9s9 stroka: ”<<str1;
getch();
}


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской
Реальное имя: Максим

Репутация: -  0  +


может я не прав, но не объявлены локальные переменные в функции copy

Сообщение отредактировано: MaximumGame -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата
Помогите пожайлуста разобратся где в программе ошибка.
В синтаксисе ошибка, твоя программа элементарно не пройдет компиляцию, потому что ты накрутил столько лишнего... blink.gif Все проще: в Си есть функция strtok, которая заданную строку разбивает на слова (токены) согласно списку разделителей. Все, что тебе останется сделать - это при получении очередного слова пробегать по массиву, где хранятся ранее найденные слова, и проверять, не встречалось ли текущее слово раньше...

На форуме были примеры использования strtok, поищи в этом разделе.

И потом: не мешай в одну кучу Сишные конструкции и С++ - поток cout. Пользуйся printf-ом или puts.
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.04.2024 3:29
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name