Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
VirchKS
0 / 0 / 0
Регистрация: 05.06.2013
Сообщений: 6
#1

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

05.06.2013, 20:01. Просмотров 456. Ответов 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
#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;}
}
С чем это может быть связано?
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 20:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Строка: Найти в тексте самую большую цифру. (C++):

Найти самую большую цифру целого числа. - C++
Помогите, пожалуйста, решить задачу в С++. Найти самую большую цифру целого числа.

Определить самую большую четную и самую маленькую нечетную цифру в матрице и сложить их - C++
Помогите решить задачу:

Вычеркните из заданного целого числа самую большую цифру - C++
Помогите пожалуйста реализовать 2 задачи через циклы:do, do...while или for 1.Вычеркните из заданного целого числа самую большую цифру. ...

"Вычеркнуть" из заданного целого числа самую большую цифру (используя цикл for) - C++
&quot;Вычеркнуть&quot; из заданного целого числа самую большую цифру используя цикл for

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

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

2
BumerangSP
4287 / 1409 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
05.06.2013, 20:09 #2
Перед getline дописать:
C++
1
std::cin.sync();
1
MrGluck
Модератор
Эксперт CЭксперт С++
7524 / 4662 / 704
Регистрация: 29.11.2010
Сообщений: 12,733
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;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2013, 21:12
Привет! Вот еще темы с ответами:

Найти самую большую серию подряд стоящих четных элементов массива - C++
Задание: В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов. Код: #include &lt;iostream&gt; using...

Найти самую большую последовательность слов длины которых образуют геометрическую прогрессию - C++
В предложении найти самую длинную последовательность слов, длины которых образуют геометрическую прогрессию. Пример. Предложение ...

В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов. - C++
В заданном массиве целых чисел найти самую большую серию подряд стоящих четных элементов. Очень нужно. Заранее спасибо!

Найти самую повторяющуюся цифру в массиве цифр - C++
Дано N чисел и N цифр. Напишите программу которая находит самую повторяющуюся цифру в массиве . Входные данные ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru