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

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

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

Сформировать одномерный массив - C++

03.11.2009, 16:59. Просмотров 863. Ответов 12
Метки нет (Все метки)

Из строки типа "Привет 123й, я 548й, нам нада передать 17му что его балан равен 100". Вывести все числа(не цифры, а

числа). Сформировать одномерный массив. Отсортировать его по убыванию, возростанию, найти максимальный и минимальный

элемент. В конце вывести среднее арифметическое элементов масива.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.11.2009, 16:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сформировать одномерный массив (C++):

Сформировать одномерный массив, удалить первый элемент с заданным значением, сдвинуть массив циклически - C++
1)сформировать одномерный массив целых чисел 2)удалить первый элемент с заданным значением 3)сдвинуть массив циклически на К элементов...

Дан двумерный массив размерностью 4*5. Сформировать одномерный массив - C++
Дан двумерный массив размерностью 4*5, заполненный целыми числами с клавиатуры. Сформировать одномерный массив каждый элемент которого...

Дан двумерный массив. Сформировать одномерный массив из элементов заданного массива, расположенных под побочной диагональю. - C++
Дан двумерный массив размером n x n. Сформировать: Одномерный массив из элементов заданного массива, расположенных под побочной...

Двумерный массив. Сформировать одномерный массив, каждый элемент которого равен первому четному элементу соответствующего столбца - C++
Дан двумерный массив, целых чисел. Сформировать одномерный массив, каждый элемент которого равен первому четному элементу соответствующего...

Дан двумерный массив размерностью Н. сформировать одномерный массив из элементов заданного массива расположенных над главной диагональю. - C++
помогите решить=)Дан двумерный массив размерностью Н. сформировать одномерный массив из элементов заданного массива расположенных над ...

Сформировать одномерный массив - C++
Помогите начинающему программисту) Дали задание, вот условие: 1) Сформировать одномерный массив целых чисел, используя генератор...

12
audiophile
9 / 9 / 0
Регистрация: 01.11.2009
Сообщений: 67
03.11.2009, 17:54 #2
Записываете строку в массив. Далее при помощи фунции, определяющей, является ли передаваемый ей аргумент цифрой или буквой, выявляете индексы элементов в массиве, где записаны цифры. Для удобства их можно сразу забить в другой массив (не обязательно). Далее, определив длину каждого из промежутков, вы сможете при помощи банального умножения (например, для числа 123: 1*100 + 2*10 + 3*1) получить искомые числа. Можно кстати, воспользоваться для этой цели готовой функцией.
0
ByHbKa
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
03.11.2009, 19:42  [ТС] #3
А можно уже решённый вариант увидеть))

Добавлено через 1 час 20 минут
up
0
audiophile
9 / 9 / 0
Регистрация: 01.11.2009
Сообщений: 67
03.11.2009, 20:00 #4
Напишите лучше конкретно, какой момент в моем кривом алгоритме вызывает у вас затруднения, а я подскажу .
0
ByHbKa
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
03.11.2009, 20:13  [ТС] #5
C++
1
2
3
4
 char *c1 = "Welcome to the 123rd";
  char *c2 = "I 548y";
  char *c3 = "we need to allocate 17mu";
  char *c4 = "that his balance is 100";
Вот из этого выведи все числа и присвой им какой нибудь операнд. Дальше я сам)
0
audiophile
9 / 9 / 0
Регистрация: 01.11.2009
Сообщений: 67
03.11.2009, 21:22 #6
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
70
71
72
73
74
75
#include <iostream>
using namespace std;
 
bool charornot (char ch) { // проверка буква ли это или цифра
    char mas[] = {"1234567890"};
    int i, flag = 0;
    for ( i = 0; i < 10; i++ )
        if ( ch == mas[i] ) {
            flag = 1;
            break;
        }
    if ( flag == 0 )
        return false;
    else
        return true;
}
 
int power (int p) { // для вычисления
    int i, j = 1;
    for ( i = 0; i < p; i++ )
        j *= 10;
    return j;
}
 
int figure2number (char ch) { // преобразует char-овскую "цифру" в настоящую int-овскую цифру
    switch (ch) {
        case '1': return 1; break;
        case '2': return 2; break;
        case '3': return 3; break;
        case '4': return 4; break;
        case '5': return 5; break;
        case '6': return 6; break;
        case '7': return 7; break;
        case '8': return 8; break;
        case '9': return 9; break;
        case '0': return 0; break;
        default: return -1; break;
    }
}
 
int sum (char mas[], int size) { // переводит тестовую строку с цифрами (буквами) в число
    int sum = 0, i;
    for ( i = 0; i < size; i++ )
        sum += figure2number(mas[i]) * power(size-i-1);
    return sum;
}
 
int main (int argc, char * const argv[]) {
    char * c1 = "We12lcome 0 999999 to the 123rd11 22";
    int i, j, c, h = 0, lengh = strlen(c1);
    const int size = lengh;
    int index[size];  // массив для индексов
    char mas1[size]; // массив для "числа", представленного char-овскими цифрами
    int answer[size]; // массив для ответа
    
    for ( i = 0; i < lengh; i++ ) {
        if ( charornot(c1[i]) == false )
            continue;
        else {
            j = 0;
            while ( charornot(c1[i]) == true ) {
                index[j] = i; // записали индекс цифры
                j++;
                i++;
                }
            for ( c = 0; c < j; c++ )
                mas1[c] = c1[index[c]]; // записали сюда одно лишь char-овское "число"
            answer[h] = sum(mas1,j); // положили сюда настоящее int-овское число
            h++;
        }
    }
    for ( i = 0; i < h; i++ )
        cout << answer[i] << endl;
    return 0;
}
1
ByHbKa
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
03.11.2009, 22:03  [ТС] #7
C++
1
2
3
int index[size];  
        char mas1[size]; 
        int answer[size];
Arrays must be declared with constant size.
This error is commonly caused by misspelling a #define constant.
0
audiophile
9 / 9 / 0
Регистрация: 01.11.2009
Сообщений: 67
03.11.2009, 22:10 #8
Черт, знаю, что нужно прописывать константу в качестве размерности, но почему-то в моем компиляторе и так сработало . Используй либо динамический массив значит, либо вместо size для этих трех массивов пропиши какую константу заранее определенную. Например, так:
C++
1
2
3
4
const int sizeformas = 256;
int index[sizeformas];  
char mas1[sizeformas]; 
int answer[sizeformas];
0
ByHbKa
0 / 0 / 0
Регистрация: 27.10.2009
Сообщений: 29
03.11.2009, 22:28  [ТС] #9
Благодарю, все работает
0
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
03.11.2009, 22:33 #10
audiophile,
это было ж0стко. особенно функция figure2number меня впечатлила
0
audiophile
9 / 9 / 0
Регистрация: 01.11.2009
Сообщений: 67
03.11.2009, 22:41 #11
Цитата Сообщение от Rififi Посмотреть сообщение
audiophile,
это было ж0стко. особенно функция figure2number меня впечатлила
Да. Я полный чайник и не скрываю этого. Мало того, что алгоритмы у меня очень нерациональные, еще и реализация хромает. В данном случае я писал не для себя, а потому код как лился из головы, так и был записан . Хотя, суть изложена в первом предложении.

P.S. Еще в голову одновременно с этим пришло использовании функции atoi(), которая бы все сама сделала и не надо было бы писать sum, figure2number, power, но решил все расписать как сам бы делал, не будь ее в наличии . А что именно впечатлило? Ненужные break? Ну так это я так...
0
Rififi
2359 / 1052 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
03.11.2009, 22:56 #12
audiophile,
А что именно впечатлило?
мне просто сразу вспомнился явный и безоговорочный лидер проекта ГовноКод: http://govnokod.ru/best?time=ever
, без обид.
0
audiophile
9 / 9 / 0
Регистрация: 01.11.2009
Сообщений: 67
03.11.2009, 23:02 #13
Ну мне еще и до говнокодера далеко, но до того, что там в ТОПе даже я бы не додумался .
В том, что я написал только break, вроде, лишние, т.к. после return уже ничего не выполняется. А так я же говорю: пишу первое, что придет в голову. Вот, например, еще один вариант этой функции пришел в голову:
C++
1
2
3
4
5
6
int figure2number (char ch) { // преобразует char-овскую "цифру" в настоящую int-овскую цифру
    char mas[] = {"0123456789"};
    for ( int i = 0; i < 10; i++ )
        if ( ch == mas[i] )
            return i;
}
Я же не на выставку делаю . Ну и т.д.

C++
1
2
3
4
5
6
7
8
bool charornot (char ch) { // проверка буква ли это или цифра
        char mas[] = {"1234567890"};
        int i, flag = 0;
        for ( i = 0; i < 10; i++ )
                if ( ch == mas[i] )
                   return true;
        return false;
}
А вообще я бы тут atoi() заюзал .
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2009, 23:02
Привет! Вот еще темы с ответами:

Сформировать одномерный массив - C++
Сформировать одномерный массив, каждый элемент которого равен максимальному элементу соответствующего столбца произвольно заданной матрицы...

Сформировать одномерный массив - C++
как сформировать одномерный массив из диагональных элементов матрицы .a(5,5) В Visual Studio 2010 ultimate, В Console Application? ...

Сформировать результирующий одномерный массив - C++
Очень срочно нада Дана квадратная целочисленная матрица порядка n. Сформировать результирующий одномерный массив, элементами которого...

Сформировать одномерный массив из двумерного - C++
Дан массив R(N,M) Сформировать одномерный массив B(N) из минимальных элементов массива R по строкам. Такая есть задача ток она на QBasic.


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

Или воспользуйтесь поиском по форуму:
13
Yandex
Объявления
03.11.2009, 23:02
Ответ Создать тему
Опции темы

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