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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 264
#1

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

16.06.2011, 20:09. Просмотров 1227. Ответов 39
Метки нет (Все метки)

Дана матрица 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
Сообщений: 264
16.06.2011, 20:38  [ТС]     Опять у меня к Вам вопрос #22
Цитата Сообщение от grizlik78 Посмотреть сообщение
о это явно не твой случай
а за место гото тогда что использовать?
Я вот этого не знаю, а так остальное сделал

Добавлено через 1 минуту
Цитата Сообщение от Nursik77 Посмотреть сообщение
Понимаю, а наша так вообще задаст уйму и ничего не обьясняет, бывало спросишь че-нить а она над этим сидит до конца урока, потом уходишь порожняком. Сейчас вспомню про те задачки, смехота
Вот вот, такое же у нас
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
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
Сообщений: 264
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
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
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
Сообщений: 264
16.06.2011, 21:32  [ТС]     Опять у меня к Вам вопрос #26
Цитата Сообщение от grizlik78 Посмотреть сообщение
Спокойно, спокойно!
а я то думал...

Добавлено через 18 минут
Блин что то не получается прога
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
16.06.2011, 21:44     Опять у меня к Вам вопрос #27
Странно. Идея-то правильная была. С реализацией вот не очень. Новая версия есть какая-нибудь?
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 264
16.06.2011, 21:48  [ТС]     Опять у меня к Вам вопрос #28
Цитата Сообщение от grizlik78 Посмотреть сообщение
Новая версия есть какая-нибудь?
Да вот думаю
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
16.06.2011, 21:51     Опять у меня к Вам вопрос #29
Ну вот в последнем коде строки 25—39 и 43—46 не нужны. Строки 22, 23, 39, 40 засунуть во внутренний цикл. Ну а дальше по обстоятельствам.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 264
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
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
16.06.2011, 22:04     Опять у меня к Вам вопрос #31
Похоже, но не заметно, чтобы условия оказались внутри вложенного цикла. Сейчас там printf (строка 19). А ещё начальное значение минимума не задано, а должно быть. Можно как и у максимума.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 264
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
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
16.06.2011, 22:14     Опять у меня к Вам вопрос #33
тестовую матрицу покажи.

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

Добавлено через 1 минуту
И вообще беда со скобками. Ладно, сейчас сам поправлю.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 264
16.06.2011, 22:15  [ТС]     Опять у меня к Вам вопрос #34
угу знаю что беда
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
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
Сообщений: 264
16.06.2011, 22:24  [ТС]     Опять у меня к Вам вопрос #36
Цитата Сообщение от grizlik78 Посмотреть сообщение
Работает
Да ладно работает? Правильно выводит???
grizlik78
Эксперт С++
1903 / 1435 / 109
Регистрация: 29.05.2011
Сообщений: 2,989
16.06.2011, 22:26     Опять у меня к Вам вопрос #37
Проверяй. То сообщение — это сбой в программе был Нет больше его.
Rikk
45 / 5 / 1
Регистрация: 10.06.2011
Сообщений: 264
17.06.2011, 13:07  [ТС]     Опять у меня к Вам вопрос #38
Цитата Сообщение от grizlik78 Посмотреть сообщение
Нет больше его

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

Добавлено через 14 часов 36 минут
Усё работает замечательно!
Всем большое спасибо!!!
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++
C++ У меня вопрос по классам. На приложенных картинках я выделил непонятные строки.
Как вам моя идея? C++
C++ Ребята большая просьба к вам

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

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

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