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

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

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

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

27.03.2012, 17:11. Просмотров 692. Ответов 11
Метки нет (Все метки)

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

Задание с массивами - C++
Ребята! Прошу Вашей помощи! Требуется разработать 5 программ которые бы работали с массивами согласно следующим заданиям : 1) Ввод в...

Задание с массивами - C++
Помогите пожалуйста с заданием Дан одномерный массив, состоящий из N вещественных элементов. 5.1. Ввести массив с клавиатуры. 5.2....

Задание с массивами. - C++
Дан массив {3.24, -0.16, 2.28, -0.16, -3.22, 7.14, 0.88, -3.20, 0.99, 4.15} и в нём нужно :сжать массив, удалив из него все элементы,...

задание из книжки с массивами - C++
два заведомо упорядоченных массива (например 1,3,6,8,100500 и 3,5,9,10,9000), размер массивов одинаковый. Склеить их в один новый массив...

Задание с одномерными массивами - C++
Здравствуйте. Помогите, пожалуйста. Нужно ответить на дополнительный вопрос для защиты лабы. По написанной программе надо найти точку,...

Задание по работе с массивами - C++
Задание по работе с массивами: Вводится массив и некоторое число X. Сколько в массиве интервалов, куда попадает заданное число. я сам...

11
Duha666
51 / 51 / 5
Регистрация: 10.03.2012
Сообщений: 138
27.03.2012, 17:55 #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]);
 
}
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
27.03.2012, 17:58 #3
Цитата Сообщение от mibzzz Посмотреть сообщение
Перед вставкой в массив, символы, которые соответствуют цифрам перевести в тип int. Т.к. длина массива ограничена, например 10, лишние символы выкинуть.
В этом месте не совсем понятно, можно объяснить поподробнее?
0
mibzzz
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 4
27.03.2012, 18:14  [ТС] #4
Duha666, спасибо за помощь! но мы ещё не проходили библиотеку algorithm.

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

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

способ Algiz сработал! теперь осталось отсортировать массивы по возрастанию.
0
stawerfar
141 / 55 / 4
Регистрация: 14.12.2010
Сообщений: 347
Записей в блоге: 1
27.03.2012, 18:31 #10
Цитата Сообщение от Duha666 Посмотреть сообщение
со вставками в виде других символов
я так понял тебе двумерный массив char** сделать нужно ?
0
Duha666
51 / 51 / 5
Регистрация: 10.03.2012
Сообщений: 138
27.03.2012, 18:33 #11
stawerfar, мне вообще ничего не нужно ТС же описал, что он хочет.
0
mibzzz
0 / 0 / 0
Регистрация: 26.03.2012
Сообщений: 4
27.03.2012, 20:07  [ТС] #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;
 
}
Всем спасибо за помощь!
0
27.03.2012, 20:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2012, 20:07
Привет! Вот еще темы с ответами:

Поясните с массивами, как делать это задание - C++
1. Дана последовательность натуральных чисел а1, a2, ..., а20. Определить, есть ли в последовательности хотя бы одна пара соседних нечетных...

Задание на массив и задание на матрицу. - C++
1.Удалить из массива A(n) нулевые элементы, передвигая на их место следующие элементы, не нарушая порядка их следования. В результате...

Задание со строкой - C (СИ)
Написать консольное приложение, реализующее полученный вариант задания, используя конструкции и соответствующие функции стандартной...

Задание с модулем Graph и бегущей строкой - Free Pascal
Запрограммировать набор функций для рисования букв, выводить на экран с его помощью бегущую строку. При повторении строки цвет текста ...


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

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

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