Форум программистов, компьютерный форум CyberForum.ru

У меня вопрос - C++

Восстановить пароль Регистрация
 
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
15.06.2011, 15:14     У меня вопрос #1
Почему прога не вычисляет максимальный и минимальный элемент в матрице? Пишет не так
Код вроде бы верен, а толку от этого нет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include<stdio.h>
#include<conio.h>
int main()
{
int a[4][5], k, l, i, j, min, max;
printf("\nvvedy matrycu a: \n");
for(i=1; i<=3; i++)
for(j=1; j<=4; j++)
scanf("%d", &a[i][j]);
for(i=1; i<=3; i++)
{
min=max=a[i][l];
for(j=1; j<=4; j++)
{
if(a[i][j]<=min)
{
min=a[i][j];
k=j;
}
if(a[i][j]>=max)
{
max=a[i][j];
l=j;
}
}
a[i][k]=max;
a[i][l]=min;
}
printf("\n vyvod matcycy:\n");
for(i=1; i<=3; i++)
{
for(j=1; j<=4; j++)
printf("%d", a[i][j]);
printf("\n");
}
return getch();
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.06.2011, 15:21     У меня вопрос #2
вобще-то индексы в массивах идут с 0
у вас во всех циклах начало со второго элемента (1).
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
15.06.2011, 15:23  [ТС]     У меня вопрос #3
Да не эт не важно, т.к. там приравнивается. Даже если исправить результата нету нужного, уже пробывал
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.06.2011, 15:25     У меня вопрос #4
C++
1
2
3
for(i=1; i<=3; i++)
{
min=max=a[i][l];
бред!
максимальный и минимальный нельзя инициировать внутри цикла.

перед циклом делай
max = a[0][0];
min = a[0][0];
а вот потом уже циклы и проверка

Добавлено через 2 минуты
и какая разница приравнивается или нет. у тебя тупо пропускается первый столбец
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
15.06.2011, 15:29  [ТС]     У меня вопрос #5
Цитата Сообщение от co6ak Посмотреть сообщение
и какая разница приравнивается или нет. у тебя тупо пропускается первый столбец
Ща приравняю к 0 и сделаю как Вы сказали, надеюсь заработает
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.06.2011, 15:29     У меня вопрос #6
вобщем хрень какая-та.

C++
1
2
3
4
5
6
7
8
int max=a[0][0];
int min=a[0][0];
for (int i=0; i < 4; i++)
for (int j=0; j < 5; j++)
{
if ( a[i][j] > max ) max = a[i][j];
if ( a[i][j] < min ) min = a[i][j];
}
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
15.06.2011, 15:30  [ТС]     У меня вопрос #7
Цитата Сообщение от co6ak Посмотреть сообщение
int max=a[0][0];
int min=a[0][0];
for (int i=0; i < 4; i++)
for (int j=0; j < 5; j++)
{
if ( a[i][j] > max ) max = a[i][j];
if ( a[i][j] < min ) min = a[i][j];
}
т.е. это мне перед циклом писать?
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.06.2011, 15:36     У меня вопрос #8
это вместо своего цикла.
и потом выводить максимальные и минимальные эл-ты.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int max=a[0][0];
int min=a[0][0];
for (int i=0; i < 4; i++)
for (int j=0; j < 5; j++)
{
if ( a[i][j] > max ) max = a[i][j];
if ( a[i][j] < min ) min = a[i][j];
}
printf("Max = %d", max);
printf("Min = %d", min);
 
for (int i = 0; i < 4; i++){
for (int j = 0; j < 5; j++)
printf("%d ", a[i][j]);
printf();
}
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.06.2011, 15:38     У меня вопрос #9
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main()
{int a[3][3];
int i,j;
float min=0,max=0;
clrscr();//можно убрать
randomize();
printf("Random matrix:\n\n");
for(i=0;i<3;i++)
 {for(j=0;j<3;j++)
  {a[i][j]=rand()%100-50;
   printf(" %4i",a[i][j]);
  }
 printf("\n\n");
 }
for(i=0;i<3;i++)
 {for(j=0;j<3;j++)
   {if(a[i][j]>max)
    max=a[i][j];
    }
 }
printf("Max=%2.0f ",max);
for(i=0;i<3;i++)
 {for(j=0;j<3;j++)
   {if(a[i][j]<min)
    min=a[i][j];
    }
 }
printf(" Min=%2.0f ",min);
getch();
}
Aneron
 Аватар для Aneron
157 / 156 / 12
Регистрация: 20.04.2010
Сообщений: 570
15.06.2011, 15:40     У меня вопрос #10
Nursik77, несколько раз пробегаешь массив. думаю не стоит этого делать.)
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.06.2011, 15:42     У меня вопрос #11
Nursik77, а почему минимум и максимум float? )) массив то интовский
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.06.2011, 15:46     У меня вопрос #12
co6ak, да я енто давно делал, када исчо знакомился с си. Усе равно меняется легко
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.06.2011, 15:48     У меня вопрос #13
ну многим тут понятно что легко.
но судя по коду ТСа - это не тот случай.

особенно будоражит сейчас строки 26 и 27. у меня фантазии не хватает, что бы определить зачем это там
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
15.06.2011, 15:49  [ТС]     У меня вопрос #14
Цитата Сообщение от co6ak Посмотреть сообщение
особенно будоражит сейчас строки 26 и 27. у меня фантазии не хватает, что бы определить зачем это там
Нас препод так учил, и такая у нас методичка, так что как грится чем богаты
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.06.2011, 15:57     У меня вопрос #15
Цитата Сообщение от Rikk Посмотреть сообщение
Нас препод так учил, и такая у нас методичка, так что как грится чем богаты
Интересные у вас преподы
Давайте сделаем так и усе:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main()
{int a[3][3];
int i,j,min=0,max=0;
randomize();
printf("Random matrix:\n\n");
for(i=0;i<3;i++)
 {for(j=0;j<3;j++)
  {a[i][j]=rand()%100-50;
   printf(" %4i",a[i][j]);
  }
 printf("\n\n");
 }
for(i=0;i<3;i++)
 {for(j=0;j<3;j++)
   {if(a[i][j]>max)
    max=a[i][j];
    else if(a[i][j]<min)
    min=a[i][j];
    }
 }
printf("Max=%2i ",max);
printf(" Min=%2i ",min);
getch();
}
Добавлено через 1 минуту
Если на randomize(); компилятор будет ругаться, убери.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
15.06.2011, 16:13  [ТС]     У меня вопрос #16
Цитата Сообщение от Nursik77 Посмотреть сообщение
Если на randomize(); компилятор будет ругаться, убери.
не не ругается спасибо
но есть такая просьба, по условию он должен менять мин и макс
Цитата Сообщение от Nursik77 Посмотреть сообщение
Интересные у вас преподы
угу такие, таки хотят деньгу состричь

Добавлено через 4 минуты
Вот так верно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <conio.h>
main() {
        int a[3][4], min, max, i, j, k=0, l=0;
 
        
        printf("Vvedite a[3][4]: ");
        for(i=0;i<3;i++) {
                for(j=0;j<4;j++) scanf("%d",&a[i][j]);
        }
 
        
        for(i=0;i<3;i++) {
                printf("\n");
                for(j=0;j<4;j++) printf("[%d] ",a[i][j]);
        }
 
        
        for(i=0;i<3;i++) {
                min=a[i][0];
                max=a[i][0];
                for(j=0;j<4;j++) {
                        if(min>a[i][j]) { min=a[i][j]; k=j; }
                        if(max<a[i][j]) { max=a[i][j]; l=j; }
                }
        a[i][k]=max; k=0;
        a[i][l]=min; l=0;
        }
 
 
        printf("\nOtvet:\n");
        for(i=0;i<3;i++) {
                printf("\n");
        for(j=0;j<4;j++) printf("[%d] ",a[i][j]);
        }
 
        return getch();
}
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.06.2011, 16:20     У меня вопрос #17
ах вот оно что!
это объясняет наличие тех двух странных строк.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int imin = 0;
int imax = 0;
int jmin = 0;
int jmax = 0;
for (int i = 0; i < 3; i ++ )
for (int j = 0; j < 4; j++ ) 
{
if ( a[i][j] < a[imin][jmin] ) { imin = i; jmin = j; }
if ( a[i][j] > a[imax][jmax] ) { jmax = j; imax = i; } 
}
 
int tmp = a [imin][jmin];
a [imin][jmin] = a[imax][jmax];
a [imax][jmax] = tmp;
 
       printf("\nOtvet:\n");
        for(i=0;i<3;i++) {
                printf("\n");
                for(j=0;j<4;j++) printf("[%d] ",a[i][j]);
        }
 
        return getch();
Добавлено через 2 минуты
рикк, у тебя какая конкретно задача?
поменять местами максимум и минимум в каждый строке?
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
15.06.2011, 16:20     У меня вопрос #18
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main()
{int a[3][3];
int i,j,min=0,max=0,pp;
int k,l,p,q;
clrscr();
randomize();
printf("Random matrix:\n\n");
for(i=0;i<3;i++)
 {for(j=0;j<3;j++)
  {a[i][j]=rand()%100-50;
   printf(" %4i",a[i][j]);
  }
 printf("\n\n");
 }
for(i=0;i<3;i++)
 {for(j=0;j<3;j++)
   {if(a[i][j]>max)
    {max=a[i][j];
    k=i;
    l=j;}
    else if(a[i][j]<min)
    {min=a[i][j];
    p=i;
    q=j;}
    }
 }
printf("Max=%2i ",max);
printf(" Min=%2i ",min);
printf("\n\nIzmenennaya matrica:\n\n");
for(i=0;i<3;i++)
 {for(j=0;j<3;j++)
  {pp=a[k][l];
   a[k][l]=a[p][q];
   a[p][q]=pp;}
 }
for(i=0;i<3;i++)
 {for(j=0;j<3;j++)
  {
   printf(" %4i",a[i][j]);
  }
 printf("\n\n");
 }
getch();
}
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
15.06.2011, 16:24  [ТС]     У меня вопрос #19
Цитата Сообщение от co6ak Посмотреть сообщение
у тебя какая конкретно задача?
в том то и дело что просто сказано поменять мин и макс

Добавлено через 33 секунды
Ого спасибочки Nursik77
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2011, 16:25     У меня вопрос
Еще ссылки по теме:

Решите за меня C++
C++ У меня вопрос по классам. На приложенных картинках я выделил непонятные строки.

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
co6ak
Кошковед
 Аватар для co6ak
402 / 495 / 29
Регистрация: 12.04.2010
Сообщений: 1,392
15.06.2011, 16:25     У меня вопрос #20
ну вот всегда так )))
Yandex
Объявления
15.06.2011, 16:25     У меня вопрос
Ответ Создать тему
Опции темы

Текущее время: 03:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru