• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Массивы символов в C++

  • Автор темы chagin_yav
  • Дата начала
Статус
Закрыто для дальнейших ответов.
C

chagin_yav

Приветствую!
(среда borland c++ 3.1)
Такая задача:
С помощью ПСП (псевдослучайной последовательности) сформировать двухмерный массив. А в качестве элементов этого массива использовать одномерный массив из l символов. Причём одномерный массив из l символов должен представлять из себя слово заданной длины l с меняющимися символами и длиной(незаполненные позиции в зависимости от длины слова заполняются пробелами).

Например:
array[m][n]
word[l]
(m,n,l -константы)
Массив array[m][n] это нечто вроде таблицы с заданным числом строк столбцов, m,n, соответственно.
Массив word[l] это слово - 1 ячейка массива array[m][n]

Т.е. в результате на выводе должно получится что-то вроде:
(допустим 2-мерный массив 6x3 и одномерный =5)

***__ ***__ ****_
**___ ****_ ***__
***__ **___ ****_
****_ ****_ **___
*____ *____ ****_
****_ ****_ ***_

Здесь "*" - случайный символ от A до Z
"_" - пробел


ТО есть в данном случае должна получиться таблица из 6 строк, 3 столбцов, ячейка длиной 5 символов. Ячейка заполнена на случайное количество случайных символов.

А это моя попытка:

Код:
#include <conio.h>
#include <iostream.h>
#include <math.h>

#define k 2 //минимальная длина слова (ячейки)
#define l 7 //максимальная длина слова (ячейки)
#define m 20 //строки
#define n 10 //столбцы

int rand_size(int max, int min); //объявление функции, возвращающей //случайное целое чило с заданным диапазоном


void main()
{
char
array[m][n],
word[l];

int
i1,i2,i3,x;

randomize();
clrscr();
//Заполняем массив
for (i1=0;i1<m;i1++)
{
for (i2=0;i2<n;i2++)
{
x=rand_size(l,k); //возвращаем случайную длину слова
//от 2(k) до 7(l)
for (i3=0;i3<l;i3++)
{
if (i3<x) //если слово не заполнено по длине
{
word[i3]=(char)(random(26)+65);
array[i1][i2]=word[i3];
}
else //иначе заполняем остаток слова пробелами
{
word[i3]=(char)(32);
array[i1][i2]=word[i3];
}
}
}
}


//пытаемся вывести тепрь на экран таблицу из 20 строк, 10 столбцов
//заполненную словами длиной от 2 до 7 случайных символов.
for (i1=0;i1<m;i1++)
{
for (i2=0;i2<n;i2++)
{
cout<<array[i1][i2]<<" ";
}
cout<<endl;
}


getch();
}
//Функция возвращает случайное число с заданным диапазоном
int rand_size(int max, int min)
{
int
size;
label_1:
size=random(max+1);
if ((size>=min)&&(size<=max))
{
return size;
}
else
{
goto label_1;
}
}

Это попытка конечно же не удачная, пожалуйста посодейтсвуйте 1-курснику.

С уважением, Ярослав.
 
G

gamecreator

создай 3-мерный символьный массив.

а вместо
Код:
size=random(max+1);
if ((size>=min)&&(size<=max))
{
return size;
}
else
{
goto label_1;
}
напиши
Код:
size=min+random(max-min+1);
 
C

chagin_yav

"создай 3-мерный символьный массив."

- в условии задачи поставлена цель - создать два массива - двухмерный и одномерный
 
G

gamecreator

ты неправильно понял условие. прочитай еще раз.
сформировать двухмерный массив. А в качестве элементов этого массива использовать одномерный массив из l символов.

следовательно 2+1=3
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!