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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2014, 18:50   #1
Vania19961712
Пользователь
 
Регистрация: 23.11.2013
Сообщений: 20
По умолчанию Программа со строками

Здраствуйте ,помогите мне пожалуйста с программой. Я вот не пойму как найти из введеного предложения самое короткое слово и вывести его наоборот , если самых коротких слов больше ,то вывести все самые короткие слова вывести наоборот.
Vania19961712 вне форума Ответить с цитированием
Старый 03.03.2014, 22:13   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Наработки?
Streletz вне форума Ответить с цитированием
Старый 04.03.2014, 11:56   #3
Vania19961712
Пользователь
 
Регистрация: 23.11.2013
Сообщений: 20
По умолчанию

Код:
    #include <iostream>
#include <string>
#include <windows.h>
 #include <conio.h>
using namespace std;
int main()
{

	char min[30];
    string s;
    int minlen,h;
    int len;
    minlen=100;
    cin>>s;
        len=s.size();
        if(len<minlen)
        {           
            minlen=len;
            for(int a=0;a!=30;a++)
                min[a]=0;
            for(int x=0;x!=s.size();x++)
            {
       min[x]=s[x];
int h=strlen(min);
			}
        }
    cout<<"Min slovo: "<<endl;
    for(int o=0;min[o]>0;o++)
        cout<<min[o];
        for(int d=h;d<0;d--)
        cout<<min[d];
        getch();
        return 0;
}
Vania19961712 вне форума Ответить с цитированием
Старый 04.03.2014, 14:45   #4
Vania19961712
Пользователь
 
Регистрация: 23.11.2013
Сообщений: 20
По умолчанию

Код:
#include <iostream>
#include <cstring>
#include <conio.h>
using namespace std;


int main()
{
      char str[30];
      cout << "Input the string:" << endl;
      cin.getline(str, 30);

      char *pword = strtok(str, " ,-.?!");
      char pmin_word[30] = "<No min word>";
      if(pword)
            strcpy(pmin_word, pword);
      int min_len = (pword ? strlen(pword) : 0), next_len = 0;

      while(pword)
      {
            if((next_len = strlen(pword)) < min_len)
            {
                  strcpy(pmin_word, pword);
                  min_len = next_len;
            }
            pword = strtok(NULL, " ,-.?!");
      }

      cout << "The min word is " << pmin_word << endl;
     getch();
	  return 0;
}
Vania19961712 вне форума Ответить с цитированием
Старый 04.03.2014, 15:58   #5
Smogg
Участник клуба
 
Регистрация: 14.06.2011
Сообщений: 1,138
По умолчанию

  • 1. разбить предложение на слова
  • 2. определить длину самого короткого слова
  • 3. собрать массив слов с определенной на предыдущем шаге длиной
  • 4. каждый из элементов массива вывести наоборот, если массив получился пустым - показать сообщение о такой неприятности

Или немного по-другому:
  • а) у Вас должно быть три переменных - интегер длинноты (изначально иницированный макс. значением), массив указателей на слова (изначально обнуленный), интегер количества найденных слов (изначально обнуленный) .
  • б) в цикле применения strtok:
    • б.1) надо определить длину нового выделенного слова,
    • б.2) сравнить с текущей длиной:
      • б.2.1) если меньше -
        1. приравнять количество найденных слов нулю
        2. добавить в массив указатель на найденное слово, на место [количествj слов]
        3. увеличить количество найденных слов на единицу
        4. приравнять текущую мин длину найденной мин. длине
      • б.2.1) если равно -
        1. добавить в массив указатель на найденное слово, на место [количествj слов]
        2. увеличить количество найденных слов на единицу
      • б.2.1) если больше -
        1. делать ничего
  • в) вывести все слова из найденного массива справа налево, т.е. побуквенно
    • как это делать - сами придумайте алгоритм

Последний раз редактировалось Smogg; 04.03.2014 в 16:02.
Smogg вне форума Ответить с цитированием
Старый 07.03.2014, 00:54   #6
vvmcpp
Форумчанин
 
Аватар для vvmcpp
 
Регистрация: 11.12.2010
Сообщений: 116
По умолчанию

У меня получилось вывести наоборот и посчитать пробелы:

Код:

#include <cstdlib>
#include <iostream>
/*
 задача 
 самое короткое слово и вывести его наоборот ,
 если самых коротких слов больше ,то вывести все самые короткие слова вывести наоборот.
 
 Вопрос - можно ли применить стандартный алгоритм для массивов
в смысле поиска коротких слов? из 
 
*/

using namespace std;


// сколько пробелов
bool found_probel(char ch)
   {
        return ch==' ';
    }

int main(int argc, char *argv[])
{
    char str[]="dfdf dfd dfdf sdsds sdsd";
    // найти самое короткое или все самые короткие
    int number_of_probel=0;
    //1. разбить на слова
    
      // считаем пробелы   
     number_of_probel=count_if(str,str+strlen(str),found_probel);
    
    cout<<"Probelov = "<<number_of_probel<<endl;
    
    // обращаем строку -вывести наоборот
    reverse(str,str+strlen(str));
    
    cout << "Press the enter key to continue ...";
    cin.get();
    return EXIT_SUCCESS;
}

Можно конечно самому сочинить как найти короткие слова
например в такой конструкции:
Пока не встретился конец строки произвести расчеты:
Код:
 while(*str != '\0') 
    { 
}
Но скорее всего есть более простое, какое-то, решение в стиле STL
из <algorithm>
vvmcpp вне форума Ответить с цитированием
Старый 07.03.2014, 16:15   #7
Vania19961712
Пользователь
 
Регистрация: 23.11.2013
Сообщений: 20
По умолчанию

Спасибо , но я уже сам написал код .
Vania19961712 вне форума Ответить с цитированием
Старый 07.03.2014, 16:17   #8
Vania19961712
Пользователь
 
Регистрация: 23.11.2013
Сообщений: 20
По умолчанию

<algorithm> ,а до этого мы еще в техникуме не дошли)
Vania19961712 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа со строками (C++) Ligeros905 Помощь студентам 6 18.12.2013 14:26
Программа со строками Seferus Паскаль, Turbo Pascal, PascalABC.NET 1 29.06.2012 01:12
программа в с++ тема работа со строками катерина11 Помощь студентам 7 25.04.2011 12:06
программа со строками.!!!! radeon37 Паскаль, Turbo Pascal, PascalABC.NET 0 20.05.2010 17:58
программа со строками в Си champion92 Общие вопросы C/C++ 2 02.12.2009 16:52