Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Рисунок на С  (Прочитано 6865 раз)
0 Пользователей и 1 Гость смотрят эту тему.
#!/Perlik
Гость
« : 03-09-2006 07:58 » 

Я толко начал изучать С, и вот решил нарисовать треугольник, но что-то логики мне не хватает

пока получается


*

    *

        *

            *

                *

                    *

                        *

вот код

Код:
main() {

int a, b, x, y;

for (a=0; a<10; a++) {

    for (b=0; b<=a; b++) { printf (" "); }
   
    printf ("*\n", a);
   

    }
}
могет кто не много даст маленькую подсказку, что я делаю не то, могет там в цикле нада еще и условие задать?
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 03-09-2006 10:48 » 

Так хотел?
Код:
#include "stdafx.h"

#include <stdio.h>
#include <conio.h>
void main()
{
int line=10;
int remain=0;
for(int i=10;i>0;i--)
{
remain=line-i;
for(int a=0;a<line-remain;a++)
{
printf(" ");
}
printf("*");

for(a=0;a<2*remain;a++)
{
printf(" ");
}
printf("*\n");
}


for(int a=0;a<2*line;a++)
printf("*");
}
Записан

ещё один вопрос ...
#!/Perlik
Гость
« Ответ #2 : 03-09-2006 11:04 » 

приблизительно...
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 03-09-2006 11:15 » new

#!/Perlik, сделай вдухмерный симольный массив - "рисовать" надо в нем, а потом выведешь результат.

Код:
#include <stdio.h>
#include <stdlib.h>

#define SIZE_X 16
#define SIZE_Y 16

char buffer[SIZE_Y][SIZE_X];

void init_buffer()
{
    int x, y;

    for (y = 0; y < SIZE_Y; y++)
        for (x = 0; x < SIZE_X; x++)
            buffer[y][x] = ' ';
}

void draw_line(int x0, int y0, int x1, int y1)
{
    float x, y;
    float dx, dy;
    int n;

    if (abs(x1 - x0) > abs(y1 - y0))
    {
        n = abs(x1 - x0);
        dx = (x1 > x0) ? 1 : -1;

        if (y1 == y0)
            dy = 0;
        else
            dy = ((float)(y1 - y0))/(float)abs(x1 - x0);
    }
    else if (abs(y1 - y0) > abs(x1 - x0))
    {
        n = abs(y1 - y0);
        dy = (y1 > y0) ? 1 : -1;

        if (x1 == x0)
            dx = 0;
        else
            dx = ((float)(x1 - x0))/(float)abs(y1 - y0);
    }
    else
    {
        n = abs(x1 - x0);
        dx = (x1 > x0) ? 1 : -1;
        dy = (y1 > y0) ? 1 : -1;
    }

    x = x0;
    y = y0;

    do {
        buffer[(int)(y + 0.5)][(int)(x + 0.5)] = '*';

        x += dx;
        y += dy;
    }
    while (n--);
}

void print_buffer()
{
    int x, y;

    for (y = 0; y < SIZE_Y; y++)
    {
        for (x = 0; x < SIZE_X; x++)
            putchar(buffer[y][x]);
        putchar('\n');
    }
}

int main()
{
    init_buffer();
    draw_line(0, 0, 15, 8);
    draw_line(15, 8, 7, 15);
    draw_line(7, 15, 0, 0);
    draw_line(0, 0, 15, 15);
    draw_line(0, 15, 15, 0);
    print_buffer();

    return 0;
}
« Последнее редактирование: 16-12-2007 17:40 от Алексей1153++ » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines