Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
#1

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

08.07.2010, 12:29. Просмотров 1164. Ответов 5
Метки нет (Все метки)

Где-то тут недавно видел задачу, которая из разных символов рисует квадраты с вписанными квадратами по приницпу
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.07.2010, 12:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Рисование квадратов символами (C++):

рисование в консоли (не символами) - C++
Есть ли у кого пример рисования в консоли не символами. Буду очень признателен :-|

Подсчитать сумму квадратов четных и сумму квадратов нечетных элементов массива - C++
Сформировать в программе массив из целых чисел от 2 до N. Подсчитать сумму квадpатов четных и сумму квадратов нечетных чисел.

Подсчитать сумму квадратов четных и сумму квадратов нечетных чисел - C++
1. Дан массив A размера N. Вывести его элементы в следующем порядке: A1, AN, A2, AN–1, A3, AN–2, … . #include&lt;iostream.h&gt; void...

Вывод рисунков символами - C++
Здравствуйте. Возник вопрос: как расположить выведенные цифры в строку? #include &lt;iostream&gt; using namespace std; int main() {...

Дополнить строку символами - C++
Всем доброго времени суток. Такая задача: Вводим строку с клавиатуры (строку следует pассматpивать как символьную массивы (array of char),...

Работа с символами в строке - C++
Есть строка в 160 символов, мне надо найти в этом тексте слова состоящие из 3 символов. If (strlen(str1)==3) // определяем слова...

5
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
08.07.2010, 12:36 #2
Может быть, проблема в том, что ты используешь неинициализированный указатель? Перед тем, как передавать его в функцию, нужно было бы выделить для него память.
0
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
что это означает ?
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
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;
1
Mee
14 / 14 / 1
Регистрация: 05.07.2010
Сообщений: 88
08.07.2010, 13:27  [ТС] #5
Спасибо, теперь хоть не выбивает ошибку. Но программа все равно не работает, наверное алгоритм неправильный, буду думать.

Все, теперь и в программе ошибку нашел логическую. Вызывать нужно не draw(a,numb,numb,numb);, а draw(a,1,numb,numb);
Все работает, огромное спасибо
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
08.07.2010, 13:30 #6
Попробуй пройти программу в пошаговом режиме. Хотя отлаживать рекурсивную программу - тот еще геморрой...
0
08.07.2010, 13:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.07.2010, 13:30
Привет! Вот еще темы с ответами:

Вывести символами ромб - C++
Доброго времени суток, каким образом нужно заполнить двухмерный массив что бы при выводе был ромб из звездочек размером например...

regex с русскими символами - C++
Привет всем! что надо сделать чтобы работала регулярное выражение с русскими буквами ? регулярные выражение пользуюсь из boost...использую...

Проблемы с русскими символами - C++
#include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;locale.h&gt; int main() { setlocale(LC_ALL, &quot;Russian&quot;); char...

Шифрование инверсными символами - C++
Добрый день, уважаемое сообщество! Код ниже - реализация шифрования инверсными символами (по дополнению 255). Т.е. замена символа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru