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

Создать уникальный двумерный массив - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вычислить сумму отрицательных элементов массива, которые делятся на 5 и индексы которых есть нечетные числа http://www.cyberforum.ru/cpp-beginners/thread1020337.html
Вычислить сумму отрицательных элементов массива, которые делятся на 5 и индексы которых есть нечетные числа.
C++ Файл. Подстрока из цифр Требуется определить строки файла, содержащие максимальную по длине подстроку, состоящую только из цифр. Если таких строк несколько, вывести первые 10. Вот мой код... Выдаёт неверный результат, если в строке одно слово. #include <iostream> using namespace std; bool proverka(char *token,int &max) { bool flag=true; for(int i=0;i<strlen(token);i++) if(!isdigit(token)) flag=false; http://www.cyberforum.ru/cpp-beginners/thread1020334.html
C++ Перевод из десятичной в Римскую
Дали курсовую , сдавать уже на днях. Может кто знает как делать? Написать программу перевода чисел из десятичной системы счисления в Римскую.исходное число считывается из одного файла, а результат записывается в другой файл.I-1;V-5; X-10; L-50; C-100; D-500; M-1000. Есть мысли вот такие.
Найти первую последовательность максимальной длины в массиве C++
Делал задачку: ввод одномерного массива из n целых чисел (1<=n<=100); Найти 1-ю последовательность максимальной длины масива; вывод результата выполнения операции. Вот что я написал, но программа не хочет работать, выдает непонятное решение или вообще зависает, помогите исправить код. Спасибо за помощь. Уже просто голова кругом едет. Вероятно я где-то сделал ошибку и не могу догнать где....
C++ Не могу найти ошибку http://www.cyberforum.ru/cpp-beginners/thread1020313.html
Задача: вывести элементы массива, которые повторяются ровно 2 раза #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char *argv) { setlocale (LC_ALL, "Russian");
C++ Задан текст. Определить количество слов, в которых встречается буква вводимая с клавиатуры Доброго времени суток. Помогите написать программу, пожалуйста. Заранее большое спасибо. подробнее

Показать сообщение отдельно
Flinky
0 / 0 / 0
Регистрация: 25.11.2013
Сообщений: 2
02.12.2013, 18:19  [ТС]     Создать уникальный двумерный массив
Почти доделал,для случая когда в первоначальном массиве(который 8*8) минимальный элемент стоит левее максимального,если учитывать по строке.
Создал новый массив(прямоугольник),перевел его в одномерный массив,отсортировал пузырьком,теперь надо из этого одномерного массиве снова образовать прямоугольник,должно быть похоже на развертку(только наоборот),подскажите как это можно сделать
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
112
113
114
115
116
#include <iostream>
#include <ctime>
 
using namespace std;
 
int main()
{
    int min =0;
    int max =0;
    int imin =-1; 
    int jmin =-1;
    int imax =-1; 
    int jmax =-1;   
    srand(time(NULL));
    const int n =8; 
    int sum = 0;
    int **a = new int* [n]; // Создаем массив указателей
    for (int i = 0; i < n; i++)
    { 
        a[i] = new int [n]; // Создаем элементы
    }
    // А дальше работа как с обычным массивом. 
    for (int i = 0;( i < n) && (i!= (i+1)); i++)
    {
        for (int j = 0;( j < n) && (i!= (i+1)); j++)
        {
            a[i][j] = rand() % 64;
            cout.width(3);
            cout << a[i][j] << " "; 
        }
        cout << endl; // Двумерный массив. Строка кончилась, переводим строку и на консоли
    }
    // Считаем минимальный и максимальный
    min = a[0][0];// берем самый первый элемент массива и считаем, что он минимальный.
    max = a[0][0];// и он же максимальный. 
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (a[i][j] < min)
                {
                min = a[i][j];
                    imin = i;
                        jmin = j;
            }
 
            if (a[i][j] > max)
            {   
                max = a[i][j];
                    imax = i;
                        jmax = j;
            }
        }
    }
  cout << "min = " << min << " pos = " << imin << " " << jmin  << endl << "max = " << max << " pos = " << imax << " " << jmax<< endl;
  //тут мы найдем e и q,размер прямоугольника,e-столбец,q-строка
  int e=abs( n-(n-abs((imax-imin))));
    cout <<"e ="<<e<<endl;
        int q = abs (n-(n-abs((jmax-jmin))));
            cout <<"q ="<<q<<endl;
//создадим новый массив(прямоугольник)
int **arr= new int *[e];
    
    for (int i=0; i<e; i++)
        arr[i] = new int[q];
//если минимальный стоит левее максимального(как я рисовал)
    //новый двумерный массив(прямоугольник) по каждой строке,поочередно,вписываем в одномерный
int k = 0;
for (i=imin; i<imax; i++)
    {
            int f = 0;
        for (j=jmin; j<jmax; j++)
        {
            arr[k*q + f] = a[i][j]; 
 
            f += 1;//f отвечает за передвижение по строке(вправо)
        }
        k += 1;//  k - за передвижение по столбцу(вниз)
}
 
    
for (int i=0; i<(e*q); i++)//внешний цикл,прогоняем от начала до конца(размер прямоугольника,разложенного в строку e*q)
    {
        for (int j = (e*q-1); j>i; j--)//ну и рассматриваем элементы с конца до позиции i;
        {
            if(arr[j]<arr[j-1] //// Если соседние элементы расположены в неправильном порядке, то меняем их местами
            {
                swap (a[j], a[j - 1]);//меняем их
            }
        }
} 
 
 
 
 
for (int i = 0; i < size(e*q); i++)
         {
        cout << arr[i] << ' ';
    }
    for (int i = 0; i < (e*q); i++)
   {
       delete[]arr[i];
    }
    delete [] arr;
 
 
        // Удаление массива
   for (int i = 0; i < n; i++)
   {
       delete[]a[i]; // Удаляем каждый элемент
   }
    delete [] a; // А потом массив
   system("pause");
    return 0;
}
 
Текущее время: 23:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru