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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2016, 18:16   #11
ezu
 
Регистрация: 26.02.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от wordman Посмотреть сообщение
В чём запустили? (среда)
Какой пример использовали?
Была ли в нём кирилица, или другие нац.символы?
Программа сделана для работы с латиницей, что бы не заморачиваться с различными кодировками(я хз как C обрабатывает юникод)
Буду признателен если приведёте пример на котором моя программа ничего полезного не сделала. Исключать возможность ошибки в проге написанной на коленке - глупо.
Спасибо большое! но у меня почему то просто пишет "big word:" программа запускается на ура и без ошибок.

p.s среда Microsoft Visual C++ 2010
ezu вне форума Ответить с цитированием
Старый 24.03.2016, 18:18   #12
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Цитата:
Сообщение от ezu Посмотреть сообщение
Спасииибо,но у меня почему то при вводе предложения ничего не выводит,а просто пишет "big word:" хотя запускается без ошибок
Ну, вот про это я и говорю!!
помог - жми на весы
Chainik! вне форума Ответить с цитированием
Старый 24.03.2016, 18:56   #13
ezu
 
Регистрация: 26.02.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Chainik! Посмотреть сообщение
Ну, вот про это я и говорю!!
а нет,вот введи предложение hello world. hello sun и оно вообще норм работает
ezu вне форума Ответить с цитированием
Старый 24.03.2016, 19:50   #14
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Цитата:
Сообщение от ezu Посмотреть сообщение
а нет,вот введи предложение hello world. hello sun и оно вообще норм работает
Я так понял она работает через раз??
помог - жми на весы
Chainik! вне форума Ответить с цитированием
Старый 24.03.2016, 20:46   #15
ezu
 
Регистрация: 26.02.2016
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Chainik! Посмотреть сообщение
Я так понял она работает через раз??
нууууу не со всеми предложениями работает
ezu вне форума Ответить с цитированием
Старый 25.03.2016, 09:06   #16
wordman
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 13
По умолчанию

Цитата:
Сообщение от Chainik! Посмотреть сообщение
2.Пример который я вводил, выглядит следующим образом:
hello my dear freand. apple dear sun word.
На выходе ничего не получил.
Спасибо, программа действительно не работает как надо.
Надо было прогнать больше примеров.
Сейчас поправлю.
wordman вне форума Ответить с цитированием
Старый 25.03.2016, 09:19   #17
wordman
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 13
По умолчанию

новая редакция:
Код:
#include <stdio.h>
#include <string.h>
int main()
{
    char ishod[100], predl1[100]="", predl2[100]="", slovo[100]="", big_slovo[100]="", slovo2[100]="", ch1, ch;
    int l_ishod, end1=0, end2=0, l_pred1=0, l_pred2=0, i, j, l_big=0, l_slovo=0, newslovo=1, slova_sovpali=0, i_slova=0, l_slovo2=0;
    puts("Vvedite predlogeniy!");
    gets(ishod);
    l_ishod=strlen(ishod);
//----------------------------------ðàçáèâêà ñòðîêè ââîäà íà 2 ïðåäëîæåíèÿ
    for (i=0;i<=l_ishod; i++)
    {
        if (ishod[i]=='.' || ishod[i]=='!' || ishod[i]=='?')
        {
            if (end1==0)
            {
                end1=i;
                predl1[i]=ishod[i];
                predl1[i+1]='\0';
            }
            else 
            {
                predl2[end2]=ishod[i];
                predl1[end2+1]='\0';
                end2=i+1;
                break;
            }
        }
        if (end1==0) predl1[i]=ishod[i];
        else if (ishod[i]!='.' && ishod[i]!='!' && ishod[i]!='?') predl2[end2++]=ishod[i];
    }
//--------------------------------------------------
    l_slovo=0;
    for (i=0; i<=end1; i++)
    {//ïðîõîæó ïåðâîå ïðåäëîæåíèå ïî âñåì ñëîâàì
        ch=predl1[i];
        if (ch==' ' || ch==',' || ch=='.' || ch=='!' || ch=='?' || ch==':' || ch==';')
        {//------------------åñëè ñëîâî çàêîí÷èëîñü
            slovo[l_slovo]='\0';
        //--------------------------------------------
            if (l_slovo>l_big)
            {//ñëîâî ìîæåò îêàçàòüñÿ ñàìûì áîëüøèì
            //-----------èùó â predl2
                j=0;
                while (j<=end2-l_slovo && !slova_sovpali)
                {//èùó ñëîâà âî 2ì ïðåäëîæåíèè
                    ch1=predl2[j++];
                    if (ch1==' ' || ch1==',' || ch1=='.' || ch1=='!' || ch1=='?' || ch1==':' || ch1==';' || ch1=='\0')
                    {//åñëè êîíåö ñëîâà
                        slovo2[l_slovo2]='\0';
                        if (strcmp(slovo, slovo2)==0)
                        {
                            slova_sovpali=1;
                            l_big=l_slovo;
                            strcpy(big_slovo, slovo);
                        }else{
                            l_slovo2=0;
                        }
                    }else{
                        slovo2[l_slovo2++]=ch1;
                    }
                }
            }
                
            l_slovo=0;
        }else
        {
            slovo[l_slovo++]=ch;
        }
    }
    puts("Big word:");
    if (slova_sovpali){
        puts(big_slovo);
    }else{
        puts("Net odinakovih slov!");
    }
 }
По крайней мере на этом примере теперь работает. -)
Собственно исправлена одна строка:
slovo[l_slovo+1]='\0';
на
slovo[l_slovo]='\0';
ошибочка конечно глупая, но благодаря ей я вспомнил, почему я разлюбил C. -)
wordman вне форума Ответить с цитированием
Старый 25.03.2016, 09:27   #18
wordman
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 13
По умолчанию

Блин, опять маленькая ошибочка.
Выдаёт не самое большое слово. Сейчас опять поправлю
сорри........
wordman вне форума Ответить с цитированием
Старый 25.03.2016, 09:44   #19
wordman
Пользователь
 
Регистрация: 15.03.2016
Сообщений: 13
По умолчанию

Код:
#include <stdio.h>
#include <string.h>
int main()
{
    char ishod[100], predl1[100]="", predl2[100]="", slovo[100]="", big_slovo[100]="", slovo2[100]="", ch1, ch;
    int l_ishod, end1=0, end2=0, l_pred1=0, l_pred2=0, i, j, l_big=0, l_slovo=0, newslovo=1, slova_sovpali=0, i_slova=0, l_slovo2=0, est_big_slovo=0;
    puts("Vvedite predlogeniy!");
    gets(ishod);
    l_ishod=strlen(ishod);
//----------------------------------ðàçáèâêà ñòðîêè ââîäà íà 2 ïðåäëîæåíèÿ
    for (i=0;i<=l_ishod; i++)
    {
        if (ishod[i]=='.' || ishod[i]=='!' || ishod[i]=='?')
        {
            if (end1==0)
            {
                end1=i;
                predl1[i]=ishod[i];
                predl1[i+1]='\0';
            }
            else 
            {
                predl2[end2]=ishod[i];
                predl1[end2+1]='\0';
                end2=i+1;
                break;
            }
        }
        if (end1==0) predl1[i]=ishod[i];
        else if (ishod[i]!='.' && ishod[i]!='!' && ishod[i]!='?') predl2[end2++]=ishod[i];
    }
//--------------------------------------------------
    l_slovo=0;
    for (i=0; i<=end1; i++)
    {//ïðîõîæó ïåðâîå ïðåäëîæåíèå ïî âñåì ñëîâàì
        ch=predl1[i];
        if (ch==' ' || ch==',' || ch=='.' || ch=='!' || ch=='?' || ch==':' || ch==';')
        {//------------------åñëè ñëîâî çàêîí÷èëîñü
            slovo[l_slovo]='\0';
        //--------------------------------------------
            if (l_slovo>l_big)
            {//ñëîâî ìîæåò îêàçàòüñÿ ñàìûì áîëüøèì
            //-----------èùó â predl2
                j=0;
                slova_sovpali=0;
                while (j<=end2-l_slovo && !slova_sovpali)
                {//èùó ñëîâà âî 2ì ïðåäëîæåíèè
                    ch1=predl2[j++];
                    if (ch1==' ' || ch1==',' || ch1=='.' || ch1=='!' || ch1=='?' || ch1==':' || ch1==';' || ch1=='\0')
                    {//åñëè êîíåö ñëîâà
                        slovo2[l_slovo2]='\0';
                        if (strcmp(slovo, slovo2)==0)
                        {
                            slova_sovpali=1;
                            est_big_slovo=1;
                            l_big=l_slovo;
                            strcpy(big_slovo, slovo);
                        }else{
                            l_slovo2=0;
                        }
                    }else{
                        slovo2[l_slovo2++]=ch1;
                    }
                }
            }
                
            l_slovo=0;
        }else
        {
            slovo[l_slovo++]=ch;
        }
    }
    puts("Big word:");
    if (est_big_slovo){
        puts(big_slovo);
    }else{
        puts("Net odinakovih slov!");
    }
 }
Этот вариант вроде на всех примерах прошёл.
ps: малёхо стыдно за недостаточное тестирование перед первым выкладыванием.
wordman вне форума Ответить с цитированием
Старый 26.03.2016, 00:48   #20
Chainik!
Форумчанин
 
Регистрация: 10.11.2008
Сообщений: 120
По умолчанию

Протестировал твою программу, и опять неудача!!
Изображения
Тип файла: png Screenshot_1.png (5.4 Кб, 67 просмотров)
помог - жми на весы
Chainik! вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка строк shadow155 Помощь студентам 1 10.09.2015 10:55
Три задачи на Delphi (Паскаль): обработка строк, обработка множеств, работа с типизированным файлом Тедеев Помощь студентам 11 13.12.2013 13:38
Обработка Строк katya_bush Паскаль, Turbo Pascal, PascalABC.NET 4 14.11.2011 21:50
Обработка строк в С++ МаркиЗа Фриланс 10 13.06.2010 17:35
Обработка строк Dmitriy1989100 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 02.11.2009 22:28