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

задание со строкой и массивами. C++. - C++

Восстановить пароль Регистрация
 
mibzzz
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 4
27.03.2012, 17:11     задание со строкой и массивами. C++. #1
Добрый вечер всем. Помогите пожалуйста!
Надо написать программу, которая просит пользователя ввести строку. Прочитать строку и разбить на два массива - один с символами соответствующими цифрам, другой с символами соответствующими буквам. Остальные символы "выбросить". Массив должен быть отсортирован по возрастанию, например (AAaacsstux или 11234489).
Перед вставкой в массив, символы, которые соответствуют цифрам перевести в тип int. Т.к. длина массива ограничена, например 10, лишние символы выкинуть.
Подскажите пожалуйста хоть что-нибудь...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.03.2012, 17:11     задание со строкой и массивами. C++.
Посмотрите здесь:

C++ Работа со строкой
C++ Задание с одномерными массивами
Работа со строкой C++
Задание на массив и задание на матрицу. C++
C++ Задание по работе с массивами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
27.03.2012, 17:55     задание со строкой и массивами. C++. #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
#include <stdio.h>
#include <algorithm>
#include <cctype>
 
using namespace std;
 
char str[500], letters[100];
int nums[100], nn, ln;
 
int main()
{
    gets(str);
    for (int i = 0; str[i] != 0; i++)
    {
        if (isalpha(str[i]))
            letters[ln++] = str[i];
        if (isdigit(str[i]))
            nums[nn++] = str[i] - '0';
    }
    sort(nums, nums + nn);
    sort(letters, letters + ln);
    for (int i = 0; i < nn; i++)
        printf("%d", nums[i]);
    printf("\n");
    for (int i = 0; i < ln; i++)
        printf("%c", letters[i]);
 
}
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
27.03.2012, 17:58     задание со строкой и массивами. C++. #3
Цитата Сообщение от mibzzz Посмотреть сообщение
Перед вставкой в массив, символы, которые соответствуют цифрам перевести в тип int. Т.к. длина массива ограничена, например 10, лишние символы выкинуть.
В этом месте не совсем понятно, можно объяснить поподробнее?
mibzzz
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 4
27.03.2012, 18:14  [ТС]     задание со строкой и массивами. C++. #4
Duha666, спасибо за помощь! но мы ещё не проходили библиотеку algorithm.

stawerfar, надо цифры из типа char перевести в тип int.

Я разобрался как прочитать строку по одному символу и разбить на два массива. Но теперь появилась другая проблема. Как цифры из типа char первести в int?
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
27.03.2012, 18:16     задание со строкой и массивами. C++. #5
Цитата Сообщение от mibzzz Посмотреть сообщение
спасибо за помощь! но мы ещё не проходили библиотеку algorithm
Напишите вместо sort свою сортировку, не будет проблем.
Цитата Сообщение от mibzzz Посмотреть сообщение
Как цифры из типа char первести в int?
C++
1
str[i] - '0'
Algiz
159 / 159 / 13
Регистрация: 23.02.2011
Сообщений: 347
27.03.2012, 18:18     задание со строкой и массивами. C++. #6
Цитата Сообщение от mibzzz Посмотреть сообщение
Как цифры из типа char первести в int?
C++
1
2
char a = '3';
int b = int(a - '0');
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
27.03.2012, 18:19     задание со строкой и массивами. C++. #7
Цитата Сообщение от mibzzz Посмотреть сообщение
Как цифры из типа char первести в int
ну так сразу бы и сказал есть функция из массива char в int переводит
atoi();
C++
1
2
3
int array;
char str[]="12345";
array=atoi(str);
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
27.03.2012, 18:21     задание со строкой и массивами. C++. #8
stawerfar, она переводит всё(!) число(!) в int. А нужно каждую цифру со вставками в виде других символов.
mibzzz
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 4
27.03.2012, 18:28  [ТС]     задание со строкой и массивами. C++. #9
Цитата Сообщение от stawerfar Посмотреть сообщение
ну так сразу бы и сказал
да, просто коряво перевел задачу

способ Algiz сработал! теперь осталось отсортировать массивы по возрастанию.
stawerfar
 Аватар для stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
27.03.2012, 18:31     задание со строкой и массивами. C++. #10
Цитата Сообщение от Duha666 Посмотреть сообщение
со вставками в виде других символов
я так понял тебе двумерный массив char** сделать нужно ?
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
27.03.2012, 18:33     задание со строкой и массивами. C++. #11
stawerfar, мне вообще ничего не нужно ТС же описал, что он хочет.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2012, 20:07     задание со строкой и массивами. C++.
Еще ссылки по теме:

задание из книжки с массивами C++
C++ Задание с массивами.
Задание с массивами C++

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

Или воспользуйтесь поиском по форуму:
mibzzz
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 4
27.03.2012, 20:07  [ТС]     задание со строкой и массивами. C++. #12
stawerfar, нет. надо два одномерных массива, char и int.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    char str;
    int num[10];
    char ch[10];
    int i=0, j=0, k=0;
 
    cout << "Vvedi ==> ";
 
   while (str != '\n'){
        cin.get(str);
        if (str>='A' && str<='Z' || str>='a' && str<='z'){
            ch[j] = str;
            j++;
    }
        else if (str>='0' && str<='9'){
            num[k] = int (str - '0');
            k++;
    }
 
 
    }
вот так получилось разбить на 2 массива.

Добавлено через 1 час 29 минут
Наконец-то доделал! Вот рабочий код:
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
#include <iostream>
using namespace std;
 
int main(){
    char str;
    int num[10];
    char ch[10];
    int i=0, j=0, k=0, sk1=0, sk2=0;
    char tmp;
    int tmp2=0;
 
    cout << "Vvdedite stroku iz cifr, bukv i simvolov:  ";
 
   while (str != '\n'){
        cin.get(str);
 
        if (str>='A' && str<='Z' || str>='a' && str<='z'){
            if (j<10){
            ch[j] = str;
            j++;
            sk1++;}
            else if (j>=10) str = tmp;
 
    }
        else if (str>='0' && str<='9'){
                if (k<10) {
                    num[k] = int (str - '0');
                    k++;
                    sk2++;
        }
 
                else if (k>=10) str = tmp;
    }
 
 
    }
 
 
         for (i=0; i<j; i++){
            for (int a=0; a<j; a++){
                if(ch[a]>ch[a+1]){tmp2=ch[a]; ch[a]=ch[a+1]; ch[a+1]=tmp2;}
 
            }
 
}
 
 
 
         for (i=0; i<k; i++){
            for (int b=0; b<k; b++){
                if(num[b]>num[b+1]){ tmp2=num[b]; num[b]=num[b+1]; num[b+1]=tmp2; }
 
                    }
                }
 
 
 for (i=0; i<=sk1; i++)
 cout << ch[i];
  cout << endl;
 for (i=0; i<sk2; i++)
 cout << num[i];
 
 
 
return 0;
 
}
Всем спасибо за помощь!
Yandex
Объявления
27.03.2012, 20:07     задание со строкой и массивами. C++.
Ответ Создать тему
Опции темы

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