0 / 0 / 0
Регистрация: 29.12.2015
Сообщений: 15
1

Доделать программу семинара

12.07.2016, 09:22. Показов 565. Ответов 2

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Помогите пожалуйста разобраться со следующим заданием.

Функции и массивы
Выполнить задания третьего семинара («Одномерные массивы») и четвертого семинара («Двумерные массивы»), оформив каждый пункт задания в виде функции. Все необходимые данные для функций должны передаваться им в качестве параметров. Использование глобальных переменных в функциях не допускается.

Сам я пытаюсь разобраться, попутно читая литературу, но к сроку боюсь не успею.

Код третьего семинара:

C++ (Qt)
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
77
78
79
80
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <math.h>
#include <algorithm>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int kol_a, i;
    cout << "Приветствую пользователь!" << endl;
    cout << "Введите количество элементов: " << endl;
    cin >> kol_a;
    if (kol_a < 0)
    {
        cout << " Введено отрицательное число\n";
        system("PAUSE");
        return 0;
    }
    int *a;
    a = new int[kol_a];
    cout << "Введите элементы массива: " << endl;
    for (int i = 0; i < kol_a; i++) cin >> a[i];
    int max = 0, imax = 0;
    for (int i = 0; i < kol_a; i++)
    {
        if (abs(a[i])>abs(a[imax]))
        {
            imax = i; max = a[imax];
        }
    }
    int ipos = -1;
    int ipos2 = -1;
    for (int i = 0; i < kol_a; i++)
        if (a[i] > 0)
        {
            ipos = i;
            break;
        }
 
    if (ipos == -1) cout << "Положительных элементов нет!\n";
    else if (ipos == kol_a - 1) cout << "Положительный элемент - последний!\n";
    else {
        double sum = 0;
        for (int i = ipos + 1; i < kol_a; i++)
            if (a[i] > 0)
            {
                ipos2 = i;
                break;
            }
        for (int i = ipos + 1; i < ipos2; i++)
        {
            sum += a[i];
        }
        int z = kol_a - 1;
        int p = 0;
        int temp;
        int temp1;
        for (i = 0; i < z; i++)
        {
                if ((a[i]) == 0)
            {
                while (a[z] == 0)
                {
                    z--;
                }
                temp1 = a[z];
                a[z] = a[i];
                a[i] = temp1;
                z--;
            }
        }
        for (int i = 0; i < kol_a; i++) cout << a[i] << ' ';
        cout << endl << "Сумма элементов между первыми положительными: " << sum << endl;
        cout << "Максимальный элемент по модулю: " << max << endl;
        system("PAUSE");
        return 0;
    }
}
Пункты задания я определил такие:
1 Ввод массива.
2 Модуль элементов и сравнение на максимальный
3 Первый и второй положительные элементы массива и сумма элементов между ними
4 Сортировка массива - все остальные, потом нули.
5 Вывод массива на экран.

Код четвёртого семинара:

C++ (Qt)
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
77
78
79
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <math.h>
#include <algorithm>
#include <iomanip>
void main()
{
    setlocale(LC_ALL, "Russian");
    double a[10][10], b[10][10], tmp;
    int i, j, N = 10, col;
    for (i = 0; i < N; i++)
    for (j = 0; j < N; j++)
    {
    printf("[%d] [%d]= ", i, j);
    scanf("%lf", &a[i][j]);
    }
    printf("Введённая матрица:\n");
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < N; j++)
            printf("%lf", a[i][j]);
        printf("\n");
            }
        for (i = 0; i < N; i++)
        for (j = 0; j < N; j++)
    {
        tmp = .0; col = 0;
        if (i>0)
        {
            tmp += a[i - 1][j];
            col++;
            if (j>0)
            {
                tmp += a[i - 1][j - 1];
                col++;
            }
            if (j < N - 1)
            {
                tmp += a[i - 1][j+1];
                col++;
            }
        }
        if (i<N - 1)
        {
            tmp += a[i + 1][j];
            col++;
            if (j>0)
            {
                tmp += a[i + 1][j - 1];
                col++;
            }
            if (j<N - 1)
            {
                tmp += a[i + 1][j + 1];
                col++;
            }
        }
        if (j>0)
        {
            tmp += a[i][j - 1];
            col++;
        }
        if (j<N - 1)
        {
            tmp += a[i][j + 1];
            col++;
        }
        b[i][j] = tmp / col;
        }
printf("Сглаженная матрица:\n");
for (i = 0; i < N; i++)
{
    for (j = 0; j < N; j++)
        printf("%lf", b[i][j]);
    printf("\n");
}
system("PAUSE");
    }

Пункты задания следующие:
1 Ввод матрицы +
2 Сглаживание +
3 Модули элементов ниже главной диагонали и их сумма +
4 Вывод массива на экран
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.07.2016, 09:22
Ответы с готовыми решениями:

Проверка на практике кода семинара по адаптивной верстке
Недавно я смотрел семинар по адаптивной верстке и там был выработан код, который очень наглядно...

Доделать программу
Задание : Фамилия и инициалы, должность, год поступления на работу, зарплата. Создать массив...

Доделать программу
uses crt; var a,b,c:integer; begin Write('a='); ReadLn(a); WriteLn(); for b:=0 to 0 do begin...

Доделать программу С++
Помогите пожалуйста доделать программу. Нужно , чтобы при вводе дробных чисел программа выдавала...

2
Модератор
Эксперт С++
13502 / 10754 / 6409
Регистрация: 18.12.2011
Сообщений: 28,699
12.07.2016, 09:26 2
Ознакомьтесь с образцами
Образцы (шаблоны) программ для типовых задач
Образцы (шаблоны) программ для типовых задач
1
0 / 0 / 0
Регистрация: 29.12.2015
Сообщений: 15
12.07.2016, 15:55  [ТС] 3
Ещё раз приветствую!
Более менее написал код, помогите исправить пожалуйста.
Вот что у меня получилось:
C++ (Qt)
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
#include <conio.h>
#include <iostream>
#include <windows.h>
#include <math.h>
#include <algorithm>
#include <iomanip>
using namespace std;
int* vvod_odnom_mass(int kol_a)
{
    int *mass = new int[kol_a];
    cout << "Введите элементы массива:";
    for (int i = 0; i < kol_a; i++)
        cin >> mass[i];
    return mass;
}
int** vvod_dvym_mass( int nrow, int ncol, int N)
{
    int** a = new int *[nrow];
        for (int i = 0; i < nrow; i++)
 
            printf("Введите элементы массива:\n");
        
        for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
        {
            printf("[%d] [%d]= ", i, j);
            scanf_s("%lf", &a[i][j]);
        }
        printf("Введённая матрица:\n");
            for (int i = 0; i < N; i++)
            {
                for (int j = 0; j < N; j++)
                    printf("%4.2lf ", a[i][j]);
                printf("\n");
            }
            return(a);
}
int mod_alem_mass(int kol_a, int mass[])
{
    double max = 0;
    int imax = 0;
        for (int i = 0; i < kol_a; i++)
        {
            if (abs(mass[i])>abs(mass[imax]))
            {
                imax = i; max = mass[imax];
            }
        }
        cout << "Максимальный по модулю элемент равен: "<< max << endl;
        return (max);
}
int nahog_ipos(int kol_a, int mass[])
{
    int ipos = -1;
    for (int i = 0; i < kol_a; i++)
    if (mass[i] > 0)
    {
        ipos = i;
        break;
    }
 
    if (ipos == -1) cout << "Положительных элементов нет!\n";
    else if (ipos == kol_a - 1) cout << "Положительный элемент - последний!\n";
    
    cout << "Первый положительный элемент равен: " << mass[ipos] << endl;
    return(ipos);
}
int nahog_ipos2(int kol_a, int ipos, int mass[])
{
    int ipos2 = -1;
    for (int i = ipos + 1; i < kol_a; i++)
    if (mass[i] > 0)
        {
            ipos2 = i;
            break;
        }
    cout << "Второй положительный элемент равен " << mass[ipos2] << endl;
    return(ipos2);
}
int ipos_ipos2_summ(int kol_a, int ipos, int ipos2, int mass[])
{
            double sum = 0;
            for (int i = ipos + 1; i < ipos2; i++)
            {
                sum += mass[i];
            }
            cout << "Сумма элементов между первым и вторым положительными элементами равна: " << sum << endl;
            return(sum);
}
int* sort(int kol_a, int mass[])
{
    int z = kol_a - 1;
            int temp1, i;
            for (i = 0; i < z; i++)
            {
                if ((mass[i]) == 0)
                {
                    while (mass[z] == 0)
                    {
                        z--;
                    }
                    temp1 = mass[z];
                    mass[z] = mass[i];
                    mass[i] = temp1;
                    z--;
                }
            }
            cout << "Отсортированный массив: "; 
            for (int i = 0; i < kol_a; i++) cout << mass[i] << ' ';
            return(mass);
}
int** sglag( int N, int** a, int nrow, int ncol )
{
    int** b = new int *[nrow];
    for (int i = 0; i < nrow; i++)
      for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
        {   
            double tmp;
            int col;
            tmp = .0; col = 0;
            if (i>0)
            {
                tmp += a[i - 1][j];
                col++;
                if (j>0)
                {
                    tmp += a[i - 1][j - 1];
                    col++;
                }
                if (j < N - 1)
                {
                    tmp += a[i - 1][j + 1];
                    col++;
                }
            }
            if (i<N - 1)
            {
                tmp += a[i + 1][j];
                col++;
                if (j>0)
                {
                    tmp += a[i + 1][j - 1];
                    col++;
                }
                if (j<N - 1)
                {
                    tmp += a[i + 1][j + 1];
                    col++;
                }
            }
            if (j>0)
            {
                tmp += a[i][j - 1];
                col++;
            }
            if (j<N - 1)
            {
                tmp += a[i][j + 1];
                col++;
            }
            b[i][j] = tmp / col;
        }
        printf("Сглаженная матрица:\n");
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < N; j++)
                printf("%4.2lf ", b[i][j]);
            printf("\n");
        }
        return(b);
}
int mod_sum_pod_diag(int N, int** b)
{
    double mod = 0;
        for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
        {
            if (j == i - 1)
            {
                mod += abs(b[i][j]);
            }
            if (j == i - 2)
            {
                mod += abs(b[i][j]);
            }
            if (j == i - 3)
            {
                mod += abs(b[i][j]);
            }
        }
        printf("Сумма модулей под гланой диагональю: ");
        printf("%4.2lf", mod);
        printf("\n");
        return (mod);
}
int main()
{
        setlocale(LC_ALL, "Russian");
        cout << "Приветствую пользователь!" << endl;
        /*cout << "Введите количество элементов: " << endl;*/
        int kol_a, nrow, ncol, N;
        /*cin >> kol_a;
        if (kol_a < 0)
        {
            cout << " Введено отрицательное число\n";
            system("PAUSE");
            return 0;
        }*/
    /*  int *d = vvod_odnom_mass(kol_a);
        int h = mod_alem_mass(kol_a, d);
        int o = nahog_ipos(kol_a, d);
        int p = nahog_ipos2(kol_a, o, d);
        int op = ipos_ipos2_summ(kol_a, o, p, d);
        sort(kol_a, d);*/
        cout << "\n Введите размер квадратной матрицы матрицы: ";
        cin >> nrow >> ncol;
        /*N = nrow;*/
        cout << "\n Введите число N, равное размеру квадратной матрицы: ";
        cin >> N;
        int** z = vvod_dvym_mass(nrow, ncol, N);
        int** z2 = sglag(N, z, nrow, ncol);
        int l = mod_sum_pod_diag(N, z2);
        cout << endl;
            system("PAUSE");
            return 0;
}
0
12.07.2016, 15:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.07.2016, 15:55
Помогаю со студенческими работами здесь

доделать программу
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;fstream&gt; using namespace std; int main()...

Доделать программу
Прошу помочь, нужно вписать в программу пару деталей. Вот исходный текст: Program RA_EXAM; uses...

Доделать программу
import java.util.Scanner; public class twenty_four { public static void main(String args) {...

Доделать программу
Помогите плиз, доделать прогу. Ввести массив нецелых чисел. Те из них, которые положительны,...

Доделать программу.
Товарищи программеры, скажите что тут не так? В борланде выдает море ошибок. FUNCTION...

Доделать программу
function varargout = gister(varargin) % GISTER M-file for gister.fig % GISTER, by itself,...


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

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

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