TYPE MAS1=ARRAY[1..N] OF REAL;
MAS2=ARRAY[1..N] OF INTEGER;
VAR B,X:MAS1; Y:MAS2; I,J:INTEGER; P:CHAR;
BEGIN
WRITELN(' ВВЕДИТЕ ',N,' ЧИСЕЛ');
FOR I:=1 TO N DO
X[I]:=random(-25,25);
WRITELN(' ':20, 'ВИХОДНОЙ МАССИВ');
FOR I:=1 TO N DO WRITE(X[I]:5:1);
WRITELN;
J:=0;
FOR I:=1 TO N DO BEGIN
IF (X[I] 0 THEN FOR I:=1 TO J DO
WRITELN(' ':5,'B(',I,')=',B[I]:5:1,'':3, ' Y(',I,')=',Y[I]:2)
ELSE WRITELN(' ТАКИХ ЕЛЕМЕНТОВ НЕТ');
END.
*В этой строке компилятор выдает ошибку "Нельзя преобразовать тип real к integer".
Полностью задание звучит так: "Сформировать два массива, содержащих значения и индексы отрицательных кратных 4 элементов исходного массива Х (20)."
Объяснение:
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <iostream>
using namespace std;
int max_row(int **a, int m, int c) {
int mr = 0;
for (int r = 1; r < m; ++r) if (a[mr][c] < a[r][c]) mr = r;
return mr;
}
int main() {
srand(time(0));
cout << "m n? ";
int m, n; cin >> m >> n;
cout << "\n матрица: \n";
int **a = new int *[m];
for (int r = 0; r < m; ++r) {
a[r] = new int[n];
for (int c = 0; c < n; ++c) cout << setw(4) << (a[r][c] = rand() % 1000);
cout << endl;
}
int mc = 0, mr = max_row(a, m, 0);
cout << "\n максимумы в столбцах: \n" << setw(4) << a[mr][0];
for (int c = 1; c < n; ++c) {
int cmr = max_row(a, m, c);
cout << setw(4) << a[cmr][c];
if (a[mr][mc] > a[cmr][c]) {
mc = c;
mr = cmr;
}
}
cout << "\n\n искомый элемент: a[" << mr << "][" << mc << "] = " << a[mr][mc] << endl;
return 0;
}