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

Упорядочить слова в порядке возрастания их длины - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
alena900
3 / 3 / 0
Регистрация: 13.10.2009
Сообщений: 78
20.01.2011, 20:01     Упорядочить слова в порядке возрастания их длины #1
Дано предложение, слова в нем разделены пробелом. Упорядочить слова в порядке возрастания их длины.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2011, 20:01     Упорядочить слова в порядке возрастания их длины
Посмотрите здесь:

Переписать в выходную строку слова из входной строки в порядке возрастания их длины C++
Упорядочить цифры в порядке возрастания/убывания C++
Переписать в выходную строку слова из входной строки в порядке возрастания их длины. C++
C++ Упорядочить файл в порядке возрастания числового поля
Работа с файлами (Скопировать слова из одного текстового файла в другой, расположив их в нем в порядке возрастания длины) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ssXXss
263 / 185 / 10
Регистрация: 15.01.2011
Сообщений: 668
21.01.2011, 03:44     Упорядочить слова в порядке возрастания их длины #2
не много не то но смысл будет понятен , также можно использовать функции str... для работы со строками из srting.h , ну вообще варантов много.
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
// primer1.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include <windows.h> // только для Sleep() а так не нужен 
#include <locale.h>
 
//using namespace std;
char test_string [] = "Вася пошел в магазин за спичками но по дороге напился водки.";
int _tmain(int argc, _TCHAR* argv[])
{
    //char test_string [] = "Вася пошел в магазин за спичками но по дороге напился водки.";
    int i = 0,x = 0;
    char test[20] = {0};
    setlocale( LC_ALL, "Russian" );//для нормального отбражения русских букв
    printf("Предложение для разбора - \" %s \"\n",test_string);
    do 
    {
        test[x] = test_string[i];
        if(test_string[i] == ' ' || test_string[i] == '.')
        {
            if(test_string[i] == '.') // если конец строки то уберем точку
            {
                test[x] = '\0';
            }
            printf("\tСлово - %s %d - букв/а/ы \n",test,x);
            ZeroMemory(test,20);//раз приинклюдили win..h  - будем пользоваться ))
            x = -1;
            Sleep(500);              // полюбуемся чуток.
            
        }
        i++;x++;
    } while (i != strlen(test_string));
    printf("Короче Вася редиска !!!");
    Sleep(5000);
    return 0;
}
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
21.01.2011, 09:57     Упорядочить слова в порядке возрастания их длины #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>
#include<sstream>
#include<set>
using namespace std;
 
struct comp{
    bool operator()(string a, string b){
        return a.size()<b.size();
    }
};
 
int main(){
    string s;
    getline(cin, s);
    stringstream ss(s);
    multiset<string, comp> se;
    while(ss>>s) se.insert(s);
    for(auto it=se.begin(); it!=se.end(); ++it)
        cout<<*it<<' ';
}
Yudgin
1 / 1 / 0
Регистрация: 08.08.2013
Сообщений: 24
03.12.2013, 03:17     Упорядочить слова в порядке возрастания их длины #4
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*Дана строка предложение. Упорядочить все слова в предложении по их длине в порядке
возрастания.*/
 
#include <stdio.h>
#include <string.h>
#include <locale.h>
#include <ctype.h>
 
int main(int argc, char *argv[])
{
  setlocale(LC_ALL,"");
  char str[100];
  printf("Введите предложение:\n");
  gets(str);
  int n=strlen(str);
  char str3[100]={0};
 
  // запись в дмумерный массив
  char str2[80][80]={0};
  int s=1;
  for(int i=0, j=0, y=0; str[i]!=0; i++)
  {
    if(str[i]==' '&&str[i-1]!=' ')
    {
      s++;
      j++;
      y=0;
      continue;
    }
    str2[j][y]=str[i];
    y++;
  }
 
  // построчно количество букв и позиция
  int a[s][2];
  for(int i=0; i<s; i++)
    a[i][0]=strlen(str2[i]);
  for(int i=0; i<s; i++)
    a[i][1]=i;
 
  //сортировка количества букв
  int b[2];
  for(int i=0; i<s; i++)
  {
    for(int j=i+1; j<s; j++)
    {
      if(a[j][0]>a[i][0])
      {
         for(int y=0; y<2; y++)
           b[y]=a[i][y];
         for(int y=0; y<2; y++)
           a[i][y]=a[j][y];
         for(int y=0; y<2; y++)
           a[j][y]=b[y];
      }
    }
  }
  
  //сортировка строки
  for(int i=0, p=0; i<s, p<n; i++)
  {
    int y=a[i][1];
    for(int j=0; j<a[i][0]; j++)
    {
      str3[p]=str2[y][j];
      p++;
    }
    str3[p]=' ';
    p++;
  }
 
  puts(str3);
    return 0;
}
Yandex
Объявления
03.12.2013, 03:17     Упорядочить слова в порядке возрастания их длины
Ответ Создать тему
Опции темы

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