Помощь - Поиск - Пользователи - Календарь
Полная версия: заполнение полей массива через Rand()
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Jerry
Здравствуйте.
значит есть у меня структура... а ней описаны номер, название, цена и вес препарата.
#include <stdio.h> 
#include <string.h>

const nbofstmax=1000;
int nbofst=10;
class apteka
{
public:
int number;
char name[15];
int price;
float weight;
apteka (int numb, char prep[15], int price0, float wght0)
{
number=numb;
strcpy(name, prep);
price=price0;
weight=wght0;
}

void printstud()
{
printf("%2d %-15s %3d %.2f\n", number, name, price, weight);
}

};


мне надо заменить код с инициализацией, через выбор случайного слова...

void initialize(apteka* stdar[])
{
stdar[0] = new apteka(1,"Analgin", 75, 180);
stdar[1] = new apteka(2,"Noshpa", 60, 285);
stdar[2] = new apteka(3,"Phalimint", 20, 176);
stdar[3] = new apteka(4,"Aspirin", 18, 187);
stdar[4] = new apteka(5,"Solpadein", 37, 300);
stdar[5] = new apteka(6,"Tabletki", 48, 179);
stdar[6] = new apteka(7,"Nazalvan", 67, 475);
stdar[7] = new apteka(8,"Vitamihi", 54, 107);
stdar[8] = new apteka(9,"Zelenka", 19, 171);
stdar[9] = new apteka(10,"Plastir", 76, 220);
printf("Database initialized successfully\n");
}


помогите написать функцию выбота случайного слова...
void GetWord ()
{
// Bu6op
retutn(char*)
}

for(i=0; i<10; i++)
{
stdar[i] = new apteka(i+1, GetWord(),rand()%100, rand()%250);
}
volvo
Тебе нужна функция, которая будет выбирать случайное слово из какого-то массива данных, или генерировать какую-либо (бредовую, лишенную всякого смысла) последовательность случайной длинны, состоящую из латинских букв?
Jerry
генерировать какую-либо (бредовую, лишенную всякого смысла) последовательность случайной длинны, состоящую из латинских букв
Алена
char *GetWord ()
{
int sz = (rand() % 10) + 5;
char *s = new char[sz];
for(int i = 0; i < sz; i++) s[i] = (rand() % 26) + 'a';

s[sz] = '\0';
s[0] = toupper(s[0]);

return s;
}

int main() {

for(int i = 0; i < 5; ++i) {

char *s = GetWord();

puts(s);

delete s; // Не забывай освобождать память, иначе будут утечки ...

}
return 0;
}
Jerry
заполнить поля массива из 10 aptek ...
...
(rand() % 10) + 5 -что оно делает?
toupper - если cисмвол -- лат. буква, то преобразовать cимвол к прописной букве... это точно оно? о.О
Алена
Цитата
(rand() % 10) + 5 -что оно делает?
Генерирует случайное число в интервале от 5 до 14 (я почему-то подумала, что если будет пустая строка, длиной 0, это тебя может не устроить... Я не права?)

Цитата
toupper - если cисмвол -- лат. буква, то преобразовать cимвол к прописной букве... это точно оно?
Если верить документации, то да... Если не верить - зачем программировать?

Цитата
заполнить поля массива из 10 aptek ...
Ты сначала описание этого массива покажи, я не телепат чтобы предполагать, как он описан...
Jerry
массив... инициализируем мы его в GetWord() походу.
char n[10] = {Analgin, Noshpa, Phalimint, Aspirin, Solpadein, Tabletki, Plastir, Zelenka, Vitamini, Nazalvan};
Алена
Однако, на вопрос, заданный в посте №2 ты ответила, что тебе нужно составлять свои слова, а не выбирать из готовых? Это как понимать?

Кстати, твой код, приведенный чуть выше не будет компилироваться. Что содержит массив? Символы? Строки? По типу вроде бы должны быть символы, тогда что такое Analgin?
Jerry
не знаю я.
я вообще не пойму чего от меня препод хочет. заменить void initialize ()... чтоб не прописывать кадждый эл-т отдельно, а выводить случайным словом... для этого надо вообще прописывать то что выводить потом.?
dry.gif
Алена
Я показала, КАК делать случайную строку. ЧТО с ней делать потом - твое дело. Хочешь - удаляй, хочешь - передавай в конструктор класса...

Если же ты будешь случайно выбирать слова из заранее заданного массива - тебе придется еще позаботиться о том, чтобы не было повторно выбрано то же самое слово... Это усложнит программу...
Jerry
спасибо за помощ
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.