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

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

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

Создать програму, которая в символьном масиве находит наибольшое количество цифр идущих подряд - C++

07.12.2012, 01:28. Просмотров 499. Ответов 10
Метки нет (Все метки)

Подскажите как создать програму, которая в символьном масиве находит наибольшое количество цыфр идущих одна за одной(подряд).в С++
Буду рад любой помощи идеи,советы,код что нибудь....
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2012, 01:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создать програму, которая в символьном масиве находит наибольшое количество цифр идущих подряд (C++):

Наибольшее количество идущих подряд цифр - C++
Очень нужно, помогите. Дан текст, содержащий цифры. Найти наибольшее количество идущих подряд цифр.

Найти наибольшее количество подряд идущих цифр - C++
#include<iostream> #include<string> using namespace std; int main() { string str; getline(cin,str); int...

Найти наибольшее количество подряд идущих цифр в строке - C++
Дан текст.Найти наибольшее количество подряд идущих цифр. ПОМОГИТЕ ПОЖАЛУЙСТА...

Найти наибольшее количество подряд идущих цифр в строке - C++
Напишите код пожалуйста к условию: Дан текст; найти наибольшее количество цифр, идущих в нем подряд. Добавлено через 4 часа 33...

Дан текст. Найти наибольшее количество подряд идущих цифр - C++
В общем перешел я с 4 задания по практике c++ на 5 и столкнулся с еще более непонятной хренью :-| Если кто знает помогите сделать код. ...

Дан текст, содержащий цифры. Найти наибольшее количество идущих подряд цифр - C++
дан текст содержащий цифры.найти наибольшее количество идущих подряд цифр

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
PazDim
5 / 5 / 0
Регистрация: 08.08.2011
Сообщений: 93
07.12.2012, 01:34 #2
Цитата Сообщение от FedVetal Посмотреть сообщение
Подскажите как создать програму, которая в символьном масиве находит наибольшое количество цыфр идущих одна за одной(подряд).в С++
Буду рад любой помощи идеи,советы,код что нибудь....
ну... Во-первых, что находится в массиве? Если только числа и пробелы, то дело обстоит так: есть максимальное количество цифр=0, есть текущее количество цифр=0. Есть массив. Перебираем все элементы. Если элемент-цифра, прибавляем к текущему количеству 1. Если не цифра, то сравниваем текущее количество цифр с максимальным, и заменяем текущее на максимальное, если максимальное меньше. Потом обнуляем текущее значение и топаем дальше .
0
FedVetal
0 / 0 / 0
Регистрация: 29.08.2012
Сообщений: 53
07.12.2012, 04:14  [ТС] #3
а можеш подсказать как реализовать
особенно сравнение макс с текущим количеством цыфр

Добавлено через 33 минуты
вот что получилось только почему то зацыкливается

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>
#include<cstdio>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
 
{setlocale(0,"");
 
char a[100];
 
int c;
 
        cout<<"Введите текст 1рядка ";
 
 
    gets(a);
    
    int r=strlen(a);
    
 
    cout<<a;
    cout<<endl;
    int b;
        
 
b=0;int max;
max=0;
for(int i=0;i<r;i++)
    {o:for(int j=0;j<r;i++)
    
if (!isalpha(a[i]) && !ispunct(a[i]) &&  !isspace(a[i]))
    
    {b++;}
if (isalpha(a[i]) && ispunct(a[i]) &&  isspace(a[i]))
    {if(max>b){max=max;}
    if(max<b){max=b;}
    cout<<"a";}
    
    goto o;}
 
cout<<max;
    cout<<b<<endl;
 
    return 0;}
Добавлено через 8 минут
или так тоже ошибка



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
#include<iostream>
#include<cstdio>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
 
{setlocale(0,"");
 
char a[100];
 
int c;
 
        cout<<"Введите текст 1рядка ";
 
 
    gets(a);
    
    int r=strlen(a);
    
 
    cout<<a;
    cout<<endl;
    int b;
        
 
b=0;int max;
max=0;
for(int i=0;i<r;i++)
    {o:for(int j=0;j<r;i++)
    
if (!isalpha(a[i]) && !ispunct(a[i]) &&  !isspace(a[i]))
    
    {b++;}
if (isalpha(a[i]) && ispunct(a[i]) &&  isspace(a[i]))
    {if(max>b){max=max;}
    if(max<b){max=b;}
    cout<<"a";}
    if(i<r)
        {goto o;}
    else goto exit ;}
exit:
cout<<max;
    cout<<b<<endl;
 
    return 0;}
Добавлено через 1 час 33 минуты
Так тоже не выдает то что мне нада


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
#include<iostream>
#include<cstdio>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
 
{setlocale(0,"");
 
char a[100];
 
 
 
        cout<<"Введите текст 1рядка ";
 
 
    gets(a);
    
    int r=strlen(a);
    
 
    cout<<a;
    cout<<endl;
    int b;
        
 
int max;
max=0;int x;
x=0;
for(int i=0;i<r;i++)
    {o:b=0;
    
c:if (!isalpha(a[i]) && !ispunct(a[i]) &&  !isspace(a[i]))
    
    {cout<<"a";
b++;
x++;
if(x<r)
    {goto c;}
else goto exit;}
else
    {cout<<"b";
        if(max<b){max=b;}
        
        x++;
        if(x<r)
        {goto o;}
        else goto exit ;}}
    
    
 
exit:
cout<<endl<<max<<"as";
    cout<<endl<<b<<endl;
 
    return 0;}
0
kiruhka
1 / 1 / 0
Регистрация: 08.09.2009
Сообщений: 103
07.12.2012, 05:33 #4
Пожалуйста напишите пример вводимой строки?
0
Croessmah
Эксперт CЭксперт С++
13221 / 7493 / 845
Регистрация: 27.09.2012
Сообщений: 18,413
Записей в блоге: 3
Завершенные тесты: 1
07.12.2012, 08:48 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream> 
int main(){
    char str[]="my name 3399 984 klk 999997";
 
    int countmax=0;
    int count=0;
    for(char *p=str;*p;++p){
        if(*p==' ') continue;
        if(*p>47 && *p<58)
            ++count;
        else{
            if(count>countmax)
                countmax=count;
            count=0;
        }
    }
    if(count>countmax)
        countmax=count;
    std::cout<<countmax;
    std::cin.get();
    return 0;
}
0
FedVetal
0 / 0 / 0
Регистрация: 29.08.2012
Сообщений: 53
09.12.2012, 16:47  [ТС] #6
Цитата Сообщение от Croessmah Посмотреть сообщение
#include <iostream>
int main(){
* * char str[]="my name 3399 984 klk 999997";
int countmax=0;
* * int count=0;
* * for(char *p=str;*p;++p){
* * * * if(*p==' ') continue;
* * * * if(*p>47 && *p<58)
* * * * * * ++count;
* * * * else{
* * * * * * if(count>countmax)
* * * * * * * * countmax=count;
* * * * * * count=0;
* * * * }
* * }
* * if(count>countmax)
* * * * countmax=count;
* * std::cout<<countmax;
* * std::cin.get();
* * return 0;
}

подскажите пжл что в етой програме делают ети три строчки




Цитата Сообщение от Croessmah Посмотреть сообщение
for(char *p=str;*p;++p){
* * * * if(*p==' ') continue;
* * * * if(*p>47 && *p<58)
0
Croessmah
Эксперт CЭксперт С++
13221 / 7493 / 845
Регистрация: 27.09.2012
Сообщений: 18,413
Записей в блоге: 3
Завершенные тесты: 1
09.12.2012, 22:42 #7
Цитата Сообщение от FedVetal Посмотреть сообщение
подскажите пжл что в етой програме делают ети три строчки
C++
1
for(char *p=str;*p;++p)
Создаем указатель на char и инициализируем его адресом строки (*p=str)
*p - разыменовываем указатель, если там содержится символ конца строки '\0', то прекращаем цикл, иначе продолжаем
++p - итерация указателя
C++
1
if(*p==' ') continue;
Если текущий символ, по которому проходим - пробел, то переходим сразу на следующую итерацию.
Последовательность цифр с пробелами "123 45"
С этой строчкой длина последовательности цифр будет 5, без нее - 3.
C++
1
if(*p>47 && *p<58)
Если код текущего символа лежит в интервале [48;57], то это цифра, поэтому увеличиваем счетчик count.
Если это не цифра, то сравниваем count с максимальной длиной. Если count больше максимальной длины, тогда
C++
1
countmax=count
0
FedVetal
0 / 0 / 0
Регистрация: 29.08.2012
Сообщений: 53
09.12.2012, 23:00  [ТС] #8
понял все кроме первой строчки можеш про первую поподробнее,или как его можно по другому записать,попроще что значит*р?
0
Croessmah
Эксперт CЭксперт С++
13221 / 7493 / 845
Регистрация: 27.09.2012
Сообщений: 18,413
Записей в блоге: 3
Завершенные тесты: 1
09.12.2012, 23:04 #9
Разыменование указателя. Вы с указателями вообще знакомы?

Добавлено через 1 минуту
Можно заменить на:
C++
1
2
3
4
5
6
7
8
9
10
    for(int i=0;str[i];++i){
        if(str[i]==' ') continue;
        if(str[i]>47 && str[i]<58)
            ++count;
        else{
            if(count>countmax)
                countmax=count;
            count=0;
        }
    }
Так, наверное, понятнее
1
FedVetal
0 / 0 / 0
Регистрация: 29.08.2012
Сообщений: 53
09.12.2012, 23:27  [ТС] #10
Вот что у меня получилось я ее переделал под себя немного упростил может кому пригодится


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
#include <iostream> 
using namespace std;
int main(){
    char str[100];
    
    setlocale(0,"");
    cout<<"Введите елементы масива"<<endl;
    gets(str);
 
    int max=0;
    int b=0;
    for(int i=0;str[i];i++){
       
        if(isdigit(str[i]))
            b++;
        else{
            if(b>max)
                max=b;
            b=0;
        }
    }
    if(b>max)
        max=b;
  cout<<max<<endl;
    
    return 0;
}
спасибо всем кто помог....
0
Croessmah
Эксперт CЭксперт С++
13221 / 7493 / 845
Регистрация: 27.09.2012
Сообщений: 18,413
Записей в блоге: 3
Завершенные тесты: 1
09.12.2012, 23:36 #11
Цитата Сообщение от FedVetal Посмотреть сообщение
немного упростил
Введите текст на русском языке
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2012, 23:36
Привет! Вот еще темы с ответами:

Описать функцию, которая подсчитывает максимальное количество символов, идущих подряд в строке - C++
Добрый день! Дали задание, но не совсем ясно, а выполнить надо. Просьба написать: a)функцию, которая подсчитывает максимальное...

Найти количество N-значных чисел, состоящих из цифр 1 и 2, не содержащих три подряд идущих одинаковых цифры - C++
Здравствуйте! Вот еще одна задача с E-olymp (№ 12). К сожалению, только 67% (один - неправильный ответ, остальные не прошли по времени)....

Удалить из каждой группы идущих подряд цифр нули - C++
удалить из каждой группы идущих подряд цифр нули

Определить наличие в заданном числе подряд идущих цифр - C++
Написать программу определяющую, есть ли в заданном числе подряд идущие цифры. Заранее благодарна за помощь.


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.12.2012, 23:36
Ответ Создать тему
Опции темы

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