Перейти до вмісту

Допоможіть виправити помилки!


Повідомлень в темі: 7

#1 Ivano4ka

    Чайник

  • Користувачі
  • Pip
  • 1 повідомлень
  • Стать:Жінка
  • Місто:Бучач

Відправлено 28.04.2011 – 17:55

  • 7
Задача повинна шукати найдовше слово в тексті, (мова програмування С++)
Ось код:


#include<string.h>
#include<stdio.h>

void main()
{
char q[80];
printf("Vvedit text:\n");
gets (q);
printf("Vvedeno:\n%s",q);
int n;
n=strlen(q);
int i=0;
char max=strlen(q[i]);
for (i=0; i<n; i++){
while (q[i]!="",",",".","!","?",":",";")
{if(strlen(q[i])>max)max=strlen(q[i]);
}
}
printf("Naidovshe slovo v texi - ",max);
}

Тільки ця задачка не виконується(((((( А дуже треба

#2 Amarok

    Старійшина

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 2350 повідомлень
  • Стать:Чоловік
  • Місто:Дубно -> Нетішин -> Київ -> New York

Відправлено 28.04.2011 – 18:53

Перегляд дописуIvano4ka (28.04.2011 11:55) писав:

Задача повинна шукати найдовше слово в тексті, (мова програмування С++)
Ось код:


#include<string.h>
#include<stdio.h>

void main()
{
char q[80];
printf("Vvedit text:\n");
gets (q);
printf("Vvedeno:\n%s",q);
int n;
n=strlen(q);
int i=0;
char max=strlen(q[i]);
for (i=0; i<n; i++){
while (q[i]!="",",",".","!","?",":",";")
{if(strlen(q[i])>max)max=strlen(q[i]);
}
}
printf("Naidovshe slovo v texi - ",max);
}

Тільки ця задачка не виконується(((((( А дуже треба

в прінті місцями перепутали перехід на новий рядок і специфаєр стрінгу %s

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

і да вам треба тимчасовий буфер куди будете зберігати ваші підстрінги (слова), тобто по-символьно скопіювати слово а тоді вже його порівнювати

квадратичний алгоритм може хтось знає кращий...
  • 0

#3 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 28.04.2011 – 19:02

char max=strlen(q[i]);
Що це за збочення? о_0

while (q[i]!="",",",".","!","?",":",";")
охохо!!!! оце жесть

Навіть не намагаюся вникнути в змісти придумного вами алгоритму... Відповідь отут http://tinyurl.com/3dhnj6p

Цитата

квадратичний алгоритм може хтось знає кращий...
Це яким збоченцем треба бути, щоб писати алгоритм за O(n^2) а не за O(n) ?
  • 0

#4 Amarok

    Старійшина

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 2350 повідомлень
  • Стать:Чоловік
  • Місто:Дубно -> Нетішин -> Київ -> New York

Відправлено 28.04.2011 – 19:16

Перегляд дописуLactarius (28.04.2011 12:02) писав:

char max=strlen(q[i]);
Що це за збочення? о_0

while (q[i]!="",",",".","!","?",":",";")
охохо!!!! оце жесть

Навіть не намагаюся вникнути в змісти придумного вами алгоритму... Відповідь отут http://tinyurl.com/3dhnj6p


Це яким збоченцем треба бути, щоб писати алгоритм за O(n^2) а не за O(n) ?

подивися уважно на вайл
звичайно можна розбити токени за один н і знайти те слово з ще одне н.
  • 0

#5 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 29.04.2011 – 13:24

Цитата

подивися уважно на вайл
звичайно можна розбити токени за один н і знайти те слово з ще одне н.
Треба зберігати початковий індекс поточного слова кінцевий і початковий і кінцевий індекси найдовшого слова. в результаті робиш один прохід і в кінці береш підрядок врезультаті получаєтсья складність O(n+m) це н довжина рядка і м довжина найдовшого слова
  • 0

#6 Amarok

    Старійшина

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 2350 повідомлень
  • Стать:Чоловік
  • Місто:Дубно -> Нетішин -> Київ -> New York

Відправлено 01.05.2011 – 07:09

Перегляд дописуLactarius (29.04.2011 06:24) писав:

Треба зберігати початковий індекс поточного слова кінцевий і початковий і кінцевий індекси найдовшого слова. в результаті робиш один прохід і в кінці береш підрядок врезультаті получаєтсья складність O(n+m) це н довжина рядка і м довжина найдовшого слова
підрядок можна взяти поза функцією а значить комплексність чистого алгоритму О(н)
  • 0

#7 Lactarius

    Генеральний писар

  • Користувачі
  • PipPipPipPipPipPipPipPipPip
  • 976 повідомлень
  • Стать:Чоловік
  • Місто:Львів

Відправлено 11.05.2011 – 16:44

Цитата

підрядок можна взяти поза функцією а значить комплексність чистого алгоритму О(н)
Ну ти моск. І як від того зміниться швидкодія? завичай не кажуть O(n+m) а кажуть що це лінійний алгоритм. я там написав, бо знав, що такі жмурики як ти будуть придиратися.
  • 0

#8 Amarok

    Старійшина

  • Користувачі
  • PipPipPipPipPipPipPipPipPipPip
  • 2350 повідомлень
  • Стать:Чоловік
  • Місто:Дубно -> Нетішин -> Київ -> New York

Відправлено 11.05.2011 – 23:39

Перегляд дописуLactarius (11.05.2011 10:44) писав:

Ну ти моск. І як від того зміниться швидкодія? завичай не кажуть O(n+m) а кажуть що це лінійний алгоритм. я там написав, бо знав, що такі жмурики як ти будуть придиратися.
На константу м зміниться, теоретично це має вплив.
  • 0



Кількість користувачів, що читають цю тему: 1

0 користувачів, 1 гостей, 0 анонімних


Магазин кубиков Рубика Cubes.in.ua