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

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

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

Сделать из одной программы процедуру и головную - C++

08.03.2014, 23:01. Просмотров 331. Ответов 10
Метки нет (Все метки)

Мной написана программа, которая меняет местами указанные строки в массиве. Но необходимо, чтобы это была процедура с параметрами
C++
1
int Func( int * Array, int Dim1, int Dim2, ...).
с соответствующим обращением в головной программе. В моем случае возникает сложность, т.к к элементу напрямую я обратиться уже не могу (a[i,j]) , в таком случае процедура не заработала бы. Так как должна выглядеть процедура и головная программа?
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
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <stdio.h>
using namespace std;
 
void main()
{
    SetConsoleOutputCP(1251);
    const int Y = 3, X = 4;
    int a[Y][X];
 
    cout << "Enter the matrix:\n";
    for (int i = 0; i < Y; i++)
    {
        for (int j = 0; j < X; j++)
        {
            cout << "a[" << i << "][" << j << "] = ";
            cin >> a[i][j];
        }
    }
    cout << "Result:\n";
 
    int a1;
    int a2;
    cout << "Enter number of strings you want to change:";
    cin >> a1;
    cin >> a2;
 
 
    for (int j = 0; j < X; j++)
    {
        int b = a[a1][j];
        a[a1][j] = a[a2][j];
        a[a2][j] = b;
    }
 
    for (int i = 0; i < Y; i++)
    {
        for (int j = 0; j < X; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << '\n';
    }
 
    system("pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.03.2014, 23:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сделать из одной программы процедуру и головную (C++):

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

Как сделать так, чтобы две разные программы могли работать с одной и той же областью оперативной памяти? - C++
Собственно даже незнаю куда копать. Пробовал в одной программе вывести указатель на массив, а в другой указателю присвоить это значение...

Как из этого кусочка программы сделать процедуру? - Pascal ABC
Как из этого кусочка программы сделать процедуру? var g, n: byte; for n := 1 to 12 do g := g + mass(n);

Нужно сделать так чтоб с одной программы работать одновременно с двух компьютеров - 1С
всем привет помогите! мне нужно сделать так чтоб с одной программы работать одновременно с двух компьютеров

Как сделать так, чтобы при старте одной программы автоматически запускалась другая? - CMD/BAT
Надо сделать так чтобы при старте одной программы автоматически запускалась другая

Передать массив из класса в головную программу - VBA
В программе используется класс. Как внутри класса создать массив данных - доступный в головной программе? Здесь в классе создается...

10
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
08.03.2014, 23:12 #2
Головная программа - это процедура main()
В вашем случае необходимо сделать отдельную процедуру (все main), а из main её вызывать
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
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <stdio.h>
using namespace std;
 
int Func( int * Array, int Dim1, int Dim2, ...)
 
{ 
 SetConsoleOutputCP(1251);
    const int Y = 3, X = 4;
    int a[Y][X];
 
    cout << "Enter the matrix:\n";
    for (int i = 0; i < Y; i++)
    {
        for (int j = 0; j < X; j++)
        {
            cout << "a[" << i << "][" << j << "] = ";
            cin >> a[i][j];
        }
    }
    cout << "Result:\n";
 
    int a1;
    int a2;
    cout << "Enter number of strings you want to change:";
    cin >> a1;
    cin >> a2;
 
 
    for (int j = 0; j < X; j++)
    {
        int b = a[a1][j];
        a[a1][j] = a[a2][j];
        a[a2][j] = b;
    }
 
    for (int i = 0; i < Y; i++)
    {
        for (int j = 0; j < X; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << '\n';
    }
 
    system("pause");
return 0;
}
void main()
{
Func( int * Array, int Dim1, int Dim2, ...).   
}
где вместо int * Array, int Dim1, int Dim2, ... указываются значения
0
nick95nick
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 18
09.03.2014, 00:08  [ТС] #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
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
 
int ChangeValue(int* Array, int Dim, int value)
{
    int i, j,first,second;
    int a[10],b[10];
    for (i = 0; i < Dim; i++)
            //if ((i == j) && (Array[i*Dim+j] > 0) && (Array[i*Dim+j] > value))
            a[i]=Array[i*Dim][first];
            b[i]=Array[i*Dim][second];
    return a[i];
}
 
void main(void)
{
    int a[10][10];
    int j;
    int i = 0;
    srand(time(NULL));
    while (i < 10)
    {
        for (j = 0; j < 10; j++)
        {
            a[i][j] = 10 - rand() % 20;
            printf("%2d ", a[i][j]);
        }
        i++;
        puts("");
    }
    int val1,val2;
    printf("Enter number of strings to change: ");
    scanf("%i", &val1,&val2);
    int result = positiveAmount(*a, 10, val);
    printf("There are %i such elements in the array", result);
    getch();
}
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
09.03.2014, 00:10 #4
Ну, как минимум зачем вам процедура, если вы её не вызываете в main?
0
nick95nick
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 18
09.03.2014, 00:12  [ТС] #5
Прошу прощения, это не тот код-просто на вкладках сразу несколько разных программ((

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
#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <stdio.h>
using namespace std;
 
int Func(int * Array, int Dim1, int Dim2)
 
{
    for (int j = 0; j < 3; j++)
    {
        int b = Array[Dim1][j];
        Array[Dim1][j] = Array[Dim2][j];
        Array[Dim2][j] = b;
    }
 
    for (int i = 0; i < 4; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            cout << Array[i][j] << " ";
        }
        cout << '\n';
    }
 
    system("pause");
    return 0;
}
void main()
{
    SetConsoleOutputCP(1251);
    const int Y = 3, X = 4;
    int a[Y][X];
    int a1, a2;
    cout << "Enter the matrix:\n";
    for (int i = 0; i < Y; i++)
    {
        for (int j = 0; j < X; j++)
        {
            cout << "a[" << i << "][" << j << "] = ";
            cin >> a[i][j];
        }
    }
    cout << "Result:\n";
 
    cout << "Enter number of strings you want to change:";
    cin >> a1;
    cin >> a2;
    Func(*a, a1,a2).
}
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
09.03.2014, 00:14 #6
Если у вас ошибки, то было бы неплохо прилагать их список к листингу
0
nick95nick
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 18
09.03.2014, 00:24  [ТС] #7
12 IntelliSense: требуется имя члена e:\Users\Коля\Desktop\prg2\prg2\prg2.cpp 50 1 prg2

6 IntelliSense: выражение должно иметь тип указателя на объект e:\Users\Коля\Desktop\prg2\prg2\prg2.cpp 12 23 prg2

7 IntelliSense: выражение должно иметь тип указателя на объект e:\Users\Коля\Desktop\prg2\prg2\prg2.cpp 13 15 prg2

8 IntelliSense: выражение должно иметь тип указателя на объект e:\Users\Коля\Desktop\prg2\prg2\prg2.cpp 13 32 prg2

9 IntelliSense: выражение должно иметь тип указателя на объект e:\Users\Коля\Desktop\prg2\prg2\prg2.cpp 14 15 prg2

10 IntelliSense: выражение должно иметь тип указателя на объект e:\Users\Коля\Desktop\prg2\prg2\prg2.cpp 21 21 prg2

11 IntelliSense: выражение должно иметь тип класса e:\Users\Коля\Desktop\prg2\prg2\prg2.cpp 49 2 prg2

Ошибка 1 error C2109: для индекса требуется массив или указатель e:\users\коля\desktop\prg2\prg2\prg2.cpp 12 1 prg2

Ошибка 2 error C2109: для индекса требуется массив или указатель e:\users\коля\desktop\prg2\prg2\prg2.cpp 13 1 prg2

Ошибка 3 error C2109: для индекса требуется массив или указатель e:\users\коля\desktop\prg2\prg2\prg2.cpp 14 1 prg2

Ошибка 4 error C2109: для индекса требуется массив или указатель e:\users\коля\desktop\prg2\prg2\prg2.cpp 21 1 prg2

Ошибка 5 error C2059: синтаксическая ошибка: } e:\users\коля\desktop\prg2\prg2\prg2.cpp 50 1 prg2
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
09.03.2014, 00:29 #8
строка 49, как вы можете передавать массив в функцию, где определен указатель в качестве входного параметра?
0
castaway
Эксперт С++
4885 / 3020 / 370
Регистрация: 10.11.2010
Сообщений: 11,078
Записей в блоге: 10
Завершенные тесты: 1
09.03.2014, 00:30 #9
Чего тут смотреть то..
7-я строка:
C++
1
int Func(int Array[3][4], int Dim1, int Dim2)
49-я:
C++
1
Func(a, a1,a2);
0
Worf
43 / 43 / 6
Регистрация: 06.02.2014
Сообщений: 233
09.03.2014, 08:33 #10
Ну, о чём и я говорил
0
nick95nick
0 / 0 / 0
Регистрация: 28.04.2012
Сообщений: 18
09.03.2014, 10:20  [ТС] #11
Теперь получается что две программы-исходная без процедуры и получившаяся- работают совершенно по-разному (т.е последняя работает не так как нужно). Отчего это может быть?
0
Миниатюры
Сделать из одной программы процедуру и головную   Сделать из одной программы процедуру и головную  
09.03.2014, 10:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.03.2014, 10:20
Привет! Вот еще темы с ответами:

После неудавшегося отката системы к заводским настройкам получил головную боль с жестким диском - Восстановление данных
Добрый день, форумчане! Случилась такая штука. Принесли ноут, Hp pavilion g6. Стояла Win 8 на нем. Проблема была в том, что включаешь ноут...

Использовать в одной программе процедуру и функцию - Turbo Pascal
Здравствуйте, уважаемые программисты. Помогите, пожалуйста, переписать программу: uses CRT; const n=5; m=4; var ...

Как отправить в RAM переменную из одной программы, а потом достать её из другой программы? - C++ Qt
Как отправить в RAM переменную из одной программы, а потом достать её из другой программы?

Все программы открываются в виде одной программы - Windows 7
все программы открываются в виде одной программы(AIMP(а) 2) (все значки AIMP(а) 2) windows 7


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

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

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