Задача на си, ни в какую не получается.помогите решить плиз!
|
|
Дана матрица вещественных чисел. Найти максимальный и минимальный элементы, вывести все элементы, заключенные между ними и посчитать их сумму.
№ 1 | Автор: Maxara |
2009-05-23, 12:16 | Изменено: Maxara - Сб, 2009-05-23, 12:16
|
Репутация: [ + 0 ]
|
|
|
Воде работает, но нужно потестить. Code void main() { int N,M,i,j,Si=0,Sj=0,Ei=0,Ej=0; float mas[20][20],Max,Min; printf("Enter N and M: "); scanf("%i",&N); scanf("%i",&M); printf("Enter matrix \n"); for(i=0;i<N;i++) for(j=0;j<M;j++) { scanf("%f",&mas[i][j]); if(i==0&&j==0) { Max=mas[0][0]; Min=mas[0][0]; } if(mas[i][j]>Max) { Max=mas[i][j]; Si=i; Sj=j; } if(mas[i][j]<Min) { Min=mas[i][j]; Ei=i; Ej=j; } } if(Si<=Ei) { i=Si; N=Ei; } else { i=Ei; N=Si; } if(Sj<=Ej) M=Ej; else M=Sj; for(;i<=N;i++) { if(Sj<=Ej) j=Sj; else j=Ej; for(;j<=M;j++) printf("%f ",mas[i][j]); printf("\n"); } }
№ 2 | Автор: LofD |
2009-05-23, 16:48 | Изменено: LofD - Сб, 2009-05-23, 16:49
|
Репутация: [ + 14 ]
|
|
|
у меня выводятся только максимум и минимум((..я подумала может надо добавить чтонибудь в printf("%f ",mas[i][j]); добавляла Ej,Ei,Sj,Si выводит числа между максимумом и минимумом, но нестабильно..т.е. были случаи когда через 1 выводил, а были случаи когда просто не все..в зависимости от того какие числа я вводила
|
|
|
Ej,Ei,Sj,Si - координаты максимально и минимального элементов. напиши на каком примере у тебя не работает
Насколько проще была бы жизнь если бы она была в исходниках
|
|
|
Enter N and M: 3 3 Enter matrix -10 2 3 4 5 6 10 1 1 Выводит вот что: -10.000000 4.000000 10.000000 Но если написать -10 2 3 4 5 10 1 1 1 т.е без 6 то выводит все правильно #include<iostream> #include<math.h> using namespace std; void main() { int N,M,i,j,Si=0,Sj=0,Ei=0,Ej=0; float mas[20][20],Max,Min; printf("Enter N and M: "); scanf("%i",&N); scanf("%i",&M); printf("Enter matrix \n"); for(i=0;i<N;i++) for(j=0;j<M;j++) { scanf("%f",&mas[i][j]); if(i==0&&j==0) { Max=mas[0][0]; Min=mas[0][0]; } if(mas[i][j]>Max) { Max=mas[i][j]; Si=i; Sj=j; } if(mas[i][j]<Min) { Min=mas[i][j]; Ei=i; Ej=j; } } if(Si<=Ei) { i=Si; N=Ei; } else { i=Ei; N=Si; } if(Sj<=Ej) M=Ej; else M=Sj; for(;i<=N;i++) { if(Sj<=Ej) j=Sj; else j=Ej; for(;j<=M;j++) printf("%f ",mas[i][j],Si,Sj,Ei,Ej); printf("\n"); } }
№ 5 | Автор: Maxara |
2009-05-24, 07:53 | Изменено: Maxara - Вс, 2009-05-24, 07:55
|
Репутация: [ + 0 ]
|
|
|
Первый пример -10 2 3 4 5 6 10 1 1 Макс 10 Мин -10 Между ними есть только число 4 => -10 4 10 правильный ответ =\ Внималтеьние будь =)
Насколько проще была бы жизнь если бы она была в исходниках
|
|
|
ааааа=)))) все понятно!!! а я думала должно выводить 2 3 4 5 6 типа по строкам тоже учитывать=))) Спасибо башое!!!
|
|
|
Если надо мона сделать чтобы и по строкам учитывала, так намного проще даже =)
Насколько проще была бы жизнь если бы она была в исходниках
|
|
|
даже проще? а как?
|
|
|
Как-то так Code void main() { int N,M,i,Si=0,Ei=0; float mas[100],Max,Min; printf("Enter N and M: "); scanf("%i",&N); scanf("%i",&M); N=N*M; printf("Enter matrix \n"); for(i=0;i<N;i++) { scanf("%f",&mas[i]); if(i==0) { Max=mas[0]; Min=mas[0]; } if(mas[i]>Max) { Max=mas[i]; Si=i; } if(mas[i]<Min) { Min=mas[i]; Ei=i; } } if(Si<=Ei) { i=Si; N=Ei; } else { i=Ei; N=Si; } for(;i<=N;i++) printf("%f ",mas[i]); }
Насколько проще была бы жизнь если бы она была в исходниках
№ 10 | Автор: LofD |
2009-05-24, 20:50 | Изменено: LofD - Вс, 2009-05-24, 20:50
|
Репутация: [ + 14 ]
|
|
|
LofD, спасибо башооооооооое!
|
|
|