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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Массивы указателей http://www.cyberforum.ru/cpp-beginners/thread1206750.html
Помогите пожалуйста решить задание, буду очень благодарен! Стек моделируется при помощи динамического массива указателей на линейные массивы размерности N целых. Указатель стека – два индекса – в массиве указателей и линейном массиве. В операции push при переполнении текущего линейного массива в массив указателей добавляется новый, если операция pop переходит к предыдущему массиву, то текущий...
C++ Рекурсия. Разместить на доске мин. количество коней так, чтобы все фигуры противника находились «под боем» Здравствуйте прошу вашей помощи, нужно решить задачу. Буду очень благодарен. На шахматной доске имеется N фигур противника. Разместить на ней минимальное количество коней так, чтобы все фигуры противника находились «под боем». http://www.cyberforum.ru/cpp-beginners/thread1206747.html
Вывести значения элементов, расположенных между min и max элементами односвязного списка C++
Наработки оставил в учебном заведении поэтому не могу скинуть наработки. Помогите с задачей пожалуйста! Условие:"Создать односвязний линейный список, элементами которого являются натуральные числа. Вывести значения элементов, расположенных между наименьшим элементом и самым наибольшим элементами списка"
Вывод из файла C++
Доброго времени суток, уважаемые форумчане!!! Я вот с какой проблемой обращаюсь к вам: Имеется программа записи данных в файл (Запись происходит корректно, в файле вводимые данные отображаются) нужно написать программу для вывода данных из файла. Функция имеется, при запуске программы ошибок не выдает, зато выдает такую вот гадость: Будьте добры, помогите разобраться в чем причина данного...
C++ GetUserName: вывод http://www.cyberforum.ru/cpp-beginners/thread1206714.html
Пишу такое дело: int main() { DWORD bufCharCount; TCHAR infoBuf; GetUserName(infoBuf, &bufCharCount); std::cout << infoBuf;
C++ Проверка строки на символы С клавиатуры ввести предложение. Напечатать те слова из введенного предложения, в которых есть хотя бы одна буква, которая встречается четыре и больше раз (например, слово абракадабра), или вывести сообщение об отсутствии таких слов. подробнее

Показать сообщение отдельно
HUSTLIN
1 / 1 / 1
Регистрация: 19.10.2013
Сообщений: 75
13.06.2014, 00:49     Не работает вывод двумерного массива через метод класса
При обращении к методу getStringSymbol и getAllStrings прога вылетает, помогите пожалуйста
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include "stdafx.h"
#include "iostream"
#include "string.h"
#include "stdio.h"
#include "locale"
 
using std::cout;
using std::cin;
 
//---------------------
// Объявление класса
//---------------------
class CStrings
{
  private: 
      int size;
      char **str;
 
  public:
      CStrings();
      CStrings(int rows);
 
      void  inputStrings();       
      void  getString(int row);
      void  getStringSymbol(int row, int index);
      void  getAllStrings();
      int   getSize(){return size;}
      ~CStrings();
};
 
//---------------------
// Функции
//---------------------
int Menus(void);
void stringsAmount(CStrings &st);
void inputStrings(CStrings &st);
void outputStrings(CStrings &st);
void outputSymbol(CStrings &st);
 
//---------------------
// Описание ф-ций класса
//---------------------
 
CStrings::CStrings()
{
    size = 1;
    str = new char* [size]; // Кол-во строк
      for (int i = 0; i < size; i++)
          str[i] = new char [80];   
}
 
CStrings::CStrings(int rows)
{
    size = rows;
    str = new char* [size]; // Кол-во строк
    for (int i = 0; i < size; i++)
    {
       str[i] = new char [80];      
    }
}
 
CStrings::~CStrings()
{   
    for(int i = 0; i < size; i++)
    {
        delete [] str[i];
    }
    delete [] str;
}
 
void CStrings::inputStrings()
{
    cin.ignore(100, '\n');
    
    try
    {
        for(int i = 0; i < getSize(); i++)
        {
            char *s = new char[80];
            cin.getline(s, 80);         
        }
    }
    catch(char* exception)
    {
        cout << exception;
    }
}
 
void CStrings::getString(int row)
{
    for(int i = 0; i < 80; i++)
    printf("Строка №%d\n%c", row, this->str[row][i]);   
    printf("\n");
}
 
void CStrings::getStringSymbol(int row, int index)
{
    printf("Строка №%d, Символ №%d          -   %c\n", row+1, index+1, this->str[row][index];
}
 
void CStrings::getAllStrings()
{
    for(int i = 0; i < this->getSize(); i++)
        for(int j = 0; j < 80; j++)
        {
            printf("%c\n", this->str[i][j]);
        }   
}
 
 
void _tmain(int argc, _TCHAR* argv[])
{   
    setlocale(LC_ALL, "rus");
    CStrings st;
 
    while (true)
    {
        std::cout << st.getSize();
        switch(Menus())
        {
        case 1: stringsAmount(st); break;
        case 2: inputStrings(st); break;
        case 3: outputStrings(st); break;
        case 6: outputSymbol(st); break;
        case 8: exit(0);
        }
    }
}
 
//---------------------
// Описание функций
//---------------------
void stringsAmount(CStrings &st)
{
    int number_of_strings;
    printf("Введите количество строк: ");
    std::cin >> number_of_strings;
    st = CStrings(number_of_strings);
    //st->setMaxStrings(number_of_strings); 
}
 
void inputStrings(CStrings &st) {st.inputStrings(); }
void outputStrings(CStrings &st) {st.getAllStrings(); }
 
void outputSymbol(CStrings &st)
{
    int r=0, ind=0;
    std::cout << "Введите номер строки и индекс через ',':   ";
    scanf_s("%d%*c%d", &r, &ind); cout << '\n';
    st.getStringSymbol(r-1, ind-1);
}
 
int Menus(void)
{
    int choice;
    std::cout << "1. Введите количество строк\n2. Введите строки\n3. Вывести все строки\n4. Поэлементное слияние строк\n";
    std::cout << "5. Слияние двух строк с искл. повт. элем.\n6. Вывод элем. строки по индексу\n7. Вывод всех строк\n8. Выход\n";
    std::cin >> choice;
    return choice;
}
Добавлено через 45 минут
Понял что ввод не верный, попробовал сделать так, тоже вылетает
C++
1
2
3
4
5
6
7
8
void CStrings::inputStrings()
{   
    for(int i = 0; i < this->getSize(); i++)
    {       
        //gets_s(&str[i][0], 80);
        cin.getline(&str[i][0], 80);
    }   
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru