Консультация № 60790
31.10.2006, 17:16
0.00 руб.
0 1 1
подскажите как написать программу на с: задана матрица а целых чисел размера n*m(n,m<=20 n и m задаются как параметры).преобразовать ее в матрицу в путем удаления строки этой матрицы минимальным номером в котором находиться вектор упорядоченный по возрастанию и составленный из элементов которые все не делятся на 3.плиз очень надо....

Обсуждение

Неизвестный
31.10.2006, 21:26
общий
это ответ
Здравствуйте, Ane4ka!

Не сразу понял задание.
Вот решение.
Однако, поскольку матрица генерируется случайно,
нужный вектор может не попасться.
Поэтому вводите размерность матрицы поменьше.

PS Если я все-таки неправильно понял задание,
сообщите, перепишу.

Удачи!

Приложение:
#include <conio.h>#include <stdio.h>#include <stdlib.h>#define SMax 20enum BOOL { FALSE, TRUE };int main(int argc, char* argv[]){ int MatrixA[SMax][SMax]; int MatrixB[SMax][SMax]; int N=0,M=0; int i,j,l,imax; char ans; BOOL f; do { clrscr(); do { printf("enter N in [2..%d] range:",SMax); scanf("%d",&N), fflush(stdin); } while(N<2 || N>10); do { printf("enter M in [2..%d] range:",SMax); scanf("%d",&M), fflush(stdin); } while(M<2 || M>10); puts("randomized generating matrix A..."), randomize(); for(i=0; i<N; ++i) for(j=0; j<M; ++j) MatrixA[i][j] = MatrixB[i][j] = random(30)-15; puts("initial matrix A:"); for(i=0; i<N; ++i) { for(j=0; j<M; ++j) printf("%3d ",MatrixA[i][j]); puts(""); } puts("processing matrix B..."); for(i=0; i<N; ++i) { f=TRUE; imax=-100; for(j=0; j<M; ++j) { if(MatrixB[i][j]%3 == 0 || MatrixB[i][j]<imax) { f=FALSE; break; } imax = MatrixB[i][j]; } if(f) { for(l=i; l<N-1; ++l) for(j=0; j<M; ++j) MatrixB[l][j]=MatrixB[l+1][j]; break; } } if(f) --N; // truncate the number of lines puts("processed matrix B:"); for(i=0; i<N; ++i) { for(j=0; j<M; ++j) printf("%3d ",MatrixB[i][j]); puts(""); } puts("wanna try again? (y/n)"), scanf("%c",&ans); } while(ans==‘Y‘ || ans==‘y‘); return 0;}
Форма ответа