Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Eresse
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 7
1

Нахождение номера цифры в символьном массиве

02.11.2017, 22:35. Просмотров 166. Ответов 4
Метки нет (Все метки)

Доброго времени суток. У меня есть символьный массив: "ап21ре4ль111май312июль". В нём мне нужно найти номер последней цифры (то есть цифры "2" из числа "312"). Вот моя идея: написать код, в котором для каждого элемента с конца массива, пока элемент массива a[i] не равен числу от 0 до 9 включительно, будет иметься счётчик для нахождения количества шагов с конца массива (что является номером элемента с конца).

Собственно, проблема в том, что я не знаю, как задать неравность числу и правильно совместить while и массивный for.

Вот то, что я написал:

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
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int main() 
{
    setlocale(LC_ALL, "rus");
 
    char a[23] = "ап21ре4ль111май312июль";
    int i;
 
    cout << "Array: ";
    for (i = 0; i < strlen(a); i++) {
        cout << a[i];
    }
    
    cout << endl;
    cout << "Value of char: " << strlen(a) << endl;
 
    cout << endl;
 
    // Как вариант, я пробовал использовать это : while (a[i] =! '2') и это:
 
    // for (i = strlen(a) - 1; i > 0; i--) {
    //   i1++; // Номер последней цифры
    // }
    // cout << "Number: " << strlen(a)-i1 << endl;
    
    // Но не смог понять, как это правильно расположить.
    
    system("pause");
    return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2017, 22:35
Ответы с готовыми решениями:

Нахождение номера столбца с максимальной серией одинаковых элементов в двумерном массиве
Подскажите чайнику: Сейчас учусь на заочке на первом курсе, изучаю С++. задача...

Дан массив целых чисел. Найти номера элементов оканчивающихся цифрой 0 (известно, что такие цифры в массиве есть).
Дан массив целых чисел. Найти номера элементов оканчивающихся цифрой 0...

Поиск числа в символьном массиве
Вводим строку символов, где есть и числа, и буквы, далее из этой строки нужно...

Найти количество слов в символьном массиве
дано: х (100), найти количество слов в символьном массиве. Очень прошу...

В символьном массиве заменить буквы на символ %
Нужно ввести массив и заменить в нем все буквы на символ %.

4
Байт
Эксперт C
19229 / 12354 / 2607
Регистрация: 24.12.2010
Сообщений: 25,429
02.11.2017, 22:51 2
Eresse, Вот какие ощущения вызывает у меня ваш пост. Код откуда-то переписан, не имеет никакого отношения к вашей задаче, и вами совершенно не осознан. Но какой-то представить пред наши очи надо? Правильно. Похерив все его внутренности, будем писать другой.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include "stdafx.h"
#include <iostream>
 
using namespace std;
 
int main() 
{
    setlocale(LC_ALL, "rus");
 
    char a[23] = "ап21ре4ль111май312июль";
    int i;
    for(i=strlen(a); i>=0; i--) {
       if (a[i] >= '0' && a[i] <= '9') break;
    }
    if (i==0) cout << "Netu cifer" < endl;
    else cout << "i=" << i << endl;
    system("pause");
    return 0;
}
2
Eresse
0 / 0 / 0
Регистрация: 30.10.2017
Сообщений: 7
02.11.2017, 23:09  [ТС] 3
Благодарю.
0
повар1
225 / 179 / 151
Регистрация: 24.02.2017
Сообщений: 701
Завершенные тесты: 1
03.11.2017, 11:37 4
Байт,
Цитата Сообщение от Байт Посмотреть сообщение
if (i==0) cout << "Netu cifer" < endl;
, а если первая и последняя цифра будет стоять в этой позиции?

Добавлено через 21 минуту
C++
1
2
3
4
5
6
7
setlocale(LC_ALL, "rus");
 
    char a[23] = "ап21ре4ль111май312июль";
    int i,pos=0;
    for(i=0; i<=strlen(a); i++)
       if (a[i] >= '0' && a[i] <= '9') pos=i;
    cout<<pos;
Добавлено через 2 часа 2 минуты
учтен глюк
C++
1
2
3
4
5
6
char a[23] = "ап21ре4ль111май312июль";
    int i,pos=-1;
    for(i=0; i<=strlen(a); i++)
       if (a[i] >= '0' && a[i] <= '9') pos=i;
    if(pos>-1)   
    cout<<pos;
1
Байт
Эксперт C
19229 / 12354 / 2607
Регистрация: 24.12.2010
Сообщений: 25,429
03.11.2017, 11:45 5
Цитата Сообщение от повар1 Посмотреть сообщение
а если первая и последняя цифра будет стоять в этой позиции?
Да, прошу прощения. Следует читать
C++
1
if (i < 0) cout << "Netu cifer" < endl;
Благодарю за бдительность!

Добавлено через 4 минуты
Цитата Сообщение от повар1 Посмотреть сообщение
учтен глюк
Однако, не совсем. Ваш код даст pos = 2
А последняя цифра стоит совсем не там. Может быть так лучше
C++
1
2
3
4
5
6
char a[23] = "ап21ре4ль111май312июль";
    int i,pos=-1;
    for(i=0; i<=strlen(a); i++)
       if (pos < 0 && a[i] >= '0' && a[i] <= '9') pos=i;
    if(pos>-1)   
      cout<<pos;
Правда, лишние проходы цикла.... Имхо, лучше брекаться...
0
03.11.2017, 11:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2017, 11:45

Вывод в символьном массиве в обратном порядке
По идее вроде как цикл верен, дальше получается мы должны последнему индексу...

Подсчет количества пробелов в символьном массиве
Здравствуйте! Впервые работаю с символьными массивами. Суть задания -...

Найти в символьном массиве трёхзначные числа
Дали задание на практике. В нём надо прочесть из файла символьный массив и...


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

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

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