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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Поиск подпоследовательностей в последовательостях http://www.cyberforum.ru/cpp-beginners/thread880690.html
Вот такай задача: Найти число разных неубывающих подпоследовательностей первой последовательности, которые входят во вторую последовательность в инвертированной виде максимальное число раз, a в первой последовательности содержатся только пересекающимися парами. Помогите советом с чего начать решать? Добавлено через 34 минуты Пожалуйста помогите) скоро сдавать)
C++ Календарные даты в текст Дали тему курсача "Преобразования календарных дат различных форматов в текст". Написал пока что только месяц в слово #include <iostream> #include <iomanip> #include <conio.h> #include <string.h> #include <stdlib.h> #include <windows.h> using namespace std; void main( void ) http://www.cyberforum.ru/cpp-beginners/thread880680.html
C++ шифровать / расшифровать строку
Какой функцией(или где найти код) в c++ можно зашифровать и расшифровать строку без увеличения количества символов. (не просто увеличить каждый символ на 1 , а что-нибудь по сложнее)
C++ Выпуклый многоугольник (вычислить площадь, периметр, количество сторон)
Задача на с++. Помогите, ребята. объект выпуклый многоугольник. тут в программе надо вычислить площадь, периметр, количество полей.
C++ Получить последовательность элементов главной диагонали http://www.cyberforum.ru/cpp-beginners/thread880667.html
Даны натуральное число n, действительная матрицi=1, ... ,n, j =1,…, n. Получить последовательность элементов главной диагонали a_1_1, a_2_2, ...,a_n_n.
C++ среднее геометрическое положительных элементов Для заданной целочисленной матрицы Y={y(i,j)}, i,j=1,...,N вычислить среднее геометрическое положительных элементов, расположенных под главной диагональю. на с++ подробнее

Показать сообщение отдельно
Basill
 Аватар для Basill
40 / 40 / 13
Регистрация: 16.02.2013
Сообщений: 197
27.05.2013, 21:49     ошибки (в двумерном массиве найти первый равный заданной величине(вывести с индексами), и последний четный элемент)
Добрый день.
Вот такая проблема у меня.
Условие: В двумерном массиве найти первый равный заданной величине(вывести с индексами), и последний четный элемент.
вообщем первый равный заданной величине я сделал только не правильно ставит индексы это строки 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;
    
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 09:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru