Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2009, 08:40   #1
dron-k
 
Регистрация: 22.06.2009
Сообщений: 6
Вопрос Матрица на Си

Не сочтите за сложность помочь с такой задачей.

Элементы каждой строки прямоугольной матрицы заменить их дополнениями до максимального элемента этой же строки. Определить, насколько при этом изменится общая сумма элементов матрицы.

Исходник есть, но прога работает неправильно.

Помогите, пожалуйста!!!

Код:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
const char PressKey[26]="Нажмите клавишу ВВОД";
int x[10][10]; 
int i,j; 
int xlmax;
int n,m; 
char Reply; 
char IndPrinter; 
float MS_start,MS_end; 
FILE *F; //------ FILE пишется большими буквами
//----------------------------------------------
void WaitEnter()
{
        while (getch()!=13);
}
//-----------------------------------------------
void PrintMatrix (int x[10][10], int n, int m)
{
        int i,j=0;
        //clrscr();
        for(i=0;i<n;i++)
        {
                for(j=0;j<m;j++)        //---------------- здесь точка с запятой должна быть
                        printf("%8d\n", x[i][j]);       //-------------- x маленькая должна быть
        } 
        printf("\n");   //--------------- точку с запятой пропустил
}
//----------------------------------------------- 
float GetMatrixSum (int x[10][10], int n, int m)
{
        int i,j=0;
        float r=0;
        for(i=0;i<n;i++)
                for(j=0;j<m;j++)
                        r=r+x[i][j];//--------------- тоже x маленькая
        //GetMatrixSum=r; //------- нету такой записи в C. 
        return r; //------- а вот такая есть
}
//------------------------------------------------
void main()
{
        if(((F=fopen("4x.dat","rt")))==NULL)
        {
                printf("Yshodniy fail ne naiden\n Dlya vihoda v Dos nazhmite "
                        "lyubuyu klavishu\n");
                getch();
                exit(0);
        } 
        clrscr();
      /* IndPrinter=0;
        printf("Budet li ispolsovan printer (yes,no)?"); //-------- с кавычками перемудрил
                Reply=getch(); // ------ пропустил точку с запятой
                if((Reply=='Y')||(Reply=='y')||(Reply=='N')||(Reply=='n'))
                        IndPrinter=1; */
        MS_start=GetMatrixSum(x,n,m);
 
        printf("n=%i,m=%i,Summa vseh elementov=%f,X=",n,m,MS_start);
        PrintMatrix(x,n,m);
        for(i=0;i<n;n++)
        { 
                xlmax=x[i][1];
                for(j=2;j<m;m++)//------ в форах везже должны быть точки с запятой
                        if (x[i][j] > xlmax)
                                xlmax=x[i][j]; 
                for(j=0;j<m;m++)//------ в форах везже должны быть точки с запятой
                        x[i][j]=xlmax-x[i][j];
        } 
        MS_end=GetMatrixSum(x,n,m);
        printf("n=%i,m=%i,Summa vseh elementov=%f,X=",n,m,MS_end);
        PrintMatrix(x,n,m);
        printf("Izmenenie summy elementov matrizy =%f",MS_end-MS_start);

}
Нужна рабочая прога именно на СИ!!!!

Помогите, это срочно!!!!

Последний раз редактировалось Stilet; 28.07.2009 в 08:47.
dron-k вне форума Ответить с цитированием
Старый 28.07.2009, 09:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
заменить их дополнениями до максимального элемента
Что значит дополнениями?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2009, 09:38   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Максимальный в строке минус элемент строки.
puporev вне форума Ответить с цитированием
Старый 28.07.2009, 10:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм. Тогда я предлагаю вот такое:
Код:
//---------------------------------------------------------------------------

#pragma hdrstop

#include <tchar.h>
#include <stdlib.h>
#include <iostream.h>
//---------------------------------------------------------------------------

#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
 int a[5][5],max[5];
 for (int i = 0; i < 5; i++) {
  max[i]=-10000;
  for (int j=0; j < 5; j++) {
	 a[i][j]=rand() % 100;
	 cout<<a[i][j]<<"\t";
	 max[i]=max[i]<a[i][j]?a[i][j]:max[i];
  }
  cout<<"\t\tmax="<<max[i]<<"\n";
 }

  cout<<"\n";
// Дополняем массив
 for (int i = 0; i < 5; i++) {
  for (int j=0; j < 5; j++) {
	 a[i][j]=max[i]-a[i][j];
	 cout<<a[i][j]<<"\t";
  }
  cout<<"\n";
 }

  getchar();
	return 0;
}
//---------------------------------------------------------------------------
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
матрица lucky Общие вопросы Delphi 0 31.05.2009 19:16
Матрица на C++ Maxs Помощь студентам 5 31.05.2009 14:35
Матрица! fds_sdf Помощь студентам 2 13.04.2009 20:16
Матрица =( Gwynbleidd Помощь студентам 3 16.12.2007 23:20
Матрица Lima Паскаль, Turbo Pascal, PascalABC.NET 3 08.12.2006 01:01