Показать сообщение отдельно

Прямоугольная матрица на С, упорядочить матрицу
  #6  
Старый 26.07.2009, 20:50
Foster
Познающий
Регистрация: 14.07.2005
Сообщений: 62
С нами: 10960703

Репутация: 6
По умолчанию Прямоугольная матрица на С, упорядочить матрицу

В каждой строке прямоугольной матрицы определить среднее
арифметическое S ее элементов, после чего расположить в начале строки
элементы А(i,j) < S, сохранив их исходную последовательность, а в
конце строки - остальные элементы.

Вот мои успехи:

Код:
#include <conio.h>  // Подключение библиотек, используемых в программе
#include <stdio.h>  // Справку по библиотекам можно получить нажав Ctrl-F1
#include <stdlib.h> // когда курсор находится под необходимой библиотекой
#include <math.h>   // Справка распространяется не только на библиотеки


int X[100];
int max,min,xmin;
int S1,S2;
int tmp;

char i,i_end,j,imin,imax;         // параметр цикла; тип char соотв. byte или char в Паскале
char n;         // количество элементов массива
char m;         // кол-во совпадающих по знаку элементов
char k,k1,k2;         // вспомогательная переменная
char ch;        // символ нажатой клавиши
FILE *F;        // исходный файл; указатель на структуру типа FILE

void main()     // начало основной программы
{
// Ввод и печать исходных данных
  clrscr();      // В С++ имеет значение верхний и нижний буквенные регистры
  if((F=fopen("xy.txt","rt"))==NULL) // Открытие файла в режиме чтения("r")
      {                             // в текстовом режиме
       printf("Исходный файл не найден\n Для выхода в DOS нажмите "
	       "любую клавишу"); // Аналог write в Паскале;
				 // \n - escape-последовательность, перевод
				 // курсора на новую строку
       getch();
       exit(0);
      } 

  printf("Введите n  ");
  scanf("%d",&n); // Соответствует read в Паскале; "%d" - вводимое число
		  // интерпретируется как число формата int(см. Справку)
  for(i=0;i<n;i++)          // Индексирование массивов всегда с 0
      fscanf(F,"%d",&X[i]); // Чтение производится из файла, & обозначает
			    // что запись производится по адресу
  fclose(F);
  printf("Массив X   n=%d\n",n);// "%d" указывает на место, где выводится n
				// и указывает ее тип
  k=0;
  for(i=0;i<n;i++) // Цикл for, задаются начальная точка;верхняя граница; шаг
    {
      k++;         // Инкримент
      if(k<5)
	printf("%d   ",X[i]); // "%7.1f" - выводится число типа float
				 // в формате 7:1
      else
	{
	  k=0;
	  printf("%d\n",X[i]);
	}
    }



 for (j=0;j<3;j++) {

 if(j == 0) {i=0;  i_end=5;}
 if(j == 1) {i=6;  i_end=10;}
 if(j == 2) {i=11; i_end=15;}

    for(i=i;i<i_end;i++)
        S2=S2+X[i];
        S2=S2/5;


       	printf("srednee %d \n",S2);

	}





while(getch()!=27);
}

Не могу сделать так эту часть задания: ...после чего расположить в начале строки
элементы А(i,j) < S, сохранив их исходную последовательность, а в
конце строки - остальные элементы.
 
Ответить с цитированием