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

Не выводится на экран элемент динамического массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нужна программа, которая по регулярному выражению находит все совпадения в строке http://www.cyberforum.ru/cpp-beginners/thread1241336.html
Никак не могу освоить добавленную в C++11 библиотеку <regex>! Помогите пожалуйста! Нужна программа, которая по регулярному выражению находит все совпадения в строке (<string>), и, если не затруднит, объясните, пожалуйста, как она работает и как работают здесь регулярные выражения и работают ли вообще. Дело в том что уже долго пытаюсь написать такую программу на C++11... Писал на Питоне, там...
C++ Формирование нечетных чисел Приветствую всех! Имеется такой код: srand(time(0)); int ia,c=0; for(int i=0; i!=5; i++) { while(ia % 2 == 0) { ia = rand() % 100; } http://www.cyberforum.ru/cpp-beginners/thread1241335.html
Классы: Не создаются объекты класса Apple C++
Includes.h #include <stdlib.h> #include <gl\glut.h> #include <math.h> #include<stdio.h> #include<time.h> #include<stdio.h> #include<iostream> using namespace std;
Неправильно выводятся данные структуры C++
#include <iostream> #include <conio.h> #include <string> #define deathgant 7 using namespace std; union tag_value{ int kill_1; int kill_2;
C++ Начать работать с SQLite http://www.cyberforum.ru/cpp-beginners/thread1241317.html
Помогите новичку! Пишу консольную программу под Win на С++ Компилирую этим (BAT-файлом): g++.exe %prj%_main_win.cpp %prj%src\*.cpp -o %bin% -I%prj% -std=c++11 По советам на хабре (http://habrahabr.ru/post/149390/) скачал *.Н файл, кинул в папку с src\*.cpp и пытаюсь подключить к программе: #include "src\sqlite3.h" ... if( sqlite3_open("my_cosy_database.dblite", &db) ) ...
C++ Чтение динамического массива с конца Можно ли каким-то образом считывать динамический массив не с начала,а с конца? подробнее

Показать сообщение отдельно
bisquitthe
0 / 0 / 0
Регистрация: 14.03.2014
Сообщений: 10

Не выводится на экран элемент динамического массива - C++

12.08.2014, 00:50. Просмотров 435. Ответов 4
Метки (Все метки)

Здравствуйте! Сразу прошу прощения за название темы, т.к. далее по тексту вы узнаете, что проблема относится не совсем к выводу на экран элементов массива.
А проблема заключается в следующем:
Пользователь вводит квадратную матрицу, и программа должна сформировать одномерный массив из элементов, расположенных в таком порядке, как на картинке (задача 18).
Не выводится на экран элемент динамического массива
Код
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <iostream>
using namespace std;
 
int main()
{
  int col,str;
//Подсказка
  cout << "Подсказка:" << endl;
 
  for (int i = 0;i<=9;i++)
   {
    for (int j = 0;j<=9;j++)
      {   
        cout << "A(" << i << ";" << j << ")" << " ";
      }
     cout << endl;
   }
//
 
// Ввод размера матрицы
   do{
   str = 0;
   col = 0;
   cout << "Введите количество строк" << endl;
 
   cin >> str;
 
   cout << "Введите количество столбцов" << endl;
 
   cin >> col;
   if (str!=col)
       cout << "Матрица должна быть квадратной (NxN)" << endl;
   }while (str!=col);
   int** matrix = new int*[str];
   for (int i = 0;i<=str-1;i++)
        matrix[i] = new int[col]; 
//
 
// Заполнение матрицы   
   cout << "Введите значения данных элементов матрицы" << endl;
   
   for (int i = 0;i<=str-1;i++)
     {
       for (int j = 0;j<=col-1;j++)
        {
          cout << "A(" << i << ";" << j << ")=";
          cin >> matrix[i][j];
        }
       cout << endl;
     }
//
 
//Форматирование матрицы
    cout << "Ваша матрица в форматированном виде:\n";
    for (int i = 0; i<=str-1;i++)
      {
        for (int j = 0;j<=col-1;j++)
         cout << matrix[i][j] << " ";
        cout << endl;      
      }
//
 
//Матрица -> строка
    int s,c,m2el;
    s = str-1;
    c = 0;
    cout << endl << endl<<endl<< matrix[s][c];
    int mul = col*str;
    int* matrix2 = new int[mul];
    m2el = 0;
    matrix2[m2el] = matrix[s][c];
    m2el+=1;
    while (matrix2[mul-1]!=matrix[0][col-1])
      {
        // Левый столбец
        if (c==0 && s!=0)
           {
             s-=1;
             while (s<(str-1))
               {
                 matrix2[m2el] = matrix[s][c];
                 c+=1;
                 s+=1;
                 m2el+=1;
               }
             if (s==str-1)
                matrix2[m2el] = matrix[s][c];           
           }
        //Нижняя строка
        if (s==str-1 && (c!=0 || c!=col-1))
           {
             c+=1;
             while (c>0)
               {
                 matrix2[m2el] = matrix[s][c];
                 c-=1;
                 s-=1;
                 m2el+=1;
               }   
             if (c==0)
                matrix2[m2el] = matrix[s][c];     
           }
        // Верхняя строка
        if ((s==0) && (c>=0) && (c!=col-1))
           {
             c+=1;
             while (s<(str-1) || (c<col-1))
               {
                 matrix2[m2el] = matrix[s][c];
                 c+=1;
                 s-=1;
                 m2el+=1;
               } 
             if (s==str-1 && c == col-1)
                matrix2[m2el] = matrix[s][c];       
           }
        //Правый столбец
        if (c==col-1)
           {
             s-=1;
             while (s>0)
               {
                 matrix2[m2el] = matrix[s][c];
                 c-=1;
                 s-=1;
                 m2el+=1;
               }
             if (s==0)
                matrix2[m2el] = matrix[s][c];          
           }
      }  
//Вывод матрицы в виде сзстроки
 for (int i = 0;i<=(col*str)-1;i++)
    cout << matrix2[i] << " ";         
    
        
   
  
 
  for (int i = 0;i<=str-1;i++)
      delete [] matrix[col];
  delete [] matrix2;  
  return 0;
}

Программу написал(код выше). Алгоритм, вроде, правильный(догадки), но она завершается на 67 строке. Я там специально создал "метку", чтобы проверить что именно не работает: перенос на 3 строки происходит, но элемент массива уже не выводится, а выдается ошибка.
Ошибка

Не выводится на экран элемент динамического массива

Подозреваю, что с выделением памати что-то намудрил
Очень прошу помощи.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru