Новые сообщения · Правила  
Страница 1 из 11
Модератор форума: Berestovskiy 
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Задача на си, ни в какую не получается.помогите решить плиз!
Задача на си, ни в какую не получается.помогите решить плиз!
Дана матрица вещественных чисел. Найти максимальный и минимальный элементы, вывести все элементы, заключенные между ними и посчитать их сумму.
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 выводил, а были случаи когда просто не все..в зависимости от того какие числа я вводила
3 | Автор: Maxara | 2009-05-23, 18:20   |  Репутация: [ + 0 ]
Ej,Ei,Sj,Si - координаты максимально и минимального элементов. напиши на каком примере у тебя не работает

Насколько проще была бы жизнь если бы она была в исходниках
4 | Автор: LofD | 2009-05-23, 21:16   |  Репутация: [ + 14 ]
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 правильный ответ =\
Внималтеьние будь =)


Насколько проще была бы жизнь если бы она была в исходниках
6 | Автор: LofD | 2009-05-24, 11:49   |  Репутация: [ + 14 ]
ааааа=)))) все понятно!!! а я думала должно выводить 2 3 4 5 6 типа по строкам тоже учитывать=)))
Спасибо башое!!!
7 | Автор: Maxara | 2009-05-24, 14:13   |  Репутация: [ + 0 ]
Если надо мона сделать чтобы и по строкам учитывала, так намного проще даже =)

Насколько проще была бы жизнь если бы она была в исходниках
8 | Автор: LofD | 2009-05-24, 14:48   |  Репутация: [ + 14 ]
даже проще? а как? rolleyes
9 | Автор: Maxara | 2009-05-24, 19:01   |  Репутация: [ + 0 ]
9 | Автор: Maxara | 2009-05-24, 19:01   |  Репутация: [ + 0 ]
Как-то так
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, спасибо башооооооооое!
11 | Автор: Maxara | 2009-05-24, 21:27   |  Репутация: [ + 0 ]
Форум ПРОГРАММИСТОВ » ПРОГРАММИРОВАНИЕ » С, C++ » Задача на си, ни в какую не получается.помогите решить плиз!
Страница 1 из 11
Поиск: