|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.11.2011, 17:56 | #1 |
Регистрация: 18.11.2011
Сообщений: 5
|
Двумерный динамический массив типа char
Помогите пожалуйста с двумерным динамическим массивом типа char
как можно осуществить чтобы в массиве были значения от 50 до 100 ?? генерация и преобразование происходит как надо у меня получается так что только первый символ сгенерированного значения сидит в каждой ячейке массива // оператор for // размерность 5х9, тип данных элементов массива char // диапазон случайных чисел 50 - 100 // найти сумму первой строки #include "stdafx.h" #include <iostream> #include <ctime> #include <conio.h> #include <iomanip> #include <sstream> //--------------------------------------------------------------------------- using namespace std; int Random(int min, int max) { return min + rand() % (max - min); } int main(int argc, char* argv[]) { srand(time(NULL)); setlocale(LC_ALL,"Russian"); char* itoa(int v, char *str, int baz); int m; // Колличество строк int n; // Колличество столбцов int S = 0, F, p; // Сумма char* ch = new char [160]; cout << "Введите размерность матрицы (строки): "; cin >> m; cout << "Введите размерность матрицы (столбцы): "; cin >> n; char** array_a; // Создаем массив указателей array_a = new char*[m]; // А теперь создаем массивы значений, для каждой строки for (int i = 0; i < m; i++) { array_a[i] = new char[n]; } cout <<endl<< "Начальная матрица:" << endl; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { itoa(Random(50,100),ch,10); // преобразование в переменную ch происходит и нормально выводится array_a[i][j] = *ch; // почему выводятся только первые цифры?? cout << setw(7) << array_a[i][j] << " "; } cout << endl; } cout << endl << "Элементы первой строки:" << endl; for (int i = 0; i <= 0; i++ ) { for (int j = 0; j < n; j++) { cout << array_a[i][j] << " "; S = S + array_a[i][j]; } } cout << endl<< endl<< "Сумма элементов первой строки: " << S; // Удаляем массивы значений for (int i = 0; i < m; i++) { delete[] array_a[i]; } // Удаляем массив указателей delete[] array_a; cin.ignore(cin.rdbuf()->in_avail()); cin.get(); return 0; } |
18.11.2011, 18:18 | #2 |
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
Ну правильно.
Массив-то у тебя какого типа? char Вот и пишется в ячейку по одному символу.
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 |
18.11.2011, 18:18 | #3 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Код:
Что вы хотите добиться?
Со мной можно встретиться на www.clipper.borda.ru
|
18.11.2011, 18:26 | #4 | |
Регистрация: 18.11.2011
Сообщений: 5
|
Цитата:
а atoi делаю чтобы каждому элементу array_a[i][j] присвоить сконвертированное случайное целочисленное значение. itoa (целочисленное значение, символьное значение, 10 - это система счисления десятиричная) т.е. нельзя в типе char представить один элемент массива как двухзначное число ?? Последний раз редактировалось kre4e7; 18.11.2011 в 18:29. |
|
18.11.2011, 18:38 | #5 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Но вы же указываете в этой функции адрес массива в качестве буфера!
Вы не поняли с первого раза, что я вам написал?! Вы m *n раз делаете одно и тоже, то есть постоянно переписываете начало своего массива! Ваши циклы бессмысленны!
Со мной можно встретиться на www.clipper.borda.ru
|
18.11.2011, 18:46 | #6 | |
Регистрация: 18.11.2011
Сообщений: 5
|
Цитата:
как заполнить массив типа char случайными числами от 50 до 100? |
|
18.11.2011, 19:01 | #7 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Извините, я не внимательно рассмотрел ваш код. Итак, с начала.
f Код:
Код:
Чтобы правильно сделать, то возникает вопрос, как вы собираетесь хранить числовые значения в своих элементах массива. Я поясню. Например, вы хотите, чтобы, допустим, символ '8' хранился в вашем элементе массива. Символ '8' имеет целочисленное значение в ASCII равное 46. Поэтому, предположим, что ваш генератор случайных чисел сгенерировал некоторое число в интервале от 50 до 100. Тогда вы можете сразу же это значение присвоить элементу вашего массива. Например, Код:
Со мной можно встретиться на www.clipper.borda.ru
|
18.11.2011, 19:22 | #8 |
Регистрация: 18.11.2011
Сообщений: 5
|
Дааа если использовать аски символы то можно использовать коды 48 - 57 (цифры от 0 до 9). А вот двухзначные видимо нельзя((
Вы были правы что 1 символ только можно |
18.11.2011, 19:37 | #9 |
Форумчанин
Регистрация: 01.07.2011
Сообщений: 423
|
Типы char, signed char и unsigned char занимают один байт и могут хранить представление одного символа.
Со мной можно встретиться на www.clipper.borda.ru
|
18.11.2011, 19:43 | #10 |
Регистрация: 18.11.2011
Сообщений: 5
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Массив типа char (c++) | Blad47 | Помощь студентам | 5 | 10.10.2010 12:17 |
[Delphi] Массив типа char | Рамик | Помощь студентам | 1 | 20.09.2010 18:20 |
массив типа char в виде списка | saidmir | Общие вопросы C/C++ | 9 | 20.08.2010 21:38 |
Массив типа char * | das Ma:dchen | Общие вопросы C/C++ | 9 | 13.06.2010 17:21 |
Динамический сивольный массив типа char | z3rg | Общие вопросы C/C++ | 12 | 05.04.2009 21:00 |