Тoшиpский
|
 |
« : 06 Май 2008, 14:07:59 » |
|
Имеется язык Си.(ANSI версия) Набор библиотек 0- http://www.cplusplus.com/reference/clibrary/ (стандартный) Имеется любая функция - допустим y=sqrt(x) или y=sin(x) Задача. Написать программу, которая бы рисовала ASCII символом график функции... Вещь легко пишется в том же Паскале, с Си у меня возникла проблема. Каким образом поставить символ на нужную позицию в нужной строке ничего не стирая, то есть без табуляций и переводов строки?
|
|
|
Записан
|
Feta odchudza, kurwo!
|
|
|
_SworD_
|
Используй ассемблерную вставку, и через регистры, сам гапишеш функу GoTo
|
|
|
Записан
|
|
|
|
Тoшиpский
|
Используй ассемблерную вставку, и через регистры, сам гапишеш функу GoTo В том то и фишка, что НЕЛЬЗЯ  Хотя я уже решил )
|
|
|
Записан
|
Feta odchudza, kurwo!
|
|
|
coolasm
|
Если под винду, тада вот код, думаю разберешся #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ский
|
Мне кроссплатформенно надо  Я ж выше писал, что уже решил, щас только код добиваю )
|
|
|
Записан
|
Feta odchudza, kurwo!
|
|
|
_SworD_
|
На какой Сишке пишешь, MS Visual Studio, или Borland, В MS точно нету стандартного GoTo. Че только не делал не катило. Потом написал на asm код, вставил и все ок. Исходником не поделюсь, так как его уже нет. А вот в книги гдето было, как это делать.
Хотя если asm знаешь отлично, то книга не нужна.
|
|
|
Записан
|
|
|
|
Тoшиpский
|
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
|
В разных системах вывод на консоль реализуется по разному (допустим в винде консоль работает в графическом режиме), поэтому в стандартных либах C нету функции позицианирования курсора, вариант с созданием буфера в памяти в принципе можно считать более мение обобщенным, хоть и достаточно медленным.
|
|
« Последнее редактирование: 11 Май 2008, 18:11:54 от coolasm »
|
Записан
|
HTTP Error 404 - File or directory not found.
|
|
|
Тoшиpский
|
Код: #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ский
|
Ясное дело, что учебная... 
|
|
|
Записан
|
Feta odchudza, kurwo!
|
|
|
|