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

Отсортировать слова по длине - C++

Восстановить пароль Регистрация
 
VLAD1M1R
0 / 0 / 0
Регистрация: 04.11.2009
Сообщений: 55
23.01.2010, 14:30     Отсортировать слова по длине #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
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
 
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{ int a,i,k=0, b=0, j=0,p,v;
string w[100], b, h[10], temp;
cin>>b;
ifstream f("1.txt");
while (!f.eof())
{f>>w;
for (i=0; i<strlen(w);i=i+2)
  if (w[i]==e | w[i]==y | w[i]==u | w[i]==i | w[i]==o | w[i]==a)
   k=k+1;
for (i=1; i<strlen(w);i=i+2)
  if (w[i]==e | w[i]==y | w[i]==u | w[i]==i | w[i]==o | w[i]==a)
   b=b+1;
if (b==k)
{j=j+1;
h[j]=w;
b=0; k=0;}
else 
{b=0; k=0;}
}
 
for (z=0; z<j; z++)
for (p=0; p<j; p++)
if (strlen(h[p])>strlen(h[p+1]))
 {temp=h[p];
 h[p]=h[p+1]
 h[p+1]=temp;
 }
 
for (v=0; v<j+1: v++)
cout<<h[v]<<endl;
 
 return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.01.2010, 14:30     Отсортировать слова по длине
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TanT
эволюционирую потихоньку
 Аватар для TanT
464 / 462 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
23.01.2010, 20:20     Отсортировать слова по длине #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
// Вывести на экран все слова в которых количество гласных, стоящих на позициях с четными и нечетными номерами одинакова.
 
bool CheckOnVowel(char s)
{
    switch(s) {
        case 'e':
        case 'E':
        case 'u':
        case 'U':
        case 'i':
        case 'I':
        case 'o':
        case 'O':
        case 'a':
        case 'A':
        case 'y':
        case 'Y': return true;
    }
    return false;
}
 
bool CheckNumberVowel(string &str) 
{
 
    int numEven=0, numOdd=0;
    for (int i=str.length(); --i>=0;)   
    {
        if(CheckOnVowel(str[i])==true)  
        {
          if(i%2==0) // если номер позиции чётный
                ++numEven; // увеличиваем счётчик
            else         // иначе уменьшаем, в итоге если счётчик 0 то количество совпало 
                ++numOdd;  
        } // end if(CheckOnVowel(str[i])==true)             
    } // end for (int i=str.length(); --i>=0) 
 
    if(numOdd==numEven) return true;
 
    return false;
} // end CheckNumberVowel
 
 
bool CompareFun(string x, string y)
{
  if(x.length()<y.length()) return true;
 
    return false;
}
 
 
 
int main()
{
    char *File="text.txt";
    string str;
    int k=0;
    vector<string> storage; 
 
    ifstream f(File);
    if (!(f.is_open())) { // проверка наличия файла с тестом
        cout<<"ERROR: not file "<<File;
        system("PAUSE");
        return 1;
    }
    
    while(!f.eof()) { // чтении из файла
        
        f>>str;
        if(CheckNumberVowel(str)==true) storage.push_back(str);
    }
 
    sort(storage.begin(), storage.end(), CompareFun);
 
    for (vector<string>::iterator it =storage.begin(); it!=storage.end(); it++)
        cout<<*it<<endl;
 
    f.close();
    cout << endl;
    system("PAUSE");
    return 0;
}
Yandex
Объявления
23.01.2010, 20:20     Отсортировать слова по длине
Ответ Создать тему
Опции темы

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