Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.01.2008, 18:24   #1
chagin_yav
 
Регистрация: 04.01.2008
Сообщений: 4
По умолчанию Массивы символов с++

Приветствую!
(среда borland c++ 3.1)
Такая задача:
[FONT="Arial Black"]
С помощью ПСП (псевдослучайной последовательности) сформировать двухмерный массив. А в качестве элементов этого массива использовать одномерный массив из 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-курснику.

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

Последний раз редактировалось chagin_yav; 04.01.2008 в 18:39.
chagin_yav вне форума Ответить с цитированием
Старый 04.01.2008, 18:54   #2
itisiam
аккаунт недоступен
Форумчанин
 
Регистрация: 23.01.2007
Сообщений: 107
По умолчанию

Какой еще goto ? перекреститесь 3 раза и забудьте о нем навсегда

а в чем конкретно проблема не можете сказать? а то нет времени изучать код. могу пока сказать что функция возвращающая случайное число выглядит намного проще
Код:
#include <stdlib.h>
#include <time.h>

int main(int argc, char* argv[])
{
    srand((unsigned)time(NULL));   // задает начальное значение последовательности 
...........
}

int rand_number(int d)    // d - диапазон
{
    return rand()%d;
}
ф-я srand() задает начальное значение последовательности случайных чисел на основе текущего времени (в секундах). поэтому она должна распологаться в main; если ее поместить в rand_number и попробовать вызвать rand_number несколько раз в пределах 1й секунды, то она будет возвращать одно и то же число
ввел пароль, который мне не известен
itisiam вне форума Ответить с цитированием
Старый 04.01.2008, 19:14   #3
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Цитата:
Какой еще goto ? перекреститесь 3 раза и забудьте о нем навсегда
Не согласен. Злоупотреблять не нужно, но и забывать не стоит.
Somebody вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регистры символов rexec Microsoft Office Excel 11 02.02.2009 13:15
Считывание символов AI01 Общие вопросы C/C++ 5 01.03.2008 17:30
Массивы символов (строки) символьные файлы. anarchist Помощь студентам 2 24.12.2007 09:16
Массив символов PsyTech Общие вопросы C/C++ 4 08.10.2007 10:13