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

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

Войти
Регистрация
Восстановить пароль
 
Головолом
0 / 0 / 0
Регистрация: 29.12.2015
Сообщений: 15
#1

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

12.07.2016, 09:22. Просмотров 192. Ответов 2

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

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

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

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

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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2016, 09:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Доделать программу семинара (C++):

Доделать программу. - C++
Товарищи программеры, скажите что тут не так? В борланде выдает море ошибок. FUNCTION DEC2BASEN(BASE: INTEGER; DEC: LONGINT): STRING; ...

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

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

доделать программу - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;fstream&gt; using namespace std; int main() { setlocale(LC_ALL,&quot;Russian&quot;); fstream...

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

не могу доделать программу - C++
#include &lt;iostream&gt; using namespace std; int main () { int a; int k; for (k=0;k&lt;6;k++) cin&gt;&gt;a; for (k=0;k&lt;6;k++) ...

2
zss
Модератор
Эксперт С++
6686 / 6248 / 2083
Регистрация: 18.12.2011
Сообщений: 16,316
Завершенные тесты: 1
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2016, 15:55
Привет! Вот еще темы с ответами:

Не понимаю как доделать программу - C++
Требования: нужно,организовать массив из тех чисел, которые входят в последовательность более одного раза. Вот я создал 2 массива,...

Нужно немного доделать программу - C++
Ввести класс для работы с обьектом дробь и реализовать 1) сложение(вычитание) 2)приведение к несократимому виду 1 )пункт программа...

Объясните как доделать программу - C++
Вывести элементы последовательности целых чисел от 1 до 1000 сумма цифр в которых больше заданного значения. Фрагмент кода который удалось...

подскажите как доделать программу - C++
#include&lt;iostream.h&gt; #include&lt;conio.h&gt; #include&lt;string.h&gt; using namespace std ; main() { int i=0,j=0; string...


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

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

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