Показать полную графическую версию : Помогите решить задачу на Си
задача не затейливая, но вот я никак не могу её должным образом решить.
В общем, надо нарисовать прямоугольный треугольник вида
*
**
***
*****
примерно такого, учитель нам такой показывал, стороны треугольника 4*5
проблема в том, что я никак не могу найти формулу, по которой прога рисовала бы треугольник с нужными мне сторонами. всегда получается, что в конце то больше, то меньше заданного числа...
уже долго бьюсь над этой задачей, но никак не могу её решить
пробовал через деление, пробовал через другие формулы треугольников, но никак не получается, уже руки опустились
проблема в том, что я никак не могу найти формулу, по которой прога рисовала бы треугольник с нужными мне сторонами. »Геометрию учить не пробовали?
Прямоугольный треугольник (http://www.google.ru/search?sclient=psy-ab&hl=ru&lr=&newwindow=1&source=hp&q=прямоугольный+треугольник+формулы&oq=прямоугольный+треугольник&aq=2&aqi=g10&aql=&gs_sm=c&gs_upl=57287l69747l0l72353l20l20l1l0l0l3l235l2915l4.13.2l19l0)
Или например Прямоугольный треугольник. Определение тригонометрических функций. Прямоугольный треугольник. Тригонометрические формулы. Прямоугольный треугольник. Теорема Пифагора...... (http://www.clascalc.ru/triangle.htm)
в том то и дело, что данные вами статьи я изучал, однако все равно не получается
friter, хотелось бы видеть ход рассуждений. Это первое.
Второе, если хочется ответ здесь и сразу - изучайте машинную графику и алгоритмы построение треугольников с этой точки зрения.
#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 книги, но чтобы найти их, нужно прочесть сотни. А вот на сотни у меня как раз таки времени нет...
вроде так
int size =;
int i, j ;
for(i = 1; i < size; i++){
for(j=0; j<i; j++)
printf("*");
printf("\n");
}
этот вариант сразу отпадает, тк стороны А и В у треугольника могут быть не равными, к примеру 4*5 или 20*60 или 7*13 ну и тд...
Что то не совсем понятно, как из звездочек ("разного количества") может получится прямоугольный треугольник...
Вот например, как Вы говорите 4х5:
*
*
**
***
****
верхний элемент уже является лишним.
Получается только с равными катетами.
//вот тут и должна по моему располагаться формула
Ta++;
temp=tan(Ta/temp);
пока эксперементирую с формулами »
Вот эти самые формулы и интересуют.
какие формулы смотрелись, почему не устроили и т.д. "Тонны литературы" не говорят ни о чем.
Не нужны здесь тригонометрические функции:
цикл от 1 до a
на каждом шаге прибавляем отношение a к b, округляем - выводим это кол-во звёздочек
чтобы звёздочки по вертикали рисовались правильно, принудительно округляем до единицы всё, что меньше
Busla, этот ответ вытекал из посыла ТС изучать машинную графику и тамошние быстрые алгоритмы рисования. :)
Я ошибься, когда написал что треугольник прямоугольный, он может быть не прямоугольным, ну в общем по заданным А и Б сторонам
Delirium
10-11-2011, 00:42
оворят чтобы стать мудрым, надо прочесть всего 3 книги, но чтобы найти их, нужно прочесть сотни. А вот на сотни у меня как раз таки времени нет... »
Интересно, это чем же так заняты у нас студенты, что у них нет времени читать книги? :) У меня почему то было время читать книги и по программированию, и по администрированию, и еще по куче тем :)
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
Даны 3 числа. Определить, можно ли из них создать прямоугольный треугольник.С++ Помогите )))))
как написать ??
Женя.Дмитриев@vk, ваш вариант?
как написать ?? »
Я лично предпочитаю сидя. Сначала в голове, затем на бумаге, затем на машине.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.