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

Задачи массивы( объяснение) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.67
Depressa
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 83
28.11.2011, 20:07     Задачи массивы( объяснение) #1
Здравствуйте,не могли бы помочь в написании кода и обьяснить некоторые подробности
есть несколько типов задач, по массивам которые хотелось бы разобрать
первая это сортировка,но я ее сделал и вышло так
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
#include <iostream>
using namespace std;
int main()
{
        double x1,x2;
        double a, b, c;
        cout<<"The quadratic decision\nEnter in one line value of factors and press <Enter>\n";
        cin>>a>>b>>c;
        if(a==0)
        {
                cout<<"The equation isn't square";
        }
        else
        {
                double d=b*b-4*a*c;
                if(d<0)
                {
                        cout<<"The equation has no decision in the valid area";
                }
                if(d==0)
                {
                        cout<<"The equation has 2 identical roots of the equation:\n";
                        x1=-b/(2*a);
                        cout<<"x = "<<x1;
                }
                if(d>0)
                {
                        cout<<"Equation roots:\n";
                        d=sqrt(d);
                        x1=(-b+d)/(2*a);
                        x2=(-b-d)/(2*a);
                        cout<<"x1 = "<<x1<<"\n"<<"x2 = "<<x2;
                }
        }
        return 1;
}
про возрастание и убывание разница в знаке одном,но вот первый вопрос для объяснения:
я обращаюсь к памяти динамически через функции malloc/free, как измениться код если через функции new\delete, а так же если статически?

далее,есть, типы задач, на сложение/вычитание/умножение(скалярное произведение) двух массивов
как я понял, для этого нужно задать три массива, два на вход,один на выход с нужным действием?

но вот второй вопрос, как измениться отдельные фрагменты кода ( на примере моего примера с пузырьком)
то есть: чтобы шло по схеме
1)Выделяем память под массив(ы) небольшого объема5-10элементов
2)Массив(ы) вводятся с клавиатуры.( желательно на примере cin и cout( до get и printoff не дорос
3)Массив(ы) обрабатываются функцией(сложение и т.д.)
4) Массив(ы) выводятся на экран.
и третье, вот тоже самое но для определения минимума(максимума) массива и индекса минимума(максимума)
я подумал, что минимум и максимум, можно сделать пузырьком убрав ненужные значения, а оставив первое(последнее)верно ли это?
и так же объяснить что измениться в вводе выводе

буду очень вам признателен
начал разбирать с++ ( а точнее в среде QT) и столкнулся вот с такими проблемами
заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2011, 20:07     Задачи массивы( объяснение)
Посмотрите здесь:

C++ задачи на C++, на массивы
Задачи на массивы C++
Массивы(задачи) C++
Задачи на массивы в С++ C++
C++ Задачи на массивы С++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 20:27     Задачи массивы( объяснение) #2
Цитата Сообщение от Depressa Посмотреть сообщение
про возрастание и убывание разница в знаке одном,но вот первый вопрос для объяснения:
я обращаюсь к памяти динамически через функции malloc/free, как измениться код если через функции new\delete, а так же если статически?
Код никак не измениться, если я ничего не путаю.
Главное не смешивай new и malloc/
Основная проблема, связанная с функциями malloc()/free(), заключается в том, что эти функции ничего не знают о конструкторах и деструкторах.
Это на заметку.

Цитата Сообщение от Depressa Посмотреть сообщение
далее,есть, типы задач, на сложение/вычитание/умножение(скалярное произведение) двух массивов
как я понял, для этого нужно задать три массива, два на вход,один на выход с нужным действием?
Все правильно, нужен 3-й.

Добавлено через 1 минуту
Цитата Сообщение от Depressa Посмотреть сообщение
первая это сортировка,но я ее сделал и вышло так
Сортировка 3-х введенных чисел?
Depressa
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 83
28.11.2011, 20:32  [ТС]     Задачи массивы( объяснение) #3
простите
не тот код ввел
вот сортировка
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
#include <iostream> 
#include <stdlib.h> 
using namespace std; 
 
void sort(char* a, int size); 
void mas_out(char* a, int size); 
void mas_in(char* a, int size); 
 
int main(int argc, char *argv[]) 
{ 
    char* mas; 
    int size; 
    cout << "Enter size: "; 
    cin >> size; 
    mas = (char*)malloc(size); 
    mas_in(mas, size); 
    mas_out(mas, size); 
    sort(mas, size); 
    mas_out(mas, size); 
    free(mas); 
    return 0; 
} 
 
void mas_in(char* a, int size) 
{ 
    for (int i=0; i<size; ++i) 
        cin >> a[i]; 
} 
 
void sort(char* a, int size) 
{ 
    for (int i=0; i<size; ++i) 
        for(int ii=size-1; ii>i; --ii) 
        { 
            if (a[ii-1]<a[ii]) 
            { 
                char temp = a[ii-1]; 
                a[ii-1] =  a[ii]; 
                a[ii] = temp; 
            } 
        } 
} 
 
void mas_out(char* a, int size) 
{ 
    for(int i=0; i<size; ++i) 
        cout << (int)a[i] << "(" << a[i] << ") "; 
    cout << endl; 
}
ну и сама суть всех вопросов
как будет изменяться
вот эти коды
C++
1
2
3
4
5
void mas_in(char* a, int size) 
{ 
    for (int i=0; i<size; ++i) 
        cin >> a[i]; 
}
а так же
C++
1
2
3
4
5
6
void mas_out(char* a, int size) 
{ 
    for(int i=0; i<size; ++i) 
        cout << (int)a[i] << "(" << a[i] << ") "; 
    cout << endl; 
}




по поводу malloc/free отличие от new and delete только , что во вторых вместо ( )--[ ]?
а как задается обращение к памяти статически?
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 20:41     Задачи массивы( объяснение) #4
Цитата Сообщение от Depressa Посмотреть сообщение
но вот второй вопрос, как измениться отдельные фрагменты кода ( на примере моего примера с пузырьком)
то есть: чтобы шло по схеме
1)Выделяем память под массив(ы) небольшого объема5-10элементов
2)Массив(ы) вводятся с клавиатуры.( желательно на примере cin и cout( до get и printoff не дорос
3)Массив(ы) обрабатываются функцией(сложение и т.д.)
4) Массив(ы) выводятся на экран.
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
#include <iostream>
using namespace std;
 
int *add (int *temp1, int* temp2)
{
    int* result = new int [3];
    for(int i = 0; i < 3; i++)
    {
        result[i] = temp1[i] + temp2[i];
    }
    
    return result;
}
 
int main()
{
 
    int *mas1 = new int [3];
    int *mas2 = new int [3];
 
    cout << "Enter mas1: " << endl
    for(int i = 0; i < 3; i++)
    {
        cin >> mas1[i];
    }
    
    cout << "Enter mas2: " << endl
    for(int i = 0; i < 3; i++)
    {
        cin >> mas2[i];
    }
    
    add(mas1, mas2);
    
 
    return 0;
}
писал в блакноте, надеюсь ошибок нет. Только не вывел результирующий массив.
Только непонятно что Вам нужно изменить, точнее какой фрагмент кода.

Если Вам нужно изменить память, кусок или что-то сделать с ней, добавить..
Тогда почитайте про realloc
Depressa
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 83
28.11.2011, 20:52  [ТС]     Задачи массивы( объяснение) #5
Цитата Сообщение от ZaVyLoN Посмотреть сообщение
писал в блакноте, надеюсь ошибок нет. Только не вывел результирующий массив.
Только непонятно что Вам нужно изменить, точнее какой фрагмент кода.
Если Вам нужно изменить память, кусок или что-то сделать с ней, добавить..
Тогда почитайте про realloc
я просто по задач однотипным прохожу, там изменяется только сама функция( какие есть я написал),тип данных да способы вызыва памяти
как пример была сортировка пузырьком
есть вот такие
Напишите функцию, которая вычисляет скалярное произведение двух массивов. Массивы содержат элементы типа unsigned short. Каждый массив передается в функцию через пару параметров - указатель на первый элемент, и размер массива. 

Также напишите две функции: первая - для вывода элементов массива на экран и вторая - для ввода с клавиатуры. 

В функции main протестируйте работу Ваших функций. Память под массив(ы), с которыми идет работа, выделять/освобождать динамически, через операторы new/delete




Напишите функцию, которая вычисляет индекс минимального элемента массива. Массив содержит элементы типа unsigned long long. Массив передается в функцию через два параметра - указатель на первый элемент, и размер массива. 

Также напишите две функции: первая - для вывода элементов массива на экран и вторая - для ввода с клавиатуры. 

В функции main протестируйте работу Ваших функций. Память под массив(ы), с которыми идет работа, выделять статически. 




Напишите функцию, которая вычисляет максимальный элемент массива. Массив содержит элементы типа char. Массив передается в функцию через два параметра - указатель на первый элемент, и размер массива. 

Также напишите две функции: первая - для вывода элементов массива на экран и вторая - для ввода с клавиатуры. 

В функции main протестируйте работу Ваших функций. Память под массив(ы), с которыми идет работа, выделять/освобождать динамически, через операторы new/delete





вот они,вроде бы однотипны, но разобраться что будет каждый раз меняться в
C++
1
void mas_out(in)
не могу понять, не могли бы обьяснить на паре примеров


схема действий во всех задачах такова:
пишем вызов памяти( статик или динамик)
потом ввод
потом саму функцию(зависит от того что дано)
а потом вывод на экран
я прав?
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 21:02     Задачи массивы( объяснение) #6
C++
1
2
3
int* ccc = new int[20];
// &
int* ccc = (int*)malloc(20);
В данном случае эффект будет один и тот же.




Цитата Сообщение от Depressa Посмотреть сообщение
ну и сама суть всех вопросов
как будет изменяться
вот эти коды
Это если вместо malloc использовать new?
ответ: никак

Добавлено через 9 минут
Цитата Сообщение от Depressa Посмотреть сообщение
схема действий во всех задачах такова:
пишем вызов памяти( статик или динамик)
потом ввод
потом саму функцию(зависит от того что дано)
а потом вывод на экран
я прав?

да, все правильно.
> потом саму функцию(передаете в нее параметры)
Depressa
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 83
28.11.2011, 21:08  [ТС]     Задачи массивы( объяснение) #7
я сейчас наберу тут функцию, проверите её на ошибки?
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 21:12     Задачи массивы( объяснение) #8
Цитата Сообщение от Depressa Посмотреть сообщение
я сейчас наберу тут функцию, проверите её на ошибки?
Набирайте.
Если не я, то кто-нибудь еще проверит
Depressa
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 83
28.11.2011, 21:47  [ТС]     Задачи массивы( объяснение) #9
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
#include <iostream>
#include <stdlib.h>
using namespace std;
 
void sort(int* a, int size);
void mas_out(int* a, int size);
void mas_in(int* a, int size);
 
int main(int argc, char *argv[])
{
    int* mas;
    int size;
    cout << "Enter size: ";
    cin >> size;
    mas = (int*)malloc(size);
    mas_in(mas, size);
    mas_out(mas, size);
    sort(mas, size);
    mas_out(mas, size);
    free(mas);
    return 0;
}
void mas_in(int* a, int size)
{
    for (int i=0; i<size; ++i) // запись в массив, правильно?
        cin >> a[i];
}
void sort(int* a, int size)
 
 
{
    int* max, maxi; //максимум и его индекс
    max=a[0];
    for (int i=1; i < size;++i)// сравнение элементов
    {
        if (a[i] > max)
        {
            max=a[i]; maxi=i;// процесс обработки
        }
    }
}
void mas_out(int* a, int size)
{
    cout << "Maksimal'nij element massiva " << max << " s indeksom " << maxi+1 << endl;
    cout << endl;
}


вот что вышло на максимальный и индекс максимума
боюсь напутал начиная c
C++
1
int* max, max ini
так как QT начал ругаться в количестве 6 раз как раз на те строчки
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 22:05     Задачи массивы( объяснение) #10
Цитата Сообщение от Depressa Посмотреть сообщение
for (int i=0; i<size; ++i) // запись в массив, правильно?
Используйте постфиксный инкримент.
i++;


Цитата Сообщение от Depressa Посмотреть сообщение
int* max, maxi; //максимум и его индекс
Вам достаточно переменной типа int. Уберите *.
И перстанет ругаться



Цитата Сообщение от Depressa Посмотреть сообщение
void mas_out(int* a, int size)
{
cout << "Maksimal'nij element massiva " << max << " s indeksom " << maxi+1 << endl;
cout << endl;
}

Компилятор будет ругаться на
C++
1
cout << "Maksimal'nij element massiva " << max << " s indeksom " << maxi+1 << endl;
Т.к. перменные не объявлены.

здесь не совсемпонятно что должна делать фун-ция mas_out
напишите что должна делать ф-ция mas_out
Depressa
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 83
28.11.2011, 22:37  [ТС]     Задачи массивы( объяснение) #11
C++
1
cout
должен выводить после задания размера и ввода массива максимум и его индекс
остальные ошибки ушли спасибо)
что-то типо
C++
1
2
3
4
5
6
void mas_out(char* a, int size) 
{ 
    for(int i=0; i<size; ++i) 
        cout << (int)a[i] << "(" << a[i] << ") "; 
    cout << endl; 
}
как для сортировки
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
29.11.2011, 01:29     Задачи массивы( объяснение) #12
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
#include <iostream>
#include <stdlib.h>
using namespace std;
 
void mas_in(int* a, int size); 
void mas_out(int* a, int size);
void sort(int* a, int size);
 
int main(int argc, char *argv[])
{
    int size;
    cout << "Enter size: ";
    cin >> size;
    int* mas = (int*)malloc(size);
 
    cout << "Enter massive: " << endl;
    mas_in(mas, size);
    cout << endl;
    
    
    cout << "Massive: " << endl;
    mas_out(mas, size);
    cout << endl;
    
 
    sort(mas, size);
    cout << "Sort Massive: " << endl;
    mas_out(mas, size);
    cout << endl;
    
    free(mas);
    mas = NULL;
    return 0;
}
void  mas_in(int* a, int size)
{
    for (int i = 0; i < size; i++) 
        cin >> a[i];
}
 
void sort(int* a, int size)
{
    int max;    
    // сортировка "метод пузырька"
    for (int i=0; i < size; i++)
    {
        for(int j = 0; j < size - i - 1; j++)
        {
            if(a[j] >= a[j + 1]) // если нужно по убыванию, меняешь знак на <
            {
                max = a[j];
                a[j] = a[j + 1];
                a[j + 1] = max;
            }
        }
        
    }
}
 
 
void mas_out(int* a, int size)
{
    for(int i=0; i < size; i++) 
        cout << "a[" << i << "] = " << a[i] << endl;
}
Если нужно макс. эл. и его индекс, тогда можно сделать вот так.
Дописать фун-цию mas_out.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void mas_out(int* a, int size)
{
    int max = 0, index = 0;
    for(int i=0; i < size; i++) 
        cout << "a[" << i << "] = " << a[i] << endl;
    max = a[0];
    for(int i = 0; i < size; i++)
    {
        
        if(a[i] >= max)
        {
            max = a[i];
            index = i;
        }
    }
 
    cout << "Max el.: a[" << index << "] = " << max << endl;
}
Добавлено через 35 минут
Табуляция почему-то сбилась, выровняешь.
Будет читабельней и разборчивей.
Depressa
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 83
29.11.2011, 17:21  [ТС]     Задачи массивы( объяснение) #13
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
#include <iostream>
#include <stdlib.h>
using namespace std;
 
void sort(int* a, int size);
void mas_out(int* a, int size);
void mas_in(int* a, int size);
 
int main(int argc, char *argv[])
{
    int* mas;
    int size;
    cout << "Enter size: ";
    cin >> size;
    mas = (int*)malloc(size);
    mas_in(mas, size);
    mas_out(mas, size);
    sort(mas, size);
    mas_out(mas, size);
    free(mas);
    return 0;
}
void mas_in(int* a, int size)
{
    for (int i=0; i<size; i++) // запись в массив, правильно?
        cin >> a[i];
}
void sort(int* a, int size)
 
 
{
    int min, mini; //
    min=a[0];
    for (int i=1; i < size;++i)// сравнение элементов
    {
        if (a[i] < min)
        {
            min=a[i]; mini=i;// процесс обработки
        }
    }
}
void mas_out(int* a, int size)
{
        int min = 0, index = 0;
        for(int i=0; i < size; i++)
                cout << "a[" << i << "] = " << a[i] << endl;
        min = a[0];
        for(int i = 0; i < size; i++)
        {
 
                if(a[i] <= min)
                {
                        min = a[i];
                        index = i;
                }
        }
 
        cout << "Min el.: a[" << index << "] = " << min << endl;
}
похоже на тоже самое но для минималки?
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
29.11.2011, 17:29     Задачи массивы( объяснение) #14
Цитата Сообщение от Depressa Посмотреть сообщение
похоже на тоже самое но для минималки?
Цитата Сообщение от Depressa Посмотреть сообщение
if(a[i] <= min)
Да, все правильно.
Depressa
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 83
29.11.2011, 18:32  [ТС]     Задачи массивы( объяснение) #15
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
#include <iostream>
#include <stdlib.h>
using namespace std;
 
void random_mas(int* mas, int size);
void mas_out(int* mas, int size);
 
 
int main(int argc, char *argv[])
{
    int* mas;
    int size;
    cout << "Enter size: ";
    cin >> size;
    mas = (int*)malloc(size);
    mas_out(mas, size);
    random_mas(mas, size);
    mas_out(mas, size);
    free(mas);
    return 0;
}
 
 
void random_mas(int* mas, int size)
{
    for (int i=0; i<size; ++i)
        mas[i]=rand();
}
 
void mas_out(int* mas, int size)
{
    for(int i=0; i<size; ++i)
        cout << (int)mas[i] << " ";
 
}
вот что вышло для рандомного заполнения, есть одно но
он заполяет если пишу размер допустим 4, то в два раза больше значений, и так далее


ошибку нашел,лишний
C++
1
mas_out(mas, size);
правильно?
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
29.11.2011, 21:29     Задачи массивы( объяснение) #16
Да, можете еще границы рандома задать.
C++
1
mas[i]=rand()%b + a;
Где а и b соответсвенно нижняя и верхняя границы рандома.
Depressa
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 83
30.11.2011, 18:15  [ТС]     Задачи массивы( объяснение) #17
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
#include <iostream>
#include <stdlib.h>
using namespace std;
 
void plus(float* a, int size);
void mas_out(float* a, int size);
void mas_in(float* a, int size);
 
int main(int argc, char *argv[])
{
    float* mas;
    int size;
    cout << "Enter size: ";
    cin >> size;
    mas = (float*)malloc(size);
    mas_in(mas, size);
    mas_out(mas, size);
    plus(mas, size);
    mas_out(mas, size);
    free(mas);
    return 0;
}
 
void mas_in(float* a, int size)
{
    for (int i=0; i<size; ++i)
        cin >> a[i];
}
void plus(float* a, int size)
{
    float s;
    s=0;
    for (int i=0; i < size;++i)
    {
        if  (a[i] > s)
        {
            s=s+a[i];
        }
    }
}
void mas_out(float* a, int size)
{
    float s=1;
    for (int i=0; i<size; ++i)
    {
        if(a[i] > s)
        {
            s=s+a[i];
        }
    }
    cout << "plus " << s << endl;
}


пытался для суммы всех положительных чисел в массиве
но увы что то на выходе не то число пишет
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
30.11.2011, 20:39     Задачи массивы( объяснение) #18
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
#include <iostream>
#include <stdlib.h>
using namespace std;
 
float plus(float* a, int size);
void mas_in(float* a, int size);
void mas_out(float* a, int size);
 
int main()
{
    float* mas;
    float result;
    int size;
    cout << "Enter size: ";
    cin >> size;
 
 
    mas = (float*)malloc(size*sizeof(int));
    mas_in(mas, size);
    
    
    cout << "Sums = " << plus(mas, size) << endl;
    
    free(mas);
    return 0;
}
 
void mas_in(float* a, int size)
{
    for (int i=0; i<size; i++)
        cin >> a[i];
}
void mas_out(float* a, int size)
{
    for (int i=0; i<size; i++)
        cout << a[i] << " ";
}
float plus(float* a, int size)
{
    float s = 0;
    for (int i=0; i < size; i++)
    {
        if  (a[i] > 0)
        {
            s += a[i];
        }
    }
    return s;
}
Вот код.
Вывод суммы положительных элементов.
Возвращет значение типа float
т.е. нашу сумму
и в main мы ее выводим
Depressa
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 83
30.11.2011, 22:32  [ТС]     Задачи массивы( объяснение) #19
Последовательность void_sum void_in void_out может любой быть?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2011, 14:47     Задачи массивы( объяснение)
Еще ссылки по теме:

C++ Задачи на массивы
{while, do} нужен исходный код либо объяснение задачи C++
Объяснение задачи на шаблоны C++

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

Или воспользуйтесь поиском по форуму:
ZaVyLoN
 Аватар для ZaVyLoN
83 / 83 / 6
Регистрация: 26.10.2009
Сообщений: 269
01.12.2011, 14:47     Задачи массивы( объяснение) #20
Цитата Сообщение от Depressa Посмотреть сообщение
Последовательность void_sum void_in void_out может любой быть?
При объявлении прототипа фун-ций(перед main), может быть любой.
А вызов в main должен быть последовательниым, т.е. снчала инициализация.

Добавлено через 1 минуту
add & sub

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
76
#include <iostream>
#include <stdlib.h>
using namespace std;
 
 
void mas_in1(float* a1, int size);
void mas_in2(float* a2, int size);
void mas_out(float* a, int size);
float *add(float *a1, float *a2, int size) ;
float *sub(float *a1, float *a2, int size) ;
 
int main()
{
    float *mas1, *mas2, *result;
    int size;
    cout << "Enter size: ";
    cin >> size;
 
    mas1 = (float*)malloc(size*sizeof(int));
    mas2 = (float*)malloc(size*sizeof(int));
    result = (float*)malloc(size*sizeof(int));
 
    mas_in1(mas1, size);
    mas_in2(mas2, size);
    
    cout << "Sums" << endl;
    result = add(mas1, mas2, size);
    mas_out(result, size);
 
    cout << "\nSub" << endl;
    result = sub(mas1, mas2, size);
    mas_out(result, size);
 
 
    free(mas1);
    free(mas2);
    return 0;
}
 
void mas_in1(float* a1, int size)
{
    for (int i=0; i<size; i++)
        cin >> a1[i];
}
 
void mas_in2(float* a2, int size)
{
    for (int i=0; i<size; i++)
        cin >> a2[i];
}
 
void mas_out(float* a, int size)
{
    for (int i=0; i<size; i++)
        cout << a[i] << " ";
}
float *add(float* a1, float* a2, int size)
{
    float *temp = (float*)malloc(size*sizeof(int));
    for (int i=0; i < size; i++)
    {
        temp[i] = a1[i] + a2[i];
    }
 
    return temp;
}
float *sub(float* a1, float* a2, int size)
{
    float *temp = (float*)malloc(size*sizeof(int));
    for (int i=0; i < size; i++)
    {
        temp[i] = a1[i] - a2[i];
    }
 
    return temp;
}
Yandex
Объявления
01.12.2011, 14:47     Задачи массивы( объяснение)
Ответ Создать тему
Опции темы

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