Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> I need Help! не могу найти ошибку, Не могу найти Выход за пределы массива. 
:(
    Опции темы
Sofia
  Дата 18.10.2006, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Простая программа, калейдоскоп из звездочек в окне терминала. 
Скоро сдавать, переписала ее уже три раза набело, а ошибка все повторяется. 
 
Код

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>

#define NUM 70
#define MUN 40
int random(int n)
{
    int r;
    r=rand()%n;
    return r;
}

int main()
{
    time_t t;
    srand(time(&t));
    clock_t wait=1000;
    char kaleid[NUM][MUN];
    int n=NUM/2;
    int m=MUN/2;
    
    while(1)
    {
        clock_t beg=clock();
        int i,j;//чряюыэ хь яЁюсхырьш
        for(i=0;i<NUM;i++)
            for(j=0;j<MUN;j++)
                kaleid[i][j]=' ';

        int quantity=random(NUM)+1;//ёыєўрщэюх ъюышўхёЄтю чтхчф

        for(int k=0;k!=quantity;k++)//ЁрёёЄрты хь ёыєўрщэю quantity чтхчфюўхъ
        {
            i=random(n);
            j=random(m);
            if(kaleid[i][j]!='*')
                kaleid[i][j]='*';
            else
                k--;
        }
        
        while(i<NUM && j<MUN)
        {            
            for(i=0;i<NUM;i++)
                for(j=0;j<MUN;j++)            
                    if(kaleid[i][j]=='*')
                    {
                        kaleid[i][MUN-j]='*';
                        kaleid[NUM-i][MUN-j]='*';
                        kaleid[NUM-i][j]='*';
                    }
        }
        

        
        for(i=0;i<NUM;i++)
        {
            for(j=0;j<MUN;j++)
                putchar(kaleid[i][j]);
            printf("\n");
        }
        while(clock()<beg+1000);
        system("cls");

        if(getch()==27) //27-код  клавиши esc
            exit(1); 
    }
    getch();
    return 0;
}


Помогите, люди добрыеsmile

Это сообщение отредактировал(а) Sofia - 18.10.2006, 00:13
PM MAIL WWW ICQ   Вверх
Dov
Дата 18.10.2006, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Ошибка-то какая  smile 


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Sartorius
Дата 18.10.2006, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



 Как минимум надо писать if(kbhit() && getch() == 27)
Ну и system("cls") - это конечно круто. Вызывай clrscr();
PM MAIL ICQ   Вверх
Sofia
Дата 18.10.2006, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



в общем, тема такая:
Есть двумерный массив char arr[NUM][MUN];
В верхний левый угол массива случайно расставляем '*'. А потом симметрично их копируем в остальной массив. Вот при копировании где-то происходит выход за границы массива, п.ч. полной симметрии не получается. При распечатывании справа и внизу символов не хватаетsmile
Для наглядности можно сделать массив размером [4][4], тогда отсутствие симметрии становится очевидным


PM MAIL WWW ICQ   Вверх
Dov
Дата 18.10.2006, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Понятно, так попробуй
Код
...
    if(kaleid[i][j]=='*')
    {
         kaleid[i][MUN-j-1]='*';
         kaleid[NUM-i-1][MUN-j-1]='*';
         kaleid[NUM-i-1][j]='*';
    }
...    



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Sofia
Дата 18.10.2006, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 18.10.2006

Репутация: нет
Всего: нет



Круууть! Заработало!
Sartorius, Dov спасибоsmile
Кст, Sartorius, а чем так страшен system("cls")???
Заменила на clrscr(); , но все-таки хотелось бы понять, в чем разница
PM MAIL WWW ICQ   Вверх
Sartorius
Дата 18.10.2006, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



 Медленно очень работает. 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.