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

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

Войти
Регистрация
Восстановить пароль
 
Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
#1

ошибки (в двумерном массиве найти первый равный заданной величине(вывести с индексами), и последний четный элемент) - C++

27.05.2013, 21:49. Просмотров 216. Ответов 0
Метки нет (Все метки)

Добрый день.
Вот такая проблема у меня.
Условие: В двумерном массиве найти первый равный заданной величине(вывести с индексами), и последний четный элемент.
вообщем первый равный заданной величине я сделал только не правильно ставит индексы это строки 83-85.
а с поиском последнего четного не могу цикл правильный написать (это 50-60 строки) чтобы с конца и в нужный момент останавливал.
p.s.Пробовал break почему то не получилось.
вот код наработок:

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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <clocale> 
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
 
int count,j,i,A,M[3][3],Z,X,P,G,k;
cout<<"МЕНЮ:"<< endl;
do
    {
cout << "Выбрать действие:\n 1-Ввод данных.\n 2-Последний четный.\n 3-Первый равный заданному.\n 4-Выход.\n";
cin >> count;
cout << endl;
 
switch (count)
       {
           case 1:    
           {cout <<"Введите элементы массива: \n";
                    for (i=0; i<3; i++)
                    for (j=0; j<3; j++)
                    {
                    cout <<"mas["<<(i)<<"]";
                    cout <<"["<<(j)<<"] = ";
                    cin >> M[i][j];
                    }
                    cout << endl;
 
                    cout << "Введите заданное число A = ";
                    cin >> A;
                    
                    cout << endl;
 
                    for (int i = 0; i < 3; i++)
                    {
                    for (j=0; j < 3; j++)
                    {
                    cout << M [i] [j] << " ";
                    }
                    cout << endl;
                    }
                    cout << endl;
           break; // заканчиваем действие 
           }
           case 2:    
           {   
                  //Последний четный
              
          
                {
             if (M[i][j] % 2 == 0 && M[i][j] != 0)
                {
                Z = M[i][j];
                
                }
                }
            
            cout << endl;
            
                  if (Z != 0) 
                 cout << "Последний четный элемент массива = " << Z << '\n';
                 else 
                   cout << "Четных элементов нет!!! \n";
 
            cout << endl;
            break; // заканчиваем действие 
            }
 
         case 3:    
            {cout << "Первый равный заданному: ";   
              
                       //Первый равный заданному    
             X = 0;
     for (int i = 3 - 1; i >= 0; i--)
         {
     for (int j = 3 - 1; j >= 0; j--)
               {
                  if (M[i][j] = A)
                  {
                  X = M[i][j];
                  P = i; 
                  G = j;
                    
                  }
                }
           }
     cout << endl;
     if (X != 0)
     cout << "Первый равный заданному А =  " << X << " [" << P << ", " << G << "]\n";
     else 
     cout << "Равных заданному А нет!!!! \n"; 
     cout << endl;
               break; 
            }
          
           case 4:    
            {cout <<"Сеанс работы закончен \n";
            break; 
            }
       }
    }
      while (count<4);
 
    
    _getch();
    return 0;
    
}
Добавлено через 7 минут
Кстати написал такую же программу на Delphi все работает. может кто то перебьет код с delphiна с++
вот код:
Delphi
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
program test6;
 
{$APPTYPE CONSOLE}
 
uses
  Windows;
 
var
  count,j,i,A,X,P,G : Integer;
  M : array[0..2, 0..2] of Integer;
  Z : array[0..100] of Integer;
begin
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
 
  WriteLn('Menu:');
  repeat
    WriteLn;
    WriteLn('Vibrat deystvie:'#13#10 +
            '1 - Vvod dannih.'#13#10 +
            '2 - Obrabotka dannih.'#13#10 +
            '3 - Vihod.'#13#10);
    Read(count);
 
    case count of
      1 :
      begin
        WriteLn('Vvedite elementi massiva:');
        for i := 0 to 2 do
          for j := 0 to 2 do
          begin
            Write('mas[', i, ']');
            Write('[', j, '] = ');
            Read(M[i][j]);
          end;
        WriteLn;
 
        Write('Vvedite zadannoe chislo A = ');
        Read(A);
 
 
        for i := 0 to 2 do
        begin
          for j := 0 to 2 do
            Write(M[i][j], ' ');
          WriteLn;
        end;
        WriteLn;
      end; 
 
      2 :    
      begin
        WriteLn('Obrabotka dannih: ');
 
        
        begin
        X := 0;
        for i := 2 downto 0 do
          for j := 2 downto 0 do
            if  M[i][j] = A  then
            begin
              X := M[i][j];
              P := i;
              G := j;
              end;
         WriteLn;
 
         if X <>0 then
           WriteLn('Perviy ravniy zadannoy velichine A : ', X, ' [', P, ', ', G, ']')
         else
           WriteLn('Ravniy zadannoy velichine A net!!!!');
           end;
        WriteLn;
 
        begin
 
        for i := 2 downto 0 do
          for  j := 2 downto 0 do
 
              if (M[i][j] mod 2)=0 then
              begin
              Z[i] := M[i][j];
              Break;
              end;
 
               if Z[i]<>1 then
               WriteLn('Posledniy chetniy element massiva = ', Z[i])
               else
               WriteLn('Chetnich elementov  net!!!');
 
          end;
      end; 
 
      3 : WriteLn('seans raboti zakonchen');
    end;
  until count = 3;
 
  ReadLn;  
end.
Добавлено через 5 часов 14 минут
Доделал
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <clocale> 
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    const int n=100;
int count,j,i,A,M[3][3],Z[n],p,K,X[n],F,L,G;
cout<<"МЕНЮ:"<< endl;
do
    {
cout << "Выбрать действие:\n 1-Ввод данных.\n 2-Обработка данных.\n 3-Выход.\n";
cin >> count;
cout << endl;
 
switch (count)
       {
           case 1:    
           {cout <<"Введите элементы массива: \n";
                    for (i=0; i<3; i++)
                    for (j=0; j<3; j++)
                    {
                    cout <<"mas["<<(i)<<"]";
                    cout <<"["<<(j)<<"] = ";
                    cin >> M[i][j];
                    }
                    cout << endl;
 
                    cout << "Введите заданное число A = ";
                    cin >> A;
                    
                    cout << endl;
 
                    for (int i = 0; i < 3; i++)
                    {
                    for (j=0; j < 3; j++)
                    {
                    cout << M [i] [j] << " ";
                    }
                    cout << endl;
                    }
                    cout << endl;
           break; // заканчиваем действие 
           }
           case 2:    
           {   
                  //Последний четный
            p=0; K=0;
            for (int i=0;i<3;i++)
            for (int j=0;j<3;j++)
            if (M[i][j]%2==0)
            { 
              Z[p]=M[i][j];
              K=Z[p];
              p++;
             }
             if (p==0)
             cout << "четных элементов нет ";
             if (p!=0)
             cout << "Последний четный элемент массива = " << K << '\n';
             cout << endl;
               //Первый равный заданному    
       {
            p=0; 
             for (int i=3-1;i>=0;i--)
             for (int j=3-1;j>=0;j--)
                 
                   if (M[i][j] == A)
                     {
                       X[p]=M[i][j];
                       F=X[p];
                       p++;
                       L = i; 
                       G = j;
                     }
                 
                 if(p==0)
                 cout << "Не равно заданному А ";
                 if(p!=0)
                 cout << "Первый равный заданному А =  " << F << " [" << L << ", " << G << "]\n";
        }        cout << endl;
                 cout << endl;
               break; 
            }
          
           case 3:    
            {cout <<"Сеанс работы закончен \n";
            break; 
            }
       }
    }
      while (count<3);
 
    
    _getch();
    return 0;
    
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2013, 21:49     ошибки (в двумерном массиве найти первый равный заданной величине(вывести с индексами), и последний четный элемент)
Посмотрите здесь:

Найти первый четный элемент одномерного массива C++
C++ Переставить в 1-м массиве первый отрицательный и последний положительный элемент местами
В двумерном массиве удалить все столбцы в которых первый элемент больше последнего C++
C++ В упорядоченном по убыванию массиве перенести в хвост первый четный элемент, стоявший за элементом со значением Р
C++ В двумерном массиве определить первый отрицательный элемент на интервале [a,b]
Найти и удалить последний четный элемент динамического массива C++
C++ В каждой строке квадратной матрицы найти последний четный элемент
В двумерном массиве L (M, N) первый элемент поменять с последним и найти сумму отрицательных элементов C++
Найти максимальное значение матрицы, первый элемент равный максимальному уменьшить на 10 C++
C++ В двумерном массиве найти последний четный элемент
Задать массив из n элементов и найти первый четный элемент C++
Заменить первый минимальный четный элемент в двумерном массиве C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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