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

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

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

Студворк — интернет-сервис помощи студентам
Здравствуйте,не могли бы помочь в написании кода и обьяснить некоторые подробности
есть несколько типов задач, по массивам которые хотелось бы разобрать
первая это сортировка,но я ее сделал и вышло так
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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2011, 20:07
Ответы с готовыми решениями:

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

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

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

19
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 20:27
Цитата Сообщение от 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  [ТС]
простите
не тот код ввел
вот сортировка
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
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 20:41
Цитата Сообщение от 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  [ТС]
Цитата Сообщение от ZaVyLoN Посмотреть сообщение
писал в блакноте, надеюсь ошибок нет. Только не вывел результирующий массив.
Только непонятно что Вам нужно изменить, точнее какой фрагмент кода.
Если Вам нужно изменить память, кусок или что-то сделать с ней, добавить..
Тогда почитайте про realloc
я просто по задач однотипным прохожу, там изменяется только сама функция( какие есть я написал),тип данных да способы вызыва памяти
как пример была сортировка пузырьком
есть вот такие
Напишите функцию, которая вычисляет скал ярное произведение двух массивов. Массив ы содержат элементы типа unsigned short.  Каждый массив передается в функцию чере з пару параметров - указатель на первый элемент, и размер м ассива. 

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

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




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

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

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




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

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

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





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


схема действий во всех задачах такова:
пишем вызов памяти( статик или динамик)
потом ввод
потом саму функцию(зависит от того что дано)
а потом вывод на экран
я прав?
0
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 21:02
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  [ТС]
я сейчас наберу тут функцию, проверите её на ошибки?
0
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 21:12
Цитата Сообщение от Depressa Посмотреть сообщение
я сейчас наберу тут функцию, проверите её на ошибки?
Набирайте.
Если не я, то кто-нибудь еще проверит
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
28.11.2011, 21:47  [ТС]
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
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
28.11.2011, 22:05
Цитата Сообщение от 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  [ТС]
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
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
29.11.2011, 01: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
#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  [ТС]
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
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
29.11.2011, 17:29
Цитата Сообщение от Depressa Посмотреть сообщение
похоже на тоже самое но для минималки?
Цитата Сообщение от Depressa Посмотреть сообщение
if(a[i] <= min)
Да, все правильно.
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
29.11.2011, 18:32  [ТС]
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
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
29.11.2011, 21:29
Да, можете еще границы рандома задать.
C++
1
mas[i]=rand()%b + a;
Где а и b соответсвенно нижняя и верхняя границы рандома.
1
3 / 3 / 0
Регистрация: 26.11.2011
Сообщений: 84
30.11.2011, 18: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
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
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
30.11.2011, 20:39
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  [ТС]
Последовательность void_sum void_in void_out может любой быть?
0
 Аватар для ZaVyLoN
84 / 84 / 20
Регистрация: 26.10.2009
Сообщений: 269
01.12.2011, 14:47
Цитата Сообщение от 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.12.2011, 14:47
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru