Помогите с задачей на матрицу

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
Styks
Сообщения: 20
Зарегистрирован: 06 май 2008, 12:33

Ребят помогите с практикой, мы просто Си в галаза не видели все паскаль батрачили

дана действительная матрица m n , не все элементы которой равны нулю получить новую матрицу путем деления всех элементов данной матрицы на наибольший по модулю элемент
F-R-O-S-T
Сообщения: 29
Зарегистрирован: 01 июл 2008, 16:09
Откуда: SPBi
Контактная информация:

Код: Выделить всё

#include <math.h>

int main();
{
//m и n придумай как вводить
double matrix[m][n];
double max=0;
int i,j;
//Вводишь матрицу как тебе надо 
for (i=0;i<m;i++)
  for (j=0;j<n;j++)
    if (fabs(matrix[i,j])>fabs(max)) max=matrix[i,j];
//Предполагается что не нулевые элементы были и макс не 0 поэтому ничего не проверяем 
for (i=0;i<m;i++)
  for (j=0;j<n;j++)
    matrix[i,j] /= max;
//Выводишь матрицу
return 0;
}
Styks
Сообщения: 20
Зарегистрирован: 06 май 2008, 12:33

А можно с началом и концом?)
F-R-O-S-T
Сообщения: 29
Зарегистрирован: 01 июл 2008, 16:09
Откуда: SPBi
Контактная информация:

ты м и н сам вводишь ? Матрицу ты как вводишь ?
рандомную или с клавитуры ?
писать в стиле С или С++ ?
Styks
Сообщения: 20
Зарегистрирован: 06 май 2008, 12:33

В стиле С. Матрицу, хрен знает как вводишь, я полагаю с клавы....я тут сам пробовал написать, но помоему как то сложно выходит


...
srand((unsigned)time(0));
float **mass;
size_t row, col;
size_t i, j;
printf("Input rows & columns: ");
scanf("%d%d", &row, &col);
mass = (float**)malloc(row * sizeof(float*));
for ( i =0; i<row; i++ )
mass = (float*)malloc(col * sizeof(float));
for(i = 0; i < row; i++)
{
for(j = 0; j < col; j++)
{
mass[j] = (rand() / (float)32767 * 10);
printf("%4.2f\t", mass[j]);
}
putchar('\n');
}
float max = mass[0][0];
for(i = 0; i < row; i++)
for(j = 0; j < col; j++)
if(mass[j] > max)
max = mass[j];
printf("\nmaximum: %4.2f ", max);
printf("\n\n");
float **arr;
arr = (float**)malloc(row * sizeof(float*));
for ( i =0; i<row; i++ )
arr = (float*)malloc(col * sizeof(float));
for(i = 0; i < row; i++)
{
for(j = 0; j < col; j++)
{
arr[j] = mass[j] / max;
printf("%4.2f ", arr[j]);
}
putchar('\n');
}
for(i = 0; i < row; i++){
free(mass);
free(arr[i]);
}
free(mass);
free(arr);
...
F-R-O-S-T
Сообщения: 29
Зарегистрирован: 01 июл 2008, 16:09
Откуда: SPBi
Контактная информация:

да со всеми динамическими переменными выходит сложно :)
но она работает у тебя ?
и в условии ты писал что делить не просто на наибольший , а наибольший по модули, я этого здесь не увидел.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Перемещено из раздела "С и С++" с сохранением ссылки.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Styks
Сообщения: 20
Зарегистрирован: 06 май 2008, 12:33

А можно чтоб для борландского турбо си запускалось? дерьмо в том что выдаеться 3 ошибки, или же полностью зависает все
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Ошибки в студию.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить