Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
1

Замена чисел в строке

02.10.2014, 20:50. Показов 3884. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, задание состоит в том, что вводится строка, которая состоит из букв, цифр, разделителей.
Необходим заменить все числа, на число наименьшее из всех. Сначала, я пытался просто извлечь числа из строки и записать их в массив, вот что есть. Но ничего из этого не получилось, так же пытался искать минимальное число в строке, это получилось, но как потом его заменить на все остальные пока не знаю, как сделать, если кто-то знает что-то, то напишете или подсказки.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main(int argc, char *argv[]) 
{
    char s[] = "13 is better than 77 and even than 7";
    char str[100];
    int n = strlen(s);
    for (int i = 0, j = 0; i < n; i++ ) 
    {
     if ( isdigit( s[ i ])) 
     {
      for ( i < n && isdigit( s[ i ]); i++, j++; )
         str[ j ] = s[ i ] ;
        
      j++;
      
    }
    }
Поиск минимального значения в строке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main(int argc, char *argv[]) 
{
    char *s = "13 is better than 77 and even than 7";
    int min;
    int  flag=0;
    do
    {
        while(!isdigit(*s) && *s!='\0')s++;
        
        if (atoi(s)>0) 
        {
            if(flag==0)
            {
                min=atoi(s);
                flag++;
            }
                if (atoi(s)<min) min=atoi(s);
        }
        while(isdigit(*s) && *s!='\0')s++;
    }while(*s!='\0');
    cout<< "Min: " << min<< endl;
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2014, 20:50
Ответы с готовыми решениями:

Замена чисел от 0 до 9 в строке на "*"
Пишу в программе flat assembler, как мне заменить все цифры в строке на &quot;*&quot;, есть пример просто...

Операции в строке: поиск, замена, удаление символа в строке
Доброго здравия! В ассемблере совсем новичок, поэтому прошу помощи. Программа должна получать...

Замена подстроки в строке с неизвестными символами в строке
Пример: есть строка: s=&quot;Делаешь, уешь, гниешь, ешь&quot; Нужно заменить окончание ешь на ю ...

Даны 4 строки. В каждой строке по 6 целых 4-ех значных чисел. Нужно найти среднее арифметическое чисел у каждой строки и определить в какой строке сре
Даны 4 строки. В каждой строке по 6 целых 4-ех значных чисел. Нужно найти среднее арифметическое...

2
2848 / 1997 / 986
Регистрация: 21.12.2010
Сообщений: 3,705
Записей в блоге: 10
04.10.2014, 12:47 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
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <climits>
#include <cstdio>
 
int main()
{
    char str[] = "13 is better than 777 and even than 7 mbmb 12", res[512], *pend = 0;
    int min = INT_MAX, tmp;
    // poisk naimen'shego
    for(char const* p = str; *p; )
    {
        if(isdigit(*p))
        {
            tmp = strtol(p, &pend, 10);
            //std::cout << tmp << '\n';
            if(pend != p && tmp < min)
            {
                min = tmp;
            }
            p = pend;
        }
        else
        {
            ++p;
        }
    }
    // zamena
    for(char* p = str, *p1 = res; *p1 = *p; )
    {
        if(isdigit(*p))
        {
            p1 += sprintf(p1, "%d", min);
            strtol(p, &p, 10);
        }
        else
        {
            ++p;
            ++p1;
        }
    }
 
    std::cout << res << '\n';
    return 0;
}
0
1 / 1 / 2
Регистрация: 18.11.2013
Сообщений: 337
04.10.2014, 17:39  [ТС] 3
igorrr37, а можете пояснить, что означает
C++
1
2
3
4
     else
        {
            ++p;
        }
Я понимаю, что это пробег по строке, а можно ли это выделить в одну функцию, что бы там был адрес на строку, например,
C++
1
min(&res)
0
04.10.2014, 17:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.10.2014, 17:39
Помогаю со студенческими работами здесь

Замена в строке
Помогите решить проблему, в строке &quot;1. Повышение квалификации. Формализованные модели. Институт....

Замена в строке
Дана строка t1 = &quot;0.27313&quot; Как заменить &quot;.&quot; на &quot;,&quot; ?

Замена в строке
Всем Привет! Помогите плиз с задачкой: Заменить во всех строках текста слова, являющиеся числами,...

Замена в строке \r\n на <br /><br />
Пробовал использовать str_replace, но данное действие заменяет все переходны на новую строку, а есл...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru