Можно ли как-нибудь собрать все значения x...x7 и y...y7 в массив?
Не доходит как можно это нормально реализовать так, чтобы не ломать все остальное
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
char mas [9] [12];
int i;
int xo, yo;
srand(time(NULL));
int x=rand()*1.0/RAND_MAX *8+1, y=rand()*1.0/RAND_MAX *8+1;
int x1=rand()*1.0/RAND_MAX *8+1, y1=rand()*1.0/RAND_MAX *8+1;
int x2=rand()*1.0/RAND_MAX *8+1, y2=rand()*1.0/RAND_MAX *8+1;
int x3=rand()*1.0/RAND_MAX *8+1, y3=rand()*1.0/RAND_MAX *8+1;
int x4=rand()*1.0/RAND_MAX *8+1, y4=rand()*1.0/RAND_MAX *8+1;
int x5=rand()*1.0/RAND_MAX *8+1, y5=rand()*1.0/RAND_MAX *8+1;
int x6=rand()*1.0/RAND_MAX *8+1, y6=rand()*1.0/RAND_MAX *8+1;
int x7=rand()*1.0/RAND_MAX *8+1, y7=rand()*1.0/RAND_MAX *8+1;
printf(" 12345678\n");
printf(" ________\n");
for(i=1;i<9;i++)
sprintf(mas[i],"|OOOOOOOO|%d",i);
mas[y][x]='@';
mas[y1][x1]='@';
mas[y2][x2]='@';
mas[y3][x3]='@';
mas[y4][x4]='@';
mas[y5][x5]='@';
mas[y6][x6]='@';
mas[y7][x7]='@';
for (i=1; i<9;i++)
printf("%s\n",mas[i]);
Пробовал через что-то подобное
srand(time(NULL));
const int size = 8;
int x[size];
int y[size];
int i;
for (i=0; i<size; i++)
x[i] = rand()*1.0/RAND_MAX *8+1, Y[i] = rand()*1.0/RAND_MAX *8+1;
Я получал Array subscript is not an integer в присвоение ( mas[y][x]='@' )
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
Я бы заменил все ваши строки таким:
for(int i = 0; i < 8; ++i)
mas[rand()%9][rand()%9] = '@';
Т.е. в случайные места с индексами от 0 до 8 ткнуть эту "собачку".
Меня смущает только ваше
rand()*1.0/RAND_MAX *8+1
Оно принимает значения от 1 до 8. Так и надо? тогда
mas[rand()%8+1][rand()%8+1] = '@';
Только у вас размерность массива 9х12, а заполняется квадрат 8х8. Не смею спорить, но нет ли здесь какого недосмотра?
И еще... Это все же случайные величины, так что может оказаться так, что "собачка" может быть записана в одну и ту же клетку неоднократно. С этим надо бороться или нет?