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

Опять у меня к Вам вопрос - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
16.06.2011, 20:09     Опять у меня к Вам вопрос #1
Дана матрица 3 на 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
#include <stdio.h>
main()
{ int a[3][4], i, j, min, max, t, k, n, l, r;
printf (" \n vvesti matricu: \n ");
for(i=1;i<=3;i++){
for(j=1;j<=4;j++)
scanf(" %d ", &a[i][j]);}
max=a[1][1];
 
{m1: if (max < a[i][j])
{max=a[i][j];k=i;n=j;}
i++;
if (i<=3) goto m1;
i=1; j++;
if (j<=4)goto m1;}
 
min=a[i][j];
{m2: if (min > a[i][j])
{min=a[i][j]; l=i; r=j;}
 
 
i++;
if (i<=3) goto m2;
i=1; j++;
if (j<=4)goto m2;}
 
t=a[k][n];
a[k][n]=a[l][r];
a[l][r]=t;
 
printf (" new matrica \n");
for(i=1;i<=3;i++){
for(j=1;j<=4;j++)
printf (" %d ", a[i][j]);
printf (" \n ");}
return getch();}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nursik77
16.06.2011, 20:28     Опять у меня к Вам вопрос
  #21

Не по теме:

Цитата Сообщение от Rikk Посмотреть сообщение
Нас молодая преподша учит, вот что знает она нам дала, а остальное вот делаю или сам, или по нету информацию ищу
Понимаю, а наша так вообще задаст уйму и ничего не обьясняет, бывало спросишь че-нить а она над этим сидит до конца урока, потом уходишь порожняком. Сейчас вспомню про те задачки, смехота

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
16.06.2011, 20:38  [ТС]     Опять у меня к Вам вопрос #22
Цитата Сообщение от grizlik78 Посмотреть сообщение
о это явно не твой случай
а за место гото тогда что использовать?
Я вот этого не знаю, а так остальное сделал

Добавлено через 1 минуту
Цитата Сообщение от Nursik77 Посмотреть сообщение
Понимаю, а наша так вообще задаст уйму и ничего не обьясняет, бывало спросишь че-нить а она над этим сидит до конца урока, потом уходишь порожняком. Сейчас вспомню про те задачки, смехота
Вот вот, такое же у нас
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
16.06.2011, 20:44     Опять у меня к Вам вопрос #23
Цитата Сообщение от Rikk Посмотреть сообщение
а за место гото тогда что использовать?
Я вот этого не знаю, а так остальное сделал
Ну так ты же циклы ими организовывал. Вот циклами настоящими и надо пользоваться. Типа такого
C
1
2
3
4
5
6
7
8
for (i=0; i<3; i++)
{
    printf("i = %d\n", i);
    for (j=0; j<4; j++)
    {
        printf(" j = %d\n", j);
    }
}
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
16.06.2011, 20:59  [ТС]     Опять у меня к Вам вопрос #24
Цитата Сообщение от grizlik78 Посмотреть сообщение
Типа такого
Ничего себе, даже так можно

Добавлено через 12 минут
А вот так вот? Правда не пашет
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
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
main()
{ int a[3][4], i, j, min, max, t, k, n, l, r;
       // Vvod massiva
       printf (" \n vvesti matricu: \n ");
       for(i=0;i<3;i++){
            for(j=0;j<4;j++)
       scanf(" %d ", &a[i][j]);}
      // Reshenie
       
               
            max=a[0][0];
 
           {for (i=0; i<3; i++)
{
    printf("i = %d\n", i);
    for (j=0; j<4; j++)
    {
        printf(" j = %d\n", j);
    }
}
          if (max < a[i][j])
       {max=a[i][j];k=i;n=j;    }
                                    }
       i++;
            if (i<=3)
            i=1; j++;
                         if (j<=4)
 
                         min=a[i][j];
           {for (i=0; i<3; i++)
 
    printf("i = %d\n", i);
    for (j=0; j<4; j++)
    {
        printf(" j = %d\n", j);
    }
}    
           if (min > a[i][j])
           {min=a[i][j]; l=i; r=j;     }
 
 
           i++;
           if (i<=3) 
           i=1; j++;
           if (j<=4)
 
           t=a[k][n];
           a[k][n]=a[l][r];
              a[l][r]=t;
         // Vyvod
           printf (" new matrica \n");
            for(i=0;i<3;i++){
              for(j=0;j<4;j++)
               printf (" %d ", a[i][j]);
                 printf (" \n ");}
           return getch();}
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
16.06.2011, 21:07     Опять у меня к Вам вопрос #25
Спокойно, спокойно! printf у меня просто для примера тела цикла. Вот во внутреннем цикле вместо printf (или вместе с ним, если хочется индексы в работе посмотреть) должны быть твои проверки. Внутри цикла, а не после.
Вот первый printf, там доступна только переменная i и она увеличивается от 0 до 2.
Внутри второго цикла, где второй printf, там доступны обе переменные, i и j. Но j меняется часто, а i только когда внутренний цикл заканчивается. При этом j снова с нуля и до 3 изменяется.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
16.06.2011, 21:32  [ТС]     Опять у меня к Вам вопрос #26
Цитата Сообщение от grizlik78 Посмотреть сообщение
Спокойно, спокойно!
а я то думал...

Добавлено через 18 минут
Блин что то не получается прога
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
16.06.2011, 21:44     Опять у меня к Вам вопрос #27
Странно. Идея-то правильная была. С реализацией вот не очень. Новая версия есть какая-нибудь?
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
16.06.2011, 21:48  [ТС]     Опять у меня к Вам вопрос #28
Цитата Сообщение от grizlik78 Посмотреть сообщение
Новая версия есть какая-нибудь?
Да вот думаю
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
16.06.2011, 21:51     Опять у меня к Вам вопрос #29
Ну вот в последнем коде строки 25—39 и 43—46 не нужны. Строки 22, 23, 39, 40 засунуть во внутренний цикл. Ну а дальше по обстоятельствам.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
16.06.2011, 22:02  [ТС]     Опять у меня к Вам вопрос #30
Как то вот так вот получилось
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
#include <stdio.h>
main()
{ int a[3][4], i, j, min, max, t, k, n, l, r;
       // Vvod massiva
       printf (" \n vvesti matricu: \n ");
       for(i=0;i<3;i++){
            for(j=0;j<4;j++)
       scanf(" %d ", &a[i][j]);}
      // Reshenie
       
               
            max=a[0][0];
 
           {for (i=0; i<3; i++)
{
    printf("i = %d\n", i);
    for (j=0; j<4; j++)
    
        printf(" j = %d\n", j);
    
}
          if (max < a[i][j])
           {max=a[i][j];k=i;n=j;}    
                                        
           if (min > a[i][j])
           {min=a[i][j]; l=i; r=j;     }
 
 
           
 
           t=a[k][n];
           a[k][n]=a[l][r];
              a[l][r]=t;
             // Vyvod
           printf (" new matrica \n");
            for(i=0;i<3;i++){
              for(j=0;j<4;j++)
               printf (" %d ", a[i][j]);
                 printf (" \n ");}
               return getch();}}
Добавлено через 2 минуты
16 и 19 строки не нужны в принципе
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
16.06.2011, 22:04     Опять у меня к Вам вопрос #31
Похоже, но не заметно, чтобы условия оказались внутри вложенного цикла. Сейчас там printf (строка 19). А ещё начальное значение минимума не задано, а должно быть. Можно как и у максимума.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
16.06.2011, 22:10  [ТС]     Опять у меня к Вам вопрос #32
Почти верно работает, только происходит почему то тока замена последнего элемента в первой строке
и первого элемента во второй
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
#include <stdio.h>
main()
{ int a[3][4], i, j, min, max, t, k, n, l, r;
       // Vvod massiva
       printf (" \n vvesti matricu: \n ");
       for(i=0;i<3;i++){
            for(j=0;j<4;j++)
       scanf(" %d ", &a[i][j]);}
      // Reshenie
       
            min=a[0][0];   
            max=a[0][0];
 
           for (i=0; i<3; i++)
{
   
    for (j=0; j<4; j++)
    
        
    
 
          {if (max < a[i][j])
           max=a[i][j];k=i;n=j;}    
                                        
          { if (min > a[i][j])
       min=a[i][j]; l=i; r=j;     }
 
 
           
 
           t=a[k][n];
           a[k][n]=a[l][r];
              a[l][r]=t;
             // Vyvod
           printf (" new matrica \n");
            for(i=0;i<3;i++){
              for(j=0;j<4;j++)
               printf (" %d ", a[i][j]);
                 printf (" \n ");}
           return getch();}}
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
16.06.2011, 22:14     Опять у меня к Вам вопрос #33
тестовую матрицу покажи.

Добавлено через 1 минуту
И ещё. У меня во вложенном цикле были скобки. Ты их убрал, теперь страдаешь

Добавлено через 1 минуту
И вообще беда со скобками. Ладно, сейчас сам поправлю.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
16.06.2011, 22:15  [ТС]     Опять у меня к Вам вопрос #34
угу знаю что беда
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
16.06.2011, 22:21     Опять у меня к Вам вопрос #35
Как-то так. Только оно, кажется, не очень соответствует заданию
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
48
49
50
#include <stdio.h>
 
main()
{
    int a[3][4], i, j, min, max, t, k, n, l, r;
    // Vvod massiva
    printf (" \n vvesti matricu: \n ");
    for(i=0;i<3;i++)
        for(j=0;j<4;j++)
            scanf("%d", &a[i][j]);
 
    // Reshenie
 
    min=a[0][0];   
    max=a[0][0];
 
    for (i=0; i<3; i++)
    {
        for (j=0; j<4; j++)
        {
            if (max < a[i][j])
            {
                max=a[i][j];
                k=i;
                n=j;
            }    
            if (min > a[i][j])
            {
                min=a[i][j];
                l=i;
                r=j;
            }
        }
    }
 
    t=a[k][n];
    a[k][n]=a[l][r];
    a[l][r]=t;
    // Vyvod
    printf (" new matrica \n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<4;j++)
            printf (" %d ", a[i][j]);
        printf (" \n ");
    }
 
    getch();
    return 0;
}
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
16.06.2011, 22:24  [ТС]     Опять у меня к Вам вопрос #36
Цитата Сообщение от grizlik78 Посмотреть сообщение
Работает
Да ладно работает? Правильно выводит???
grizlik78
Эксперт С++
 Аватар для grizlik78
1884 / 1416 / 102
Регистрация: 29.05.2011
Сообщений: 2,961
16.06.2011, 22:26     Опять у меня к Вам вопрос #37
Проверяй. То сообщение — это сбой в программе был Нет больше его.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
17.06.2011, 13:07  [ТС]     Опять у меня к Вам вопрос #38
Цитата Сообщение от grizlik78 Посмотреть сообщение
Нет больше его

фига се
ща буду проверять

Добавлено через 14 часов 36 минут
Усё работает замечательно!
Всем большое спасибо!!!
Nursik77
 Аватар для Nursik77
273 / 233 / 21
Регистрация: 05.04.2011
Сообщений: 645
17.06.2011, 13:10     Опять у меня к Вам вопрос #39
Rikk, а собсна чем решение grizlik78-а отличается от моего? все равно пришел к нему, из ентого следует что ты зря потратил время. В следующий раз не затевай не нужных идей
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2011, 13:13     Опять у меня к Вам вопрос
Еще ссылки по теме:

C++ Ребята большая просьба к вам
C++ Нужно написать код программы, а у меня не очень получается . это все что у меня получилось
Составить программу которая при введеном количестве лет выдает сообщени вам n лет,вам n год или года C++

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

Или воспользуйтесь поиском по форуму:
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 263
17.06.2011, 13:13  [ТС]     Опять у меня к Вам вопрос #40
Даа там в твоём решении просто есть функции которые мы не прохадили, вот на всякий случай будет так 2 решения
Yandex
Объявления
17.06.2011, 13:13     Опять у меня к Вам вопрос
Ответ Создать тему
Опции темы

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