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

Строка: Найти в тексте самую большую цифру. - C++

Восстановить пароль Регистрация
 
VirchKS
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 6
05.06.2013, 20:01     Строка: Найти в тексте самую большую цифру. #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
#include<iostream>
int main()
{
    std::string s;
    std::cout<<"Vvedite tekst: ";
    getline(std::cin,s);
    int n=s.size(),p=-49;
    for(int i=0;i<n;i++)
    {
        if(s[i]=='9'){p=9;i=n;}
        else if(s[i]=='8'){p=8;}
        else if(s[i]=='7'){if(p<7){p=7;}}
        else if(s[i]=='6'){if(p<6){p=6;}}
        else if(s[i]=='5'){if(p<5){p=5;}}
        else if(s[i]=='4'){if(p<4){p=4;}}
        else if(s[i]=='3'){if(p<3){p=3;}}
        else if(s[i]=='2'){if(p<2){p=2;}}
        else if(s[i]=='1'){if(p<1){p=1;}}
        else if(s[i]=='0'){if(p<0){p=0;}}
    }
    std::cout<<"V dannom tekste, ";
    if(p!=-49){std::cout<<"maksimal'naja iz imejushhihsja cifr - '"<<p<<"'."<<std::endl;}
    else{std::cout<<"net cifr."<<std::endl;}
}
Однако, если оформить код через функцию, то текст не считывается.
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
#include<iostream>
void f1();
int main()
{
    int a;
    std::cout<<"A=";std::cin>>a;
    switch(a)
    {
        case 1: {f1();break;}
        defalt: {std::cout<<"Oshibka."}
    }
}
void f1()
{
    std::string s;
    std::cout<<"Vvedite tekst: ";
    getline(std::cin,s);
    int n=s.size(),p=-49;
    for(int i=0;i<n;i++)
    {
        if(s[i]=='9'){p=9;i=n;}
        else if(s[i]=='8'){p=8;}
        else if(s[i]=='7'){if(p<7){p=7;}}
        else if(s[i]=='6'){if(p<6){p=6;}}
        else if(s[i]=='5'){if(p<5){p=5;}}
        else if(s[i]=='4'){if(p<4){p=4;}}
        else if(s[i]=='3'){if(p<3){p=3;}}
        else if(s[i]=='2'){if(p<2){p=2;}}
        else if(s[i]=='1'){if(p<1){p=1;}}
        else if(s[i]=='0'){if(p<0){p=0;}}
    }
    std::cout<<"V dannom tekste, ";
    if(p!=-49){std::cout<<"maksimal'naja iz imejushhihsja cifr - '"<<p<<"'."<<std::endl;}
    else{std::cout<<"net cifr."<<std::endl;}
}
С чем это может быть связано?
Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 20:01     Строка: Найти в тексте самую большую цифру.
Посмотрите здесь:

C++ В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов.
C++ найти в тексте самую встречаемую букву
C++ Определить самую большую отрицательную и самую маленькую положительную температуры
C++ Найти в тексте самую длинную последовательность из одинаковых букв
C++ Вычеркните из заданного целого числа самую большую цифру
C++ Найти самую большую цифру целого числа.
"Вычеркнуть" из заданного целого числа самую большую цифру (используя цикл for) C++
C++ Найти самую большую последовательность слов длины которых образуют геометрическую прогрессию

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
05.06.2013, 20:09     Строка: Найти в тексте самую большую цифру. #2
Перед getline дописать:
C++
1
std::cin.sync();
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4927 / 2670 / 243
Регистрация: 29.11.2010
Сообщений: 7,429
05.06.2013, 21:12     Строка: Найти в тексте самую большую цифру. #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <string>
#include <cctype>
 
int main()
{
    std::string str;
    std::getline(std::cin, str);
    int max = -1;
    for (auto &c : str)
        if (isdigit(c) && c - '0' > max)
            max = c - '0';
 
    if (max == -1)
        std::cout << "No digits\n";
    else
        std::cout << "Max digit: " << max << std::endl;
}
Yandex
Объявления
05.06.2013, 21:12     Строка: Найти в тексте самую большую цифру.
Ответ Создать тему
Опции темы

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