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

Массив: Удалить из строки цифры - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
DmitryMiK
0 / 0 / 0
Регистрация: 08.06.2012
Сообщений: 8
11.06.2012, 09:12     Массив: Удалить из строки цифры #1
Подскажите, мне необходимо написать программу, в которой при обращении к элементу массива нельзя использовать дополнительную переменную для вычисления его адреса, исходные данные вводятся с клавиатуры, максимальное количество символов в строке - 80. Количество строк - 5. На экран монитора вывести исходный массив и результат расчёта
Задание: Удалить из строки цифры (Дополнительные строки не создавать)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2012, 09:12     Массив: Удалить из строки цифры
Посмотрите здесь:

Удалить из строки все цифры C++
C++ Удалить из строки цифры. С++. Срочно
C++ Обработка строки: удалить из числа все повторяющиеся цифры кроме первого вхождения
C++ Обработка строки: удалить из числа все повторяющиеся цифры кроме первого вхождения
C++ Массив строк в с++. Вывести строки, в которых есть цифры. В каждой строке удалить все цифры
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
11.06.2012, 09:23     Массив: Удалить из строки цифры #2
Уточните задание. Итак, у нас есть массив из 5 строк, нам нужно, чтобы
Цитата Сообщение от DmitryMiK Посмотреть сообщение
обращении к элементу массива нельзя использовать дополнительную переменную для вычисления его адреса
и возможность удалить цифры из строки, так?
DmitryMiK
0 / 0 / 0
Регистрация: 08.06.2012
Сообщений: 8
11.06.2012, 10:06  [ТС]     Массив: Удалить из строки цифры #3
Да всё так

Добавлено через 5 минут
По идее, мне необходимо будет потом еще в этой программе реализовать такое задание ""Найти строку, содержащую наименьшее количество слов, и вывести её на экран монитора""

Добавлено через 35 минут
Подскажите плиззз
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
11.06.2012, 11:38     Массив: Удалить из строки цифры #4
Ну, у нас будет массив 5 обьектов типа string. Для строк наверняка определена какая-нибудь функция типа Find&Replace, надо таковую поискать. Ею можно будет цифры позаменять на пустые символы (не путать с пробелами). Количество слов в строке считается по пробелам
DmitryMiK
0 / 0 / 0
Регистрация: 08.06.2012
Сообщений: 8
11.06.2012, 12:20  [ТС]     Массив: Удалить из строки цифры #5
Подскажите я в правильном направлении?

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
57
58
59
60
61
62
63
64
65
66
67
68
69
register char *mas = new char[81*5];
register char *m = mas;
register char *uk;
 
cout << "Vvod stroki 1: ";
cin.getline( m, 80 );
cout << "Vvod stroki 2: ";
cin.getline( m+81, 80 );
cout << "Vvod stroki 3: ";
cin.getline( m+162, 80 );
cout << "Vvod stroki 4: ";
cin.getline( m+243, 80 );
cout << "Vvod stroki 5: ";
cin.getline( m+324, 80 );
 
cout << endl << " Ishodnyi massiv:" << endl;
cout << " " << m << endl;
cout << " " << m+81 << endl;
cout << " " << m+162 << endl;
cout << " " << m+243 << endl;
cout << " " << m+324 << endl;
 
uk = mas;
do{
if( !((*mas >= '0') && (*mas <= '9')) ) { *uk = *mas; uk++; }
mas++;
} while(*mas != 0);
*uk = *mas;
 
mas = m+81;
uk = mas;
do{
if( !((*mas >= '0') && (*mas <= '9')) ) { *uk = *mas; uk++; }
mas++;
} while(*mas != 0);
*uk = *mas;
 
mas = m+162;
uk = mas;
do{
if( !((*mas >= '0') && (*mas <= '9')) ) { *uk = *mas; uk++; }
mas++;
} while(*mas != 0);
*uk = *mas;
 
mas = m+243;
uk = mas;
do{
if( !((*mas >= '0') && (*mas <= '9')) ) { *uk = *mas; uk++; }
mas++;
} while(*mas != 0);
*uk = *mas;
 
mas = m+324;
uk = mas;
do{
if( !((*mas >= '0') && (*mas <= '9')) ) { *uk = *mas; uk++; }
mas++;
} while(*mas != 0);
*uk = *mas;
 
cout << endl << " Rezul'tat:" << endl;
cout << " " << m << endl;
cout << " " << m+81 << endl;
cout << " " << m+162 << endl;
cout << " " << m+243 << endl;
cout << " " << m+324 << endl;
 
delete[] m; //удаляем массив
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
11.06.2012, 12:55     Массив: Удалить из строки цифры #6
Массив можно сделать двухмерным.
C++
1
2
3
4
5
6
char* *mas=new char*[5];
for(int i=0; i<5; i++)
{
mas[i]=new char[80];
//Ввод i-й строки
}
И обращение к элементу массива будет mas[i][j], где i -- номер строки, j -- номер элемента в строке. При вводе вместо m, m+81 и т.д. используем mas[i].
Сделать замену проще отдельной функцией. Ее действия: пройти по строке, посчитать количество цифр (N), пройти по строке еще раз, при попадании на цифру вписывать следующий нецифренный символ, последние N символов позаменять пустыми символами либо пробелами
DmitryMiK
0 / 0 / 0
Регистрация: 08.06.2012
Сообщений: 8
11.06.2012, 13:16  [ТС]     Массив: Удалить из строки цифры #7
То есть можно заменить на двумерный и работать с указателями?
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
11.06.2012, 13:18     Массив: Удалить из строки цифры #8
Лучше одномерный. Меньше расход памяти.

Добавлено через 16 секунд
Стоп. Скажите, зачем Вам динамическое распределение через new/delete? Все еще проще:
C
1
char mas[5][81];
DmitryMiK
0 / 0 / 0
Регистрация: 08.06.2012
Сообщений: 8
11.06.2012, 14:11  [ТС]     Массив: Удалить из строки цифры #9
Мне знакомый так посоветовал решить задачу

Добавлено через 8 минут
Помогите адаптировать моё решение и добавить одну функцию

Добавлено через 2 минуты
Да и еще подскажите, что значит ввести исходный массив с помощью инициализации?

Добавлено через 20 минут
???
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
11.06.2012, 14:47     Массив: Удалить из строки цифры #10
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Лучше одномерный. Меньше расход памяти.
Абсолютно одинаковый, кажется... Двухмерный массив все равно хранится вытянутым в одномерный (столбец за столбцом в С++ и строка за строкой, например, в Фортране). Разница только в читабельности кода.
Цитата Сообщение от Кот Ангенс Посмотреть сообщение
Стоп. Скажите, зачем Вам динамическое распределение через new/delete? Все еще проще:
Абсолютно согласен. Так проще. Я просто уже привык делать new\delete'ами и про такой способ уже и забыть успел...
Цитата Сообщение от DmitryMiK Посмотреть сообщение
Да и еще подскажите, что значит ввести исходный массив с помощью инициализации?
char mas[3][4]={{a,b,c,d},
{e,f,g,h},
{i,j,k,l}}
Например, так...
DmitryMiK
0 / 0 / 0
Регистрация: 08.06.2012
Сообщений: 8
11.06.2012, 15:48  [ТС]     Массив: Удалить из строки цифры #11
Кто-нибудь может мне мой код исправить и добавить функцию нахождения строки с минимальным количеством слов?

Добавлено через 44 минуты
Помогите!
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
11.06.2012, 15:50     Массив: Удалить из строки цифры #12
Цитата Сообщение от UFO94 Посмотреть сообщение
Абсолютно одинаковый, кажется...
C++
1
2
3
4
5
char* *mas=new char*[5];
for(int i=0; i<5; i++)
{
    mas[i]=new char[80];
}
Так создается пять указателей, 80 * 5 символов, плюс сам указатель mas.
C++
1
char* mas = new char[80 * 5];
Здесь мы избавляемся от пяти указателей ценой уменьшения читабельности кода (хотя не так уж сильно).
C++
1
char mas[5][80];
А здесь уходит и сам указатель mas.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.06.2012, 01:00     Массив: Удалить из строки цифры
Еще ссылки по теме:

Удалить из строки все символы кроме букв и цифр; заменить цифры на '**' C++
Удалить из введенной с клавиатуры строки первые 2 слова, если это цифры C++
C++ Из заданной строки удалить все цифры

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

Или воспользуйтесь поиском по форуму:
UFO94
 Аватар для UFO94
263 / 252 / 13
Регистрация: 04.04.2012
Сообщений: 546
12.06.2012, 01:00     Массив: Удалить из строки цифры #13
Ну, сами указатели весят не много... ИМХО, читаемость кода превалирует над экономией на указателях. В даном случае. Т.е. либо 1-й вариант (динамический массив), либо 3-й (статический).
Yandex
Объявления
12.06.2012, 01:00     Массив: Удалить из строки цифры
Ответ Создать тему
Опции темы

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