Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
DannyConnor
2 / 2 / 0
Регистрация: 11.10.2015
Сообщений: 39
Завершенные тесты: 1
1

Вывод цикла в одну строку

26.10.2015, 16:15. Просмотров 1742. Ответов 1
Метки нет (Все метки)

Задача: нарисовать график функции y=sin(2*3.14*x/50)/math.cos(2*3.14*x/50).
Именно:
Кликните здесь для просмотра всего текста
Построить график функции из задания 2. График представляет собой изображение из 50 символов по горизонтали и 50 символов по вертикали. Для отображения графика нужно организовать вложенные циклы. Внешний цикл выполняется 50 раз и рисует 50 строк. Внутренний цикл повторяется 50 раз и рисует 50 столбцов. Во внутреннем цикле проверяется, какой символ нужно нарисовать.
Для определения отображаемого символа используется следующее условное выражение. Если ceil(((func)-min)*50/(max-min))==50-j, то печатается символ «*», иначе печатается символ « » (пробел). В условном выражении max и min – это максимум и минимум функции, найденные в предыдущем задании. Func – это отображаемая функция. Функция «сeil» находит наименьшее целое, не большее аргумента. Все выражение масштабирует диапазон значений функций (от min до max) на диапазон от 0 до 50 и определяет, в какой строке функция пересекает соответствующий столбец.


На языке С все получается без проблем:
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
38
39
40
#include <stdio.h> 
#include <stdlib.h> 
#include <math.h> 
 
void main() 
{ 
    float y, max, min, h, z; 
    int i, j;
    max=sin(2*3.14/50)/cos(2*3.14/50); 
    min=max; 
    for (i=1; i<=50; i++) 
    { 
        y= sin(2*3.14*i/50)/cos(2*3.14*i/50); 
        if(y>max) 
        { 
            max=y; 
        } 
        if(y<min) 
        { 
            min=y; 
        } 
    printf("\n"); 
        for(j=1; j<=50; j++) 
        { 
            y=ceil(((sin(2*3.14*i/50)/cos(2*3.14*i/50))-min)*50/(max-min)); 
            z=50-j; 
            if (y==z) 
            { 
                printf("*"); 
            } 
            else 
            { 
                printf(" ");
            } 
        } 
    } 
printf("\n"); 
printf("%f\n", min); 
printf("%f", max); 
}
Но при выполнении аналогичной задачи на Python возникает проблема - внутренний цикл не выводит результаты в одну строку, а в столбец сразу.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import math
min=max=math.sin(2*3.14/50)/math.cos(2*3.14/50)
i=1
while i<=50:
    y=math.sin(2*3.14*i/50)/math.cos(2*3.14*i/50)
    try:
        if(y>max):
            max=y
        if(y<min):
            min=y
    except ZeroDivisionError: 
        y=1
    i+=1
    j=1
    while j<=50:
        y= math.ceil(((math.sin(2*3.14*i/50)/math.cos(2*3.14*i/50))-min)*50/(max-min))
        if y==50-j:
            print('*')
        else:
            print (' ')
        j+=1
print(max)
print(min)
Еще там с исключениями экспериментирую, ибо деление на ноль получается. Проверить нет возможности из-за проблем с внтуренним циклом.
Можно ли скомбинировать с циклом for или вообще как-то заменить? ума не приложу, в программировании нуб
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2015, 16:15
Ответы с готовыми решениями:

Вывод чисел в одну строку из цикла
У меня возникла проблема при решении одной задачи на контрольной. Вот как...

Вывод в одну строку в цикле
Доброго времени суток!!! Господа профессионалы!!! Помогите начинающему...

Вывод в одну строку в цикле
Здравствуйте, господа. Нужна программа, которая бы выводила текст определенной...

Вывод текущего времени в одну строку, с заменой предыдущего значения
Привет всем. Есть код: from datetime import datetime while True: ...

Как написать строку в цикле в одну строку?
Как написать строку в цикле в одну строку? Задача: (лучше без списков,мы пока...

1
Marinero
Модератор
Эксперт NIX
2060 / 1670 / 570
Регистрация: 02.03.2015
Сообщений: 5,496
26.10.2015, 16:28 2
Python
1
print('*', end=" ")
выводит в 1 строку с пробелами
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2015, 16:28

Объединить элементы в одну строку
разрабатываю типо конвертера html. Есть строковый текст, выходящий на экран....

Вложенные циклы for в одну строку
Подскажите плиз как можно покороче записать вложенные циклы. У меня есть...

Соединить два списка в одну строку
Всем привет. Eсть два списка f_list = s_list = Как их соеденить в одну...


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

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

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