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

Вывести строку в два столбца: в одном строчные буквы, во втором прописные - C++

Восстановить пароль Регистрация
 
Pro100_John
 Аватар для Pro100_John
3 / 3 / 0
Регистрация: 10.05.2011
Сообщений: 24
24.02.2013, 23:03     Вывести строку в два столбца: в одном строчные буквы, во втором прописные #1
помогите нубу написать программу)
Вводные данные: 20 букв
Представление выводных данных: два столбца: в одном строчные, во втором прописные..
Есть мысли и идеи.. все пока как-то никак..
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thirteen
 Аватар для Thirteen
32 / 32 / 4
Регистрация: 04.07.2012
Сообщений: 50
24.02.2013, 23:36     Вывести строку в два столбца: в одном строчные буквы, во втором прописные #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
#include <iostream>
#define SIZE 20
 
using namespace std;
 
int main()
{
    char InputString[SIZE] = {0};
    char Capital[SIZE] = {0};
    char Lower[SIZE] = {0};
    char TheRest[SIZE] = {0};
    int NumberOfCapital = 0, NumberOfLower = 0, NumberOfTheRest = 0;
    //Inputs
    cin >> InputString;
    for(int i = 0; i < SIZE; i++)
    {
        //Check if letters are capital
        if(InputString[i] >= 'A' && InputString[i] <= 'Z')
        {
            //Copy to capital array
            Capital[NumberOfCapital] = InputString[i];
            NumberOfCapital++;
        }
        //Check if letters are lower
        else if(InputString[i] >= 'a' && InputString[i] <= 'z')
        {
            //Copy to lower array
            Lower[NumberOfLower] = InputString[i];
            NumberOfLower++;
        }
        //For the rest characters
        else
        {
            TheRest[NumberOfTheRest] = InputString[i];
            NumberOfTheRest++;
        }
    }
    //Terminator-byte
    Capital[NumberOfCapital] = '\0';
    Lower[NumberOfLower] = '\0';
    TheRest[NumberOfTheRest] = '\0';
    //Output
    cout << Capital << endl << Lower << endl << TheRest << endl;
    return 0;
}
Вот совсем нубская реализация. По ascii коду символа. Логика прозрачнейшая просто. До каких-то других способов не могу додуматься. В string.h наверняка есть что-нибудь для такого случая.
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
25.02.2013, 00:15     Вывести строку в два столбца: в одном строчные буквы, во втором прописные #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Жуткий быдлокод, за то аж в три колонки
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
#include <iostream>
#include <string>
#include <set>
#include <vector>
#include <cctype>
#include <algorithm>
 
int main() {
    std::string s;
    
    while ( std::cout << "String: " && std::getline(std::cin, s) && ! s.empty() ) {
        std::set<char> lowers, uppers, others;
        for ( std::string::const_iterator i = s.begin(); i != s.end(); ++i ) {
            if ( isupper(*i) )
                uppers.insert(*i);
            else if ( islower(*i) )
                lowers.insert(*i);
            else
                others.insert(*i);
        }
        
        std::cout << "Uppers\tLowers\tOthers" << std::endl;
        int nrows = std::max(std::max(uppers.size(), lowers.size()), others.size());
        std::vector<char> vuppers(uppers.begin(), uppers.end()), vlowers(lowers.begin(), lowers.end()), vothers(others.begin(), others.end());
        for ( int i = 0; i < nrows; ++i )
            std::cout << ( i < vuppers.size() ? vuppers[i] : ' ' ) << '\t'
                        << ( i < vlowers.size() ? vlowers[i] : ' ' ) << '\t'
                        << ( i < vothers.size() ? vothers[i] : ' ' ) << std::endl;
    }
    
    return 0;
}
Вывести строку в два столбца: в одном строчные буквы, во втором прописные
booker
 Аватар для booker
23 / 23 / 2
Регистрация: 21.11.2012
Сообщений: 106
25.02.2013, 01:01     Вывести строку в два столбца: в одном строчные буквы, во втором прописные #4
Цитата Сообщение от Thirteen Посмотреть сообщение
В string.h наверняка есть что-нибудь для такого случая.

ctype.h


функции islower(), isupper ().
Pro100_John
 Аватар для Pro100_John
3 / 3 / 0
Регистрация: 10.05.2011
Сообщений: 24
25.02.2013, 16:42  [ТС]     Вывести строку в два столбца: в одном строчные буквы, во втором прописные #5
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
#include <stdafx.h>
#include <iostream>
#define SIZE 20
 
using namespace std;
 
int main()
{
    char InputString[SIZE];
    char Capital[SIZE];
    char Lower[SIZE];
    char TheRest[SIZE];
    int NumberOfCapital = 0, NumberOfLower = 0, NumberOfTheRest = 0;
 
    cin >> InputString;
    for(int i = 0; i < SIZE; i++)
    {
        if(InputString[i] >= 'A' && InputString[i] <= 'Z')
        {
            Capital[NumberOfCapital] = InputString[i];
            NumberOfCapital++;
        }
        else if(InputString[i] >= 'a' && InputString[i] <= 'z')
        {
            Lower[NumberOfLower] = InputString[i];
            NumberOfLower++;
        }
        else
        {
            TheRest[NumberOfTheRest] = InputString[i];
            NumberOfTheRest++;
        }
    }
  Capital[NumberOfCapital] = '\0';
    Lower[NumberOfLower] = '\0';
    TheRest[NumberOfTheRest] = '\0';
 
    cout << Capital << endl << Lower << endl << TheRest << endl;
    return 0;
}
переработал и исправил ошибки)) все работает)) спасибо всем))
Yandex
Объявления
25.02.2013, 16:42     Вывести строку в два столбца: в одном строчные буквы, во втором прописные
Ответ Создать тему
Опции темы

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