Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Помогите решить задачу на Си (http://forum.oszone.net/showthread.php?t=220013)

friter 08-11-2011 23:42 1791277

Помогите решить задачу на Си
 
задача не затейливая, но вот я никак не могу её должным образом решить.
В общем, надо нарисовать прямоугольный треугольник вида
*
**
***
*****
примерно такого, учитель нам такой показывал, стороны треугольника 4*5
проблема в том, что я никак не могу найти формулу, по которой прога рисовала бы треугольник с нужными мне сторонами. всегда получается, что в конце то больше, то меньше заданного числа...

уже долго бьюсь над этой задачей, но никак не могу её решить
пробовал через деление, пробовал через другие формулы треугольников, но никак не получается, уже руки опустились

yurfed 09-11-2011 00:15 1791292

Цитата:

Цитата friter
проблема в том, что я никак не могу найти формулу, по которой прога рисовала бы треугольник с нужными мне сторонами. »

Геометрию учить не пробовали?
Прямоугольный треугольник
Или например Прямоугольный треугольник. Определение тригонометрических функций. Прямоугольный треугольник. Тригонометрические формулы. Прямоугольный треугольник. Теорема Пифагора......

friter 09-11-2011 00:34 1791302

в том то и дело, что данные вами статьи я изучал, однако все равно не получается

lxa85 09-11-2011 01:00 1791316

friter, хотелось бы видеть ход рассуждений. Это первое.
Второе, если хочется ответ здесь и сразу - изучайте машинную графику и алгоритмы построение треугольников с этой точки зрения.

friter 09-11-2011 01:04 1791320

#include <stdio.h>
#include <math.h>
int main(void){
int a, Ta=0, b;
float temp=1, angle;
// ну тут понятно, воодятся 2 числа для сторон а и б
printf("a= b=\n");
scanf("%d %d", &a, &b);
//переходит со строчки на строчку
for(int i=0; i<a; i++){
printf("\n");
//вот тут и должна по моему располагаться формула
Ta++;
temp=tan(Ta/temp);

пока эксперементирую с формулами

//печатает заданное количество звездочек на строчке(я пока использую цифры, тк постоянно считать звездочки надоело)
for(int j=0; j<temp; j++)
printf("%2.f", temp);
}
return 0;
}

у меня уже голова не варит, тонны литературы просмотрел... Говорят чтобы стать мудрым, надо прочесть всего 3 книги, но чтобы найти их, нужно прочесть сотни. А вот на сотни у меня как раз таки времени нет...

ferget 09-11-2011 02:20 1791347

вроде так

Код:

int size =;
    int i, j ;
    for(i = 1; i < size; i++){
        for(j=0; j<i; j++)
          printf("*");         
        printf("\n");
    }


friter 09-11-2011 03:07 1791356

этот вариант сразу отпадает, тк стороны А и В у треугольника могут быть не равными, к примеру 4*5 или 20*60 или 7*13 ну и тд...

LilLoco 09-11-2011 07:37 1791416

Что то не совсем понятно, как из звездочек ("разного количества") может получится прямоугольный треугольник...
Вот например, как Вы говорите 4х5:
HTML код:

*
*
**
***
****

верхний элемент уже является лишним.
Получается только с равными катетами.

lxa85 09-11-2011 09:05 1791446

Цитата:

Цитата friter
//вот тут и должна по моему располагаться формула
Ta++;
temp=tan(Ta/temp);
пока эксперементирую с формулами »

Вот эти самые формулы и интересуют.
какие формулы смотрелись, почему не устроили и т.д. "Тонны литературы" не говорят ни о чем.

Busla 09-11-2011 10:22 1791484

Не нужны здесь тригонометрические функции:
цикл от 1 до a
на каждом шаге прибавляем отношение a к b, округляем - выводим это кол-во звёздочек

чтобы звёздочки по вертикали рисовались правильно, принудительно округляем до единицы всё, что меньше

lxa85 09-11-2011 13:03 1791553

Busla, этот ответ вытекал из посыла ТС изучать машинную графику и тамошние быстрые алгоритмы рисования. :)

friter 09-11-2011 15:40 1791640

Я ошибься, когда написал что треугольник прямоугольный, он может быть не прямоугольным, ну в общем по заданным А и Б сторонам

Delirium 10-11-2011 00:42 1791947

Цитата:

Цитата friter
оворят чтобы стать мудрым, надо прочесть всего 3 книги, но чтобы найти их, нужно прочесть сотни. А вот на сотни у меня как раз таки времени нет... »

Интересно, это чем же так заняты у нас студенты, что у них нет времени читать книги? :) У меня почему то было время читать книги и по программированию, и по администрированию, и еще по куче тем :)

friter 10-11-2011 16:21 1792355

Код:

void Triangle1 (){
float a, b, temp;
    printf("a= b=\n");
        scanf("%f %f", &a, &b);

    for(int i=0; i < a; i++){
        temp = b / a;
        for(int j=0; j <= i*temp; j++){
            if((i == 0)||(i == a-1)){
                printf("*");
                continue;
            }
            if((j >= 1)&&(j < (i*temp)-0.5))
                printf(" ");
                else printf("*");
        }
        printf("\n");
    }
}


нашел решение

Женя.Дмитриев@vk 21-01-2019 14:32 2853575

Даны 3 числа. Определить, можно ли из них создать прямоугольный треугольник.С++ Помогите )))))
как написать ??

mwz 21-01-2019 15:00 2853578

Женя.Дмитриев@vk, ваш вариант?

Iska 21-01-2019 19:17 2853623

Цитата:

Цитата Женя.Дмитриев@vk
как написать ?? »

Я лично предпочитаю сидя. Сначала в голове, затем на бумаге, затем на машине.


Время: 08:48.

Время: 08:48.
© OSzone.net 2001-