Передача значений двумерного массива через указатели - C (СИ)
Формулировка задачи:
Задача: Рассматривая каждую строку прямоугольной матрицы как вектор, найти номера вектор-строк, для которых модуль их скалярного произведения S имеет максимальное значение.
Я не пойму в чем ошибка.Подскажите в чем дело.
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include<math.h> #define N 10 #define M 10 float sp(float*x, int n) { float s=0; int i,i1,i2; for(i=0;i<n;i++){ s=s+*(x+i1*n+i)**(x+i2*n+i);} return s; } void main() { clrscr(); int i,j,imax1=-1,imax2=-1,n,m; float x,s, max=-9e38; randomize(); printf("vvedite kolichectvo stolbcov ne bolshe %d",N); scanf("%d",&n); printf("vvedite kolichectvo strok ne bolshe %d",M); scanf("%d",&m); for (i=0; i<n; i++) { for (j=0; j<m; j++) { *(x+i*n+j)=rand()%201-100; printf("%d",*(x+i*n+j)); } } for(i=0;i<n-1;i++){ for(j=0;j+1<n;j++){ s=sp (&x,n); if(s>max) {max=s; imax1=i; imax2=j;} }} printf("max=%f\n pologenie 1=%d pologenie 2=%d",max,imax1,imax2); }
Решение задачи: «Передача значений двумерного массива через указатели»
textual
Листинг программы
*(x+i*n+j)=rand()%201-100;
Объяснение кода листинга программы
В данном коде происходит инициализация двумерного массива случайными значениями. Вот список действий, которые выполняются в коде:
x
- это указатель на первый элемент массива.i
иj
- это индексы текущего элемента массива.n
- это размер массива.rand()
- это функция, которая генерирует случайное число в диапазоне от 0 до 200.-100
- это смещение, которое вычитается из случайно сгенерированного числа, чтобы получить диапазон от -100 до 100.*(x+i*n+j)
- это выражение, которое присваивает случайное значение элементу массива с индексамиi
иj
. Таким образом, в результате выполнения данного кода, каждый элемент двумерного массива будет инициализирован случайным значением в диапазоне от -100 до 100.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д