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

Массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создание каталога http://www.cyberforum.ru/cpp-beginners/thread450620.html
Ребята нужно решить на С++, не знаю как Создайте файл каталог книг. По заданной специальности занесите в отдельный файл сведения обо всех изданиях (ФИО, год издания,)
C++ Задачи на условие... 2. Определить, имеется ли среди чисел a, b, c хотя бы одна пара взаимно противоположных чисел. 3. Два прямоугольника, расположенные в первом квадранте, со сторонами, параллельными осям координат, заданы координатами своих левого верхнего и правого нижнего углов. Для первого прямоугольника это точки (х1, у1) и (х2, 0), для второго – (х3, у3), (х4, 0). Составить программу, определяющую,... http://www.cyberforum.ru/cpp-beginners/thread450616.html
Матрица A(nxn). C++
не работает программа на С++, не знаю почему. ребята подскажите const int N=10; double a; ... int monot_vozrast=0; int monot_ubyv=0; for(int i=0;i<N;i++) {
Написать программу, которая выводит круговую диаграмму. C++
Написать программу, которая выводит круговую диаграмму, отображающую товарооборот (в %)книжного магазина. Исходные данные (объем продаж в рублях по категориям: книги, журналы, открытки и канцтовары) вводятся во время программы. Пример диаграммы приведен ниже. Извините за корявый рисунок)... напишите пожалуйста программу с комментариями(что, как и почему). Заранее спасибо!
C++ Алгоритм итеративной вставки в Рандомизированное дерево на основе BST дерева http://www.cyberforum.ru/cpp-beginners/thread450602.html
Необходимо сделать операцию рандомизированного добавления в итеративной форме.Сделал добавление в рекурсивном виде по готовому псевдокоду но не прокатило и я спалился, а на итеративный алгоритм псевдокода к сожалению не имеется в общем есть итеративный алгоритм Insert добавления в обычное BST дерево (закоментирован подсчёт сыновей у узла) bool Insert (K _key, T _data) //Вставка { ...
C++ бесконечная сумма Вычислить бесконечную сумму ряда с заданной точностью e(e>0) 1/2^i подробнее

Показать сообщение отдельно
Buckstabue
 Аватар для Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
22.02.2012, 00:52     Массив
Эх опередили
тем не менее поделюсь своим решением, которое может быть неправильным
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.
Кажись всё спутал я. Там где убывание - наоборот возрастание
 
Текущее время: 20:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru