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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 25, средняя оценка - 4.96
keep-it-real
25 / 0 / 1
Регистрация: 25.05.2010
Сообщений: 47
#1

Найти самое короткое из слов в предложении - C++

04.11.2011, 12:05. Просмотров 3510. Ответов 46
Метки нет (Все метки)

задание на строки
Дана символьная строка.Слово-последовательность символов между пробелами, не содерж. пробелы внутри себя.Найти самое короткое из слов в предложении
Как написать?надо написать на обычном элементарном си, т.к. только начинаю программировать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2011, 12:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти самое короткое из слов в предложении (C++):

Даны два предложения. Найти самое короткое из слов первого предложения, которого нет во втором предложении - C++
Здравствуйте. Есть задача (написана в теме), есть решение: #include <iostream> #include <string> #include <sstream> ...

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

Найти самое длинное и самое короткое слово в предложении - C++
Составить и отладить программу, которая выполняет следующие действия. В заданном тексте из нескольких предложений найти самое длинное и...

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

Найдите самое длинное, и самое короткое слово в заданном предложении - C++
Найдите самое длинное и самое короткое слово в заданном предложении.

Заданный список из 8 слов. Найти самое короткое слово из списка - C++
Ребята, кто сможет такое сделать ? Не имею понятие как вообще это сделать, заранее благодарю. Заданный список из 8 слов. Найти самое...

46
keep-it-real
25 / 0 / 1
Регистрация: 25.05.2010
Сообщений: 47
05.11.2011, 10:48  [ТС] #16
-=ЮрА=-, да я не обижаюсь просто пока что для меня сложновато быстро соображать в программах, поэтому сидела разбиралась с вашей все утро, единственное почему-то у меня не поддерживается библиотека #include <conio.h> а соответственно и функция getch();
0
-=ЮрА=-
Заблокирован
Автор FAQ
05.11.2011, 12:52 #17
Цитата Сообщение от keep-it-real Посмотреть сообщение
единственное почему-то у меня не поддерживается библиотека #include <conio.h> а соответственно и функция getch();
- ну ок закоменть
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
#include <conio.h>
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
printf("Press any key to continue\n");
* * * * getch();
- а какой компилятор используешь???
0
keep-it-real
25 / 0 / 1
Регистрация: 25.05.2010
Сообщений: 47
05.11.2011, 14:32  [ТС] #18
я коментила и вообще не работала прога, выдает
Введите строку jdj djs d

Самое короткое слово:

Добавлено через 1 час 5 минут
думаю, мб лучше с указателями попробовать, а если рассматривать вариант товарища accept, то можно поменять ли вместо заданной в программе строки на вводимую строку при запуске программы
0
-=ЮрА=-
Заблокирован
Автор FAQ
05.11.2011, 14:44 #19
Цитата Сообщение от keep-it-real Посмотреть сообщение
я коментила и вообще не работала прога, выдает
Введите строку jdj djs d
- введите туже строку только наоборот и посмотрите что будет, признаю я недопаял обработку последнего слова - если будете вводить пробел после последнего слова, то отработет и с jdj djs d !Ну вот взяли бы вдумались в алгоритм и доработали бы - а так только всё готовое надо, так вы ничему не научитесь!Ну да ладно вы не очень то любезны так как позволил себе прямо сказать что с малыми знаниями кидаться решать задачи посложней нерационально, помогать желание отпало...
0
keep-it-real
25 / 0 / 1
Регистрация: 25.05.2010
Сообщений: 47
05.11.2011, 15:02  [ТС] #20
-=ЮрА=-, да не, сейчас попробую с вашей разобраться) просто, когда не получается, уже хочется какого-нибудь результата достичь

Добавлено через 4 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
введите туже строку только наоборот и посмотрите что будет, признаю я недопаял обработку последнего слова - если будете вводить пробел после последнего слова, то отработет и с jdj djs d
а все равно не выдает
0
-=ЮрА=-
05.11.2011, 15:13
  #21

Не по теме:

Цитата Сообщение от keep-it-real Посмотреть сообщение
а все равно не выдает
ещё раз на пальцах:
jdj djs d + пробел при вводе после последней d !!!

0
keep-it-real
25 / 0 / 1
Регистрация: 25.05.2010
Сообщений: 47
05.11.2011, 15:31  [ТС] #22
да я не глупая, я так и вводила, все равно))
не знаю почему

Добавлено через 6 минут

Не по теме:

ладно, пойду дальше думать

0
-=ЮрА=-
Заблокирован
Автор FAQ
05.11.2011, 16:49 #23
Цитата Сообщение от keep-it-real Посмотреть сообщение
да я не глупая, я так и вводила, все равно))
не знаю почему
- какой компилятор у Вас?Я сейчас подпаяю...
1
keep-it-real
05.11.2011, 16:51  [ТС]
  #24

Не по теме:

всё! я разобралась) моя ошибка! брат еще помог)

-=ЮрА=-, спасибо вам большое за большую часть проделанной работы)

0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
05.11.2011, 16:56 #25
Цитата Сообщение от keep-it-real
а если рассматривать вариант товарища accept, то можно поменять ли вместо заданной в программе строки на вводимую строку при запуске программы
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
50
51
52
53
54
55
56
57
 
#include <stdio.h>
#include <string.h> 
 
void rmlf(char *s);
 
int main(void)
{
    char line[1000], *p;
    char word[100], tmp[100];
    int len, minlen;
    int c, state;
    
    fputs("Enter: ", stdout);
    fflush(stdout);
    if (fgets(line, sizeof line, stdin) == NULL)
        return 1;
    rmlf(line);
    /* strcpy(line, "abcdab c defgababcd"); */
        
    minlen = 0;
    state = 0;
    for (p = line; (c = *p) != '\0'; p++)
        if (state == 0) {
            if (c != ' ') {
                len = 0;
                p--;
                state = 1;
            }
        } else {
            if (c != ' ') {
                tmp[len++] = c;
                tmp[len] = '\0';
            }
            if (c == ' ' || *(p + 1) == '\0') {
                if (minlen == 0 || len < minlen) {
                    minlen = len;
                    strcpy(word, tmp);
                }
                state = 0;
            }
        }
    
    printf("Shortest: %s\n", word);
    
    return 0;
}
 
void rmlf(char *s)
{
    if (*s != '\0') {
        while (*(s + 1) != '\0')
            s++;
        if (*s == '\n')
            *s = '\0';
    }
}
Код
[guest@localhost tests]$ .ansi t.c -o t
[guest@localhost tests]$ ./t
Enter: abcdab c defgababcd
Shortest: c
[guest@localhost tests]$
0
keep-it-real
25 / 0 / 1
Регистрация: 25.05.2010
Сообщений: 47
05.11.2011, 17:04  [ТС] #26
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
#include<stdio.h>
#include<string.h>
int main()
{ char *p;
  char line[1000],word[100], tmp[100];
  int len,minlen;
  int c,state;
  printf("Введите строку\n");
  scanf("%[^\n]",line);
 
  minlen=0;
  state=0;
  for(p=line;(c=*p) != '\0';p++)
    if(state == 0)
    { if(c!= ' ')
      { len=0;
       p--;
       state=1;
       }
     }
     else
     { if (c != ' ')
      { tmp[len++]=c;
        tmp[len]= '\0';
      }
       if (c == ' ' || *(p+1) == '\0')
        { if(minlen == 0 || len < minlen)
          {minlen = len;
           strcpy(word, tmp);
           }
           state=0;
         }
      }
      printf("%s\n",word);
      return 0;
     }
мне кажется и так могло бы работать
0
-=ЮрА=-
05.11.2011, 17:14
  #27

Не по теме:

Цитата Сообщение от keep-it-real Посмотреть сообщение
Не по теме:
всё! я разобралась) моя ошибка! брат еще помог)
-=ЮрА=-, спасибо вам большое за большую часть проделанной работы)
- ну ок тогды

0
accept
4828 / 3249 / 165
Регистрация: 10.12.2008
Сообщений: 10,569
05.11.2011, 17:36 #28
Цитата Сообщение от keep-it-real
мне кажется и так могло бы работать
1) нужно ограничить длину вводимого сообщения шириной поля, чтобы не произошла запись за пределы массива
1.1) эту ширину поля нужно формировать динамически на основе размера массива, а это нужно делать sprintf() и так далее
2) у тебя что-то произошло и нарушилось выравнивание блоков кода, а это очень важная вещь в программировании
3) куда делся void из определения main(), в C грамотно писать с void, иначе получается определение в старом стиле (до 89 года)
0
keep-it-real
25 / 0 / 1
Регистрация: 25.05.2010
Сообщений: 47
06.11.2011, 13:39  [ТС] #29
ничего себе) а я и не знала о таких вещах)
accept, а вы не могли бы закомментировать последнюю программу, чтобы я могла посидеть поразбираться, что где происходит?
0
-=ЮрА=-
06.11.2011, 13:58     Найти самое короткое из слов в предложении
  #30

Не по теме:

keep-it-real, цикл accept почти ничем не отличается от for-ов вместо str[i] идёт инкремент указателей, вам что с указателями нужно???

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2011, 13:58
Привет! Вот еще темы с ответами:

Ввести строку, содержащую несколько слов. Определить самое длинное и самое короткое слово - C++
Здравствуйте, не могли бы мне помочь с кодом. Как его переписать, чтобы программа работала? #include &lt;iostream&gt; #include &lt;cstdlib&gt; ...

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

Даны два предложения. Найти самое короткое из слов первого предложения,которого нет во втором предложений? - C++
Даны два предложения. Найти самое короткое из слов первого предложения,которого нет во втором предложений?

самое короткое слов в строке - C++
Дана строка символов,состоящая из слов,разделенных пробелами. Распечатать исходную строку. Определить самые короткие слова в строке...


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

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

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