Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?
Гродненский Форум
18 Июль 2025, 19:47:28
Новости, реклама:
   Главная   Новости Гродно Помощь Игры Календарь Войти Регистрация   Меню
Гродненский Форум > Компьютеры > Программирование
(Модераторы: Админ, barmalei) > Тема:

Задача с рисованием графика

Страниц  :   Вниз
  Печать  
Автор Тема: Задача с рисованием графика  (Прочитано 1590 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Тoшиpский
Гродненец
**

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 239


Просмотр профиля WWW
« : 06 Май 2008, 14:07:59 »

Имеется язык Си.(ANSI версия)
Набор библиотек 0- http://www.cplusplus.com/reference/clibrary/ (стандартный)
Имеется любая функция - допустим y=sqrt(x) или y=sin(x)

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

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

Feta odchudza, kurwo!
_SworD_
Почетный гродненец
*****

Репутация: +79/-2
Offline Offline

Пол: Мужской
Сообщений: 1603


Все делай с умом!

Просмотр профиля WWW
« Ответ #1 : 06 Май 2008, 18:45:34 »

Используй ассемблерную вставку, и через регистры, сам гапишеш функу GoTo
Записан
Тoшиpский
Гродненец
**

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 239


Просмотр профиля WWW
« Ответ #2 : 07 Май 2008, 00:14:49 »

Цитировать
Используй ассемблерную вставку, и через регистры, сам гапишеш функу GoTo
В том то и фишка, что НЕЛЬЗЯ Улыбка

Хотя я уже решил )
Записан

Feta odchudza, kurwo!
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #3 : 11 Май 2008, 00:24:58 »

Если под винду, тада вот код, думаю разберешся
#include "stdafx.h"
#include <iostream>
#include <windows.h>


int _tmain(int argc, _TCHAR* argv[])
{
HANDLE hConsoleOutput;

COORD cdCursorPos={ 10, 10 }; // либо координаты получать в качестве аргумента функции
hConsoleOutput = GetStdHandle((DWORD)-11);
if (hConsoleOutput==NULL)
return 1;
SetConsoleCursorPosition(hConsoleOutput, cdCursorPos);
std ::cout  << "Hi man 1"; //либо строку будет получать в качестве аргумента функции
///... код функции ...
cdCursorPos.X=10;
cdCursorPos.Y=11;
SetConsoleCursorPosition(hConsoleOutput, cdCursorPos);

int i;
std::cin>>i;
      return 0;
}

а тут этот код я взял и исправил в нем ошибки
http://forums.realcoding.net/index.php?showtopic=14559
если под DOS, то тебе нужно рыться  в conio.h
« Последнее редактирование: 11 Май 2008, 00:27:01 от coolasm » Записан

HTTP Error 404 - File or directory not found.
Тoшиpский
Гродненец
**

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 239


Просмотр профиля WWW
« Ответ #4 : 11 Май 2008, 10:38:33 »

Мне кроссплатформенно надо Улыбка Я ж выше писал, что уже решил, щас только код добиваю )
Записан

Feta odchudza, kurwo!
_SworD_
Почетный гродненец
*****

Репутация: +79/-2
Offline Offline

Пол: Мужской
Сообщений: 1603


Все делай с умом!

Просмотр профиля WWW
« Ответ #5 : 11 Май 2008, 13:54:50 »

На какой Сишке пишешь, MS Visual Studio, или Borland, В MS точно нету стандартного GoTo. Че только не делал не катило. Потом написал на asm  код, вставил и все ок. Исходником не поделюсь, так как его уже нет. А вот в книги гдето было, как это делать.

Хотя если asm знаешь отлично, то книга не нужна.
Записан
Тoшиpский
Гродненец
**

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 239


Просмотр профиля WWW
« Ответ #6 : 11 Май 2008, 15:08:24 »

ANSI C. Т.е. компилиться должна под всем - в том числе и стандартным компилятором C-99. Суть кода такова(громоздко получается) - в памяти организуется таблица 80 на 25 (как размер текстового VGA) - а в таблицу заносится 0 или 1 в соответствии с тем, будет ли там символ графика или нет... Кароч вот таким буфером оно решается...

GoTo - нестандартный оператор.
http://www.utas.edu.au/infosys/info/documentation/C/CStdLib.html
Записан

Feta odchudza, kurwo!
coolasm
Почетный гродненец
*****

Репутация: +102/-3
Offline Offline

Пол: Мужской
Сообщений: 1458


//---------//

Просмотр профиля
« Ответ #7 : 11 Май 2008, 18:11:10 »

В разных системах вывод на консоль реализуется по разному (допустим в винде консоль работает в графическом режиме), поэтому в стандартных либах C нету функции позицианирования курсора, вариант с созданием буфера в памяти в принципе можно считать более мение обобщенным, хоть и достаточно медленным.
« Последнее редактирование: 11 Май 2008, 18:11:54 от coolasm » Записан

HTTP Error 404 - File or directory not found.
Тoшиpский
Гродненец
**

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 239


Просмотр профиля WWW
« Ответ #8 : 13 Май 2008, 23:21:51 »

Код:

Код:
#include<stdio.h>
#include<math.h>
//zabivaem tochnost' chisla pi
#define pi 3.14159265358979

int main()
{
    //zapolniajem tablicu nuliami
    double vm[100][100];
    int i,j,outy2,zozo;
    double yp,y,x,outy1,outx2,j1,i1,outy12,outy13,outy14,outy15,outy16;
         for(i = 0; i <= 19 ; i++) {
              for(j = 0; j <= 79 ; j++) {
              vm[i][j]=0;
              }
         }
//test vyvoda tablicy zapolnennoj nuliami
//         for(i = 0; i <= 19 ; i++) {
//              for(j = 1; j <= 79 ; j++) {
//              x=vm[i][j];
//              printf ("%u", x);
//              }
//             printf("\n");
//         }

//         for(i = 0; i <= 19; i++) {
               for (j = 0; j <= 79; j++) {
                   //x=0.31415*j;
                   x=0.15708*j;
                  
                   //printf("%lf - %u - %u\n",x,j,i);
                   outy1 = sin (x);
                   //printf("%lf ", outy1);
                   outy12=outy1*10;
                   outy13=outy12+0.5;
                   outy14=floor(outy13);
                   outy15=outy14-10;
                   outy16=fabs(outy15);
                   outy2=outy16;
                   //printf("%d - %d \n", j, outy2);
                   vm[outy2][j]=1;
                   //zozo=vm[j][outy2];
                   //printf("%d ", zozo);
                   }
                   //vm[j][outy2]=1;
//         }


//test vyvoda tablicy s vvedennymi znachenijami
         for(i = 0; i <= 20 ; i++) {
              for(j = 1; j <= 79 ; j++) {
              zozo=vm[i][j];
              printf ("%u", zozo);
              }
             printf("\n");
         }
//outy1=sin(3.141592653);
//printf("   %lf ",outy1);

}

Результат:

Код:
0000000111110000000000000000000000000000000000011111000000000000000000000000000
0000001000001000000000000000000000000000000000100000100000000000000000000000000
0000010000000100000000000000000000000000000001000000010000000000000000000000000
0000100000000010000000000000000000000000000010000000001000000000000000000000000
0001000000000001000000000000000000000000000100000000000100000000000000000000000
0010000000000000100000000000000000000000001000000000000010000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000
0100000000000000010000000000000000000000010000000000000001000000000000000000000
1000000000000000001000000000000000000000100000000000000000100000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000100000000000000000001000000000000000000010000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000010000000000000000010000000000000000000001000000000000000001
0000000000000000000001000000000000000100000000000000000000000100000000000000010
0000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000100000000000001000000000000000000000000010000000000000100
0000000000000000000000010000000000010000000000000000000000000001000000000001000
0000000000000000000000001000000000100000000000000000000000000000100000000010000
0000000000000000000000000100000001000000000000000000000000000000010000000100000
0000000000000000000000000010000010000000000000000000000000000000001000001000000
0000000000000000000000000001111100000000000000000000000000000000000111110000000
« Последнее редактирование: 13 Май 2008, 23:33:21 от tony_tosh_upck » Записан

Feta odchudza, kurwo!
Тoшиpский
Гродненец
**

Репутация: +31/-4
Offline Offline

Пол: Мужской
Сообщений: 239


Просмотр профиля WWW
« Ответ #9 : 14 Май 2008, 10:08:49 »

Ясное дело, что учебная... Улыбка
Записан

Feta odchudza, kurwo!
Страниц  :   Вверх
  Печать  
 
Перейти в:  

Войти
Войдите, чтобы добавить комментарий

Войдите через социальную сеть

Имя пользователя:
Пароль:
Продолжительность сессии (в минутах):
Запомнить:
Забыли пароль?

Контакт
Powered by MySQL Powered by PHP Мобильная версия
Powered by SMF 1.1.20
SMF © 2006-2025, Simple Machines
Simple Audio Video Embedder
| Sitemap
Valid XHTML 1.0! Valid CSS!
Страница сгенерирована за 0,106 секунд. Запросов: 20.