Форум программистов, компьютерный форум CyberForum.ru

Рисование квадратов символами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Mee
 Аватар для Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
08.07.2010, 12:29     Рисование квадратов символами #1
Где-то тут недавно видел задачу, которая из разных символов рисует квадраты с вписанными квадратами по приницпу
C++
1
2
3
4
5
6
7
8
9
111111111
1_______1
1_11111_1
1_1___1_1
1_1_1_1_1
1_1___1_1
1_11111_1
1_______1
111111111
Захотелось сделать и самому, вроде бы задача не сложная, но на С++ я недавно, так что все равно ничего не вышло. Компилятор ничего не находит, но при запуске программы просто закрывает приложение от ошибки. Прошу, не пишите свой код программы, это мне ни капли не поможет, найдите лучше ошибки в моем. Вот собственно и он:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "stdafx.h"
#include <iostream> 
#include <stdlib.h>
using namespace std;
void draw(int **a,int lft,int rght, int max)
{
    int i,j;
    if (rght<0)
        for (i=0; i<max; i++)
         {
         for (j=0; j<max; j++)
             cout << a[i][j] << " ";
         cout << endl;
         }
    else
    {
    for (i=lft-1; i<rght; i++)
        for (j=lft-1; j<rght; j++)
            a[i][j]=1;
    for (i=lft; i<rght-1; i++)
        for (j=lft; j<rght-1; j++)
            a[i][j]=0;
    draw(a,lft+2,rght-2,max);
    }
}
 
int main()
{
    int numb,i,j;
           cout << "input max size" << endl;
    cin >> numb;
    int **a;
    draw(a,numb,numb,numb);
    cout << endl;
    cin.get();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2010, 12:29     Рисование квадратов символами
Посмотрите здесь:

C++ Работа с символами
C++ Работа со строками и символами.
работа с символами C++
C++ рисование в консоли (не символами)
C++ Программа на работу с символами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
08.07.2010, 12:36     Рисование квадратов символами #2
Может быть, проблема в том, что ты используешь неинициализированный указатель? Перед тем, как передавать его в функцию, нужно было бы выделить для него память.
Mee
 Аватар для Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
08.07.2010, 12:57  [ТС]     Рисование квадратов символами #3
можно по-подробнее?


а еще в консоли перед тем как выкидывает пишет
object reference not set to an instance of an object
и указывает на строки 21 и 38
что это означает ?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
08.07.2010, 13:17     Рисование квадратов символами #4
Перед 33 строкой напиши:
C++
1
2
3
a=new int*[numb];
for(size_t k=0; k<numb; ++k)
    a[k]=new int[numb];
А после 33:
C++
1
2
3
for(size_t k=0; k<numb; ++k)
    delete[] a[k];
delete[] a;
Mee
 Аватар для Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
08.07.2010, 13:27  [ТС]     Рисование квадратов символами #5
Спасибо, теперь хоть не выбивает ошибку. Но программа все равно не работает, наверное алгоритм неправильный, буду думать.

Все, теперь и в программе ошибку нашел логическую. Вызывать нужно не draw(a,numb,numb,numb);, а draw(a,1,numb,numb);
Все работает, огромное спасибо
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
08.07.2010, 13:30     Рисование квадратов символами #6
Попробуй пройти программу в пошаговом режиме. Хотя отлаживать рекурсивную программу - тот еще геморрой...
Yandex
Объявления
08.07.2010, 13:30     Рисование квадратов символами
Ответ Создать тему
Опции темы

Текущее время: 20:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru