Форум программистов, компьютерный форум CyberForum.ru

Найти в каждой строке текста слова наименьшей длины и вывести на экран - C++

Восстановить пароль Регистрация
 
brise
0 / 0 / 0
Регистрация: 06.03.2011
Сообщений: 4
16.05.2011, 13:10     Найти в каждой строке текста слова наименьшей длины и вывести на экран #1
Здравствуйте!

Подскажите, пожалуйста, как исправить код, чтобы программа находила в каждой строке текста слова наименьшей длины и выводила на экран?
То, что я написала, ищет максимальные слова. А переделать не соображу как.
Вот часть кода:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
while(!feof(F))
                {fgets(s,80,F);
                 
            maxLen = 0;
       int lineLen = strlen(s);
    //Поиск слов с максимальной длиной символов
    
    for(i=0; i < lineLen + 1; i++)
    // i номер позиции в строке
    // len текущий показатель длины слова
    // maxLen длина самого длинного слова
    {
       if(s[i]!=' ' && s[i]!='\n' && i<lineLen-1 && s[i] !=',' && s[i] !='.' && s[i]!='\0')
        {
            len++;
        }
       else
        {
            if(i==lineLen-1){len++;i++;}
            if(len>maxLen){maxLen=len;}
            len=0;
        }
    }
    //зная длину самого длинного слова, заного читаем текст из массива s[] 
    
    printf("\n ");
    for(i=0; i < lineLen + 1; i++)
    {
        if(s[i]!=' ' && s[i]!='\n' && i<lineLen-1 && s[i]!='\0' && s[i]!=',' && s[i]!='.')
         {
            len++;
         }
        else
         {
            if(i==lineLen-1){len++;i++;}
            if(len==maxLen)
             { 
                
                 for(int j=i-maxLen; j<=i; j++)
                 {
                    
                    printf("%c", s[j]); 
                 }
                    printf("\n");
             }
                
            len=0;
         }
    }}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2011, 13:10     Найти в каждой строке текста слова наименьшей длины и вывести на экран
Посмотрите здесь:

Упорядочить в каждой строке текста слова в алфавитном порядке C++
C++ Из введенного текста распечатать все слова наименьшей длины
C++ Найти в строке слова-сообщения, в которых содержатся цифры и вывести их на экран
Выбрать из заданного текста слова заданной длины и напечатать их по одному на каждой строке C++
C++ В строке найти и вывести на экран все слова длиною в три символа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
LineStown
16.05.2011, 13:12
  #2

Не по теме:

Ну вот почему то я не верю, что написав программу на поиск максимума, не можешь переделать на поиск минимума

Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
16.05.2011, 13:16     Найти в каждой строке текста слова наименьшей длины и вывести на экран #3
Цитата Сообщение от brise Посмотреть сообщение
То, что я написала
Ой ли)
C++
1
2
3
//тут было не правильно, удалил
// 20 строка
if(len<minLen){minLen=len;}
если сама написал, то остальное не проблема)
brise
0 / 0 / 0
Регистрация: 06.03.2011
Сообщений: 4
16.05.2011, 13:20  [ТС]     Найти в каждой строке текста слова наименьшей длины и вывести на экран #4
наверное, у меня уже мозг заклинило... Я не так давно изучаю программирование.
Впрочем, речь не об этом. Я была бы благодарна, если бы Вы подсказали, как это сделать, если это не очень для Вас затруднительно.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
16.05.2011, 13:25     Найти в каждой строке текста слова наименьшей длины и вывести на экран #5
brise, на С++ или на С нужно?
brise
0 / 0 / 0
Регистрация: 06.03.2011
Сообщений: 4
16.05.2011, 13:29  [ТС]     Найти в каждой строке текста слова наименьшей длины и вывести на экран #6
На С++.
Поменять знак в 20-ой строке - это и понятно. В том-то и дело, что я не могу разобраться, что дальше делать

Добавлено через 1 минуту
Понятно, если оставить minLen = 0, то условие len<minLen выполняться не сможет. А задать его другим числом тоже фигня какая-то получается. Я вообще кисель >.<
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2011, 14:56     Найти в каждой строке текста слова наименьшей длины и вывести на экран
Еще ссылки по теме:

Дана строка, вывести слова наименьшей длины в порядке возрастания C++
C++ Вывести последнее слово текста наименьшей длины
Вывести на экран порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
16.05.2011, 14:56     Найти в каждой строке текста слова наименьшей длины и вывести на экран #7
Цитата Сообщение от brise Посмотреть сообщение
На С++.
Думаю тебе нужно примерно это:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <cstring>
const char* minword(char*);
//########################
int main(){
    char s[80];
    std::cin.getline(s,79,'\n');
    const char *minwrd=minword(s);
    std::cout<<minwrd<<std::endl;
    delete []minwrd;
        return 0;
}
const char* minword(char *str){
#define DELIM ". ,:;?!"
//#########################
    char *wrd, *minwrd;
    int min;
    wrd=strpbrk(str,DELIM);
    min=(int)(wrd-str);
    minwrd=str;
    do{
        while((*wrd==' ')||(*wrd==',')||(*wrd=='.')||(*wrd==':')||(*wrd==';')||(*wrd=='?')||(*wrd=='!'))++wrd;
        str=wrd;
        wrd=strpbrk(str,DELIM);
        if(min>(int)(wrd-str)){
            min=(int)(wrd-str);
            minwrd=str;
        }
    }while(wrd);
    char *tmp=new char[min+1];
    strncpy(tmp,minwrd,min);
    return tmp;
}
В духе С )
Yandex
Объявления
16.05.2011, 14:56     Найти в каждой строке текста слова наименьшей длины и вывести на экран
Ответ Создать тему
Опции темы

Текущее время: 23:45. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru