Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
1

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

28.11.2011, 20:07. Показов 4702. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте,не могли бы помочь в написании кода и обьяснить некоторые подробности
есть несколько типов задач, по массивам которые хотелось бы разобрать
первая это сортировка,но я ее сделал и вышло так
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) и столкнулся вот с такими проблемами
заранее спасибо.
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.11.2011, 20:07
Ответы с готовыми решениями:

Объяснение задачи на шаблоны
#include &lt;iostream&gt; using namespace std; template &lt;typename A&gt; class Real{ A a; public:...

Объяснение кода (Массивы)
Здравствуйте, имеются 2 задачи код которых нужно разложить по полочкам т.е объяснить что делает...

Объяснение задачи
uses crt; procedure nikita(a{количество дисков}, i1{откуда}, i2{куда}: integer); begin if a &lt;&gt; 1...

Напишите, пожалуйста объяснение к каждой строчке кода. Если можно, и объяснение некоторых функций
#include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; void random(int * a, int size) { while(size--) ...

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

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

Добавлено через 1 минуту
Цитата Сообщение от Depressa Посмотреть сообщение
первая это сортировка,но я ее сделал и вышло так
Сортировка 3-х введенных чисел?
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
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 только , что во вторых вместо ( )--[ ]?
а как задается обращение к памяти статически?
0
84 / 84 / 20
Регистрация: 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
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
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)
не могу понять, не могли бы обьяснить на паре примеров


схема действий во всех задачах такова:
пишем вызов памяти( статик или динамик)
потом ввод
потом саму функцию(зависит от того что дано)
а потом вывод на экран
я прав?
0
84 / 84 / 20
Регистрация: 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 Посмотреть сообщение
схема действий во всех задачах такова:
пишем вызов памяти( статик или динамик)
потом ввод
потом саму функцию(зависит от того что дано)
а потом вывод на экран
я прав?

да, все правильно.
> потом саму функцию(передаете в нее параметры)
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
28.11.2011, 21:08  [ТС] 7
я сейчас наберу тут функцию, проверите её на ошибки?
0
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 21:12 8
Цитата Сообщение от Depressa Посмотреть сообщение
я сейчас наберу тут функцию, проверите её на ошибки?
Набирайте.
Если не я, то кто-нибудь еще проверит
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
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 раз как раз на те строчки
0
84 / 84 / 20
Регистрация: 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
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
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; 
}
как для сортировки
0
84 / 84 / 20
Регистрация: 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 минут
Табуляция почему-то сбилась, выровняешь.
Будет читабельней и разборчивей.
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
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;
}
похоже на тоже самое но для минималки?
0
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
29.11.2011, 17:29 14
Цитата Сообщение от Depressa Посмотреть сообщение
похоже на тоже самое но для минималки?
Цитата Сообщение от Depressa Посмотреть сообщение
if(a[i] <= min)
Да, все правильно.
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
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);
правильно?
0
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
29.11.2011, 21:29 16
Да, можете еще границы рандома задать.
C++
1
mas[i]=rand()%b + a;
Где а и b соответсвенно нижняя и верхняя границы рандома.
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
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;
}


пытался для суммы всех положительных чисел в массиве
но увы что то на выходе не то число пишет
0
84 / 84 / 20
Регистрация: 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 мы ее выводим
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
30.11.2011, 22:32  [ТС] 19
Последовательность void_sum void_in void_out может любой быть?
0
84 / 84 / 20
Регистрация: 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;
}
1
01.12.2011, 14:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2011, 14:47
Помогаю со студенческими работами здесь

2 задачи на массивы
Доброго времени суток! У меня две задачки на массивы, помогите плиз... 1) В одномерном числовом...

Задачи на массивы
Народ, скиньте какие нить задачи на массивы, условие задач, только не очень сложных, хочу порешать)...

Задачи на массивы...
Не получилось решить...просьба помочь... 1. Найти номера элементов массива целых чисел А(40),...

Задачи на массивы.
Даны 2 массива X и Y, состоящие из N элементов каждый. Каждаяпара элементов вида (Xi,yi)задаёт...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru