
26.07.2009, 20:50
|
|
Познающий
Регистрация: 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, сохранив их исходную последовательность, а в
конце строки - остальные элементы.
|
|
|