Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
brise
0 / 0 / 0
Регистрация: 06.03.2011
Сообщений: 4
#1

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

16.05.2011, 13:10. Просмотров 623. Ответов 6
Метки нет (Все метки)

Здравствуйте!

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

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;
         }
    }}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.05.2011, 13:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти в каждой строке текста слова наименьшей длины и вывести на экран (C++):

Выбрать из заданного текста слова заданной длины и напечатать их по одному на каждой строке - C++
Выбрать из заданного текста слова заданной длины и напечатать их по одному на каждой строке.

Вывод на экран слов в порядке убывания их длины в каждой строке текста - C++
Здравствуйте товарищи, никак не получается написать функцию сортировки слов в порядке убывания их длины для каждой строки текста, очень...

Вывести на экран слова текста в порядке невозрастания их длины - C++
Из произвольного текста, содержащего не более 10 строк, в каждой строке не более 80 символов, вывести на экран слова в порядке не...

Из введенного текста распечатать все слова наименьшей длины - C++
Нужна помощь с задачкой... надо решить на простом Си... вот собственно она: Из введенного текста распечатать...

Вывести последнее слово текста наименьшей длины - C++
Дан текстовый файл. Вывести последнее слово текста наименьшей длины. Словом считать набор символов, не содержащий пробелов и ограниченный...

Дана строка, вывести слова наименьшей длины в порядке возрастания - C++
Здравствуйте! Помогите, пожалуйста, с программой: дана строка, вывести слова наименьшей длины в порядке возрастания.

6
LineStown
16.05.2011, 13:12
  #2

Не по теме:

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

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

Добавлено через 1 минуту
Понятно, если оставить minLen = 0, то условие len<minLen выполняться не сможет. А задать его другим числом тоже фигня какая-то получается. Я вообще кисель >.<
0
Kastaneda
Jesus loves me
Эксперт С++
4689 / 2893 / 236
Регистрация: 12.12.2009
Сообщений: 7,355
Записей в блоге: 2
Завершенные тесты: 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;
}
В духе С )
0
16.05.2011, 14:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.05.2011, 14:56
Привет! Вот еще темы с ответами:

Вывести на экран порядковый номер слова максимальной длины и номер позиции в строке, с которой оно начинается - C++
и так, вот условие: дана строка символов, состоящая из произвольного текста, слова разделены пробелами. Вывести на экран порядковый номер...

Определить слова наибольшей и наименьшей длины и величину длины. - C++
Дано предложение (символьная строка, где слова отделяются друг от друга запятой). Определить слова наибольшей и наименьшей длины и...

В каждой строке найти минимальный элемент, затем среди них найти максимальное и вывести на экран индекс этого элемента - C++
Здравствуйте! Помогите, пожалуйста, с задачей: В двумерном массиве все числа различны. В каждой строке найти минимальный элемент, затем...

В строке найти и вывести на экран все слова длиною в три символа - C++
Доброго дня, помогите пожалуйста с C++. Вот условие: 4. В строке найти и вывести на экран все слова длиною в три символа(Описать две...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru