Почему в структуре генерируется одни и те же значения?
#include <iostream>
#include <time.h>
struct MyString {
int length;
char* string_chars;
};
void get(MyString* obj, int N);
void show(MyString* obj, int N);
int main()
{
/* srand(time(NULL));*/
const int N = 4;
MyString *obj = new MyString[N];
get(obj, N);
show(obj, N);
}
void get(MyString* obj, int N) {
obj->length = 10;
obj->string_chars = new char[obj->length];
for (int i = 0; i < N; i++) {
for (int j = 0; j < obj->length; j++) {
obj->string_chars[j] = char('A' + rand() % ('Z' - 'A'));
}
}
}
void show(MyString* obj, int N) {
for (int i = 0; i < N; i++) {
std::cout << obj->length << " ";
for (int j = 0; j < obj->length; j++) {
std::cout << obj->string_chars[j];
}
std::cout << std::endl;
}
}
Как можно это исправить?
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Работать со всеми элементами массива, только и всего.
void get(MyString* obj, int N) {
for (int i = 0; i < N; i++)
{
obj[i].length = 10;
obj[i].string_chars = new char[obj->length];
for (int j = 0; j < obj[i].length; j++) {
obj[i].string_chars[j] = char('A' + rand() % ('Z' - 'A'));
}
}
}
void show(MyString* obj, int N) {
for (int i = 0; i < N; i++) {
std::cout << obj[i].length << " ";
for (int j = 0; j < obj[i].length; j++) {
std::cout << obj[i].string_chars[j];
}
std::cout << std::endl;
}
}
