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

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

Войти
Регистрация
Восстановить пароль
 
Liv-pooL
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 142
#1

Массив - C++

21.02.2012, 23:14. Просмотров 864. Ответов 4
Метки нет (Все метки)

Найти и вывести наибольшее число возрастающих (убывающих) элементов
матрицы, идущих подряд.
Матрицу я задаю динамически, но как циклы для подсчета написать, не выходит...(((
Если можно, подсказать.
И еще вопросик, с консоли легко, а как с командной строки строки вводить в память не знаю...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.02.2012, 23:14     Массив
Посмотрите здесь:

Вывести на печать массив X, массив Z, массив Y, произведение элементов массива X, упорядоченный массив Y - QBasic
Вывести на печать массив X, массив Z, массив Y, произведение элементов массива X, упорядоченный массив Y. ...

Сформировать массив, который будет состоять из чисел, входящих как в массив A, так и в массив B - C (СИ)
Задание: На основе исходных массивов A и B (n и m – рабочие размеры массивов) сформировать массив C, который будет состоять из чисел,...

Дан одномерный массив A из N элементов. Переписать положительные элементы массива в массив B, а отрицательные в массив C - Pascal
Дан одномерный массив A из N элементов. Переписать положительные элементы массива в массив B, а отрицательные в массив C.

Дан массив целых чисел а(12). Переписать в массив х четные, а в массив у нечетные элементы массива а - Turbo Pascal
Помогите пожалуйста решить эту задачу. Массив a выводит на печать. Я пишу a mod 2 = 0 , а он мне 41 ошибку выдает. Что делать? Вот...

Массив: Отсортировать полученный массив 3 способами: по строкам, по столбцам( возр.), 3) и весь массив - Delphi
Помогите, пожалуйста ,решить задачу. Очень нужно. Задан массив (4*6). Элементы задаются по правилу: если j>3, то Aij=i+j, иначе...

Массив: Как сделать так, чтобы результирующий массив представлял собой измененный по заданным правилам первый массив? - C++ Builder
Доброй ночи форумчане, очередной нубо-вопрос не требует отлагательств имеется одномерный массив, из которого по заданным условиям...

Вывести массив а(i, j), одномерный массив b(i) и полученный массив АВ с помощью функции Cells - VBA
Задача 1 Написать программу для решения следующей задачи: для числа n вводимого с клавиатуры (с помощью функции InputBox())...

Построить массив d из элементов, которые входят как в массив a так и в массив b - C (СИ)
Дан массив a и b состоящий из n элементов. Построить массив d из элементов, которые входят как в массив a так и в массив b. Желательно с...

Массив. Разделить на два: массив элементов с четными и массив с нечетными индексами - Pascal ABC
VII.Одномерные массивы 50. Задан массив с количеством элементов N. Сформировать два массива: в первый включить элементы исходного массива...

Ввести массив А. В массив В перенести все элементы массива А, стоящие правее максимального элемента, и имеющие нечетный индекс. Массив В отсортировать - C++
Добрый Вечер! Написал первую часть программы по этому заданию"Ввести массив А. В массив В перенести все элементы массива А, стоящие правее...

Двумерный массив.Дан массив 5 х 5. Определить сумму элементов тех строк, где диагональный элемент равен нулю и записать их в отдельный массив. - Turbo Pascal
помогите составить программу. во задание:Дан массив 5 х 5. Определить сумму элементов тех строк, где диагональный элемент равен нулю и...

Дан массив С (N). Нечетные элементы поместить в массив A, а четные в массив В - Pascal ABC
Ребят помогите решить задачу на паскале и на бейсике. Дан массив С (N). Нечетные элементы поместить в массив A, а четные в массив...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
22.02.2012, 00:02     Массив #2
А что значит "элементов матрицы, идущих подряд?"
Т.е. как подряд? Только по горизонтали или ещё по вертикали, диоганали, по спирали?
Liv-pooL
1 / 1 / 0
Регистрация: 17.04.2011
Сообщений: 142
22.02.2012, 00:26  [ТС]     Массив #3
По строкам, каждый раз переходя на следующую. Сначала смотрим первую строку, сразу за ней вторую и т. д. И все элементы считаются как один ряд, а массивв двумерный.

Добавлено через 21 минуту
По строкам, каждый раз переходя на следующую. Сначала смотрим первую строку, сразу за ней вторую и т. д. И все элементы считаются как один ряд, а массивв двумерный.
(SkyNet)
22 / 40 / 6
Регистрация: 25.10.2011
Сообщений: 175
22.02.2012, 00:44     Массив #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
39
40
#include <stdio.h>
#include <conio.h>
#define n 5
void main()
{
 int a[n][n]={-5, 4, 2, 8,-4,
          -4,-3, 0, 4, 7, //za zrostanyam
           8, 5, 4, 0,-6, //za spadanyam
           0, 1, 6, 8, 9, //za zrostanyam
           5, 1,-1,-4,-6};//za spadanyam
 
 int i, j, *p;
 int max, fl1, fl2;
 p=&a[0][0];
 printf("Masuv:");
 for(i=0; i<n; i++)
 {
  printf("\n ");
  for(j=0; j<n; j++)
  {
   printf("  %d  ",*(p+i*n+j));
  }
 }
 for(i=0; i<n; i++)
 {
     fl1=0; fl2=0, max=*(p+i*n);
  for(j=1; j<n; j++)
  {
      if(max<*(p+i*n+j))
          max=*(p+i*n+j);
      if(*(p+i*n+j) > *(p+i*n+j-1))
          fl1=1;
      if(*(p+i*n+j) < *(p+i*n+j-1))
          fl2=1;
  }
  if(fl1==0 || fl2==0)
      printf("\nv ryadky %d max element: %d", i+1, max);
 }
 getch();
}
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
22.02.2012, 00:52     Массив #5
Эх опередили
тем не менее поделюсь своим решением, которое может быть неправильным
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
/* 
 * File:   main.cpp
 * Author: qobject
 *
 * Created on 21 Февраль 2012 г., 22:47
 */
 
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <ctime>
 
using namespace std;
 
/*
 * 
 */
int main( int argc, char** argv )
{
//   if ( argc < 3 ) // передано в командную строку меньше 2 аргументов
//   {
//      printf( "not enough data. Please enter 2 arguments\n" );
//      exit( EXIT_FAILURE );
 //  }
   
   int rows = 5;
   int columns = 5;
   
   srand( time(0) ); // засеять генератор случайных чисел
   
//   // считать первый параметр из коммандной строки и записать в rows
//   sscanf( argv[1], "%u", &rows );
//   // считать первый параметр и записать в columns
//   sscanf( argv[2], "%u", &columns );
   
   // создаём динамический двумерный массив
   int **arr = new int *[ rows ];
   for( int i=0; i < columns; i++ )
      arr[i] = new int[ rows ];
   
   // инициализируем массив случайными числами от 0 до 100?
   for( int i=0 ; i < rows; i++ )
      for( int j=0; j < columns; j++ )
         arr[i][j] = rand() % 100 + 1;
   // находим наибольшую возрастающую/убывающую последовательность
   
   
   // собственно, вычиляем последовательности
   
   int min_length = 0; // длина максимально убывающей последовательности
   int max_length = 0; // длина возрастающей
   
   int potential_max_length = 0;
   int potential_min_length = 0;
   for( int i=1; i < rows * columns; i++ )
   {
      // Если новый элемент больше предыдущего
      if( arr[ i/rows ][ i%( columns + 1 ) ] < arr[ (i-1)/rows ][ (i-1)%( columns + 1 ) ] )
      {
         potential_max_length = 1;
         do
         {
            potential_max_length++;
            i++;
         } while ( i < rows * columns && ( arr[ i/rows ][ i%( columns + 1 ) ] < arr[ (i-1)/rows ][ (i-1)%( columns + 1 ) ] ));
         
         if ( potential_max_length > max_length )
            max_length = potential_max_length;
         
//         i--;
      }
      // иначе, если мы имеем дело с убывающей последовательностью
      else if ( arr[ i/rows ][ i%( columns + 1 ) ] > arr[ (i-1)/rows ][ (i-1)%( columns + 1 ) ] )
      {
         potential_min_length = 1;
         do
         {
            potential_min_length++;
            i++;
         } while ( i < rows * columns && ( arr[ i/rows ][ i%( columns + 1 ) ] > arr[ (i-1)/rows ][ (i-1)%( columns + 1 ) ] ) );
         
         if ( potential_min_length > min_length )
            min_length = potential_min_length;
         
//         i--;
      }
   }
   
   
   // выводим массив, закомментировать, если не нужно
   for ( int i=0; i < rows; i++ )
   {
      for( int j=0; j < columns; j++ )
      {
         cout << arr[i][j] << " ";
      }
   }
   cout << endl;
   
   cout << "Max length is " << max_length << endl;
   cout << "Min length is " << min_length << endl;
   
delete[] arr;
 
   return 0;
}
Вот только лень отлаживать: нужна ли инкрементация i после каждой попытки вычислить длину убывающей/возрастающей последовательности
P.S.
Кажись всё спутал я. Там где убывание - наоборот возрастание
Yandex
Объявления
22.02.2012, 00:52     Массив
Ответ Создать тему
Опции темы

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