Pito Temat założony przez niniejszego użytkownika |
[Bulider6, C++] Nie działa funkcja 'getch' » 2008-01-27 17:33:18 Nie działa mi komenda getch(); w bulider a bibliotekę conio.h zamieściłem. Program się kompiluje ale po dotarciu do tej komendy przestaje reagować na cokolwiek. Czy ktoś się spotkał z takim problemem i wie może jak temu zaradzić?? a oto kod przy którym się zacina. #include "winbgim.h" #include <vcl.h> #pragma hdrstop #include <cstdlib> #include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <conio.h> #include <math.h> void frys();
int k = 10, p, t; double x, a, b; double wyn; double tab[ 1000 ];
main() { int Sterownik, Tryb; Sterownik = DETECT; initgraph( & Sterownik, & Tryb, "" ); closegraph(); cout << "Program tablicowania i rysowania funkcji f(x) w przedziale <a,b> dla\nzadanej liczby kroków n: " << endl; cout << "Program zostal napisany Przez Adama Białachowskiego" << endl; char znak; znak = getch(); while( znak != 27 ) { cout << "podaj przedzial<a,b>" << endl; do { gotoxy( 3, 5 ); clreol(); for( int i = 0; i < 10; ++i ) { gotoxy( 6 + i, 5 ); cout << "-"; gotoxy( 6 + i, 7 ); cout << "-"; pp: gotoxy( 6, 6 ); cout << "a = "; } cin >> a; if( a > 999 ) { gotoxy( 6, 6 ); clreol(); gotoxy( 6, 8 ); cout << "A może miec maksymalnie 3 cyfry"; goto pp; } clreol(); for( int i = 0; i < 10; ++i ) { gotoxy( 6 + i, 5 ); cout << "-"; gotoxy( 6 + i, 7 ); cout << "-"; zz: gotoxy( 6, 6 ); cout << "b = "; } clreol(); cin >> b; if( b > 999 ) { gotoxy( 6, 6 ); clreol(); gotoxy( 6, 8 ); cout << "A może miec maksymalnie 3 cyfry"; goto zz; } gotoxy( 6, 8 ); clreol(); if( !cin ) { cin.clear(); cin.ignore( 225,( int ) '\n' ); } } while( a == NULL ); gotoxy( 1, 4 ); clreol(); gotoxy( 1, 5 ); clreol(); gotoxy( 1, 6 ); clreol(); gotoxy( 1, 7 ); clreol(); gotoxy( 3, 5 ); cout << "tablica wyników dla przedziału liczb od " << a << " do " << b << endl << endl << endl; x = a; t = b - a; int n = 0; for( double i = a; i < b; i++, x++, p++, n++ ) { wyn = 1 - pow( k, 2 ) * pow( sin( x ), 2 ); tab[ p ] = wyn; cout << n << ". " << wyn << endl; } frys(); } }
void frys() { initwindow( 600, 600 ); line( 300, 0, 300, 600 ); line( 0, 300, 600, 300 ); int k1 = 0, k2 = 0; for( int i = 0; i < 60; i++, k1 = k1 + 10, k2 = k2 + 10 ) { line( 298, k1, 302, k2 ); line( k1, 298, k2, 302 ); } int n = 100; moveto( 300, 300 ); for( int i = 0; i < n; i++ ) { if( tab[ i ] != NULL ) { putpixel( 300 +( tab[ i ] * 10 ), 300 -( tab[ i ] * 10 ), 4 ); } } while( !kbhit() ); closegraph(); }
|
|
DejaVu |
Błąd w kodzie » 2008-01-27 18:45:04 W programie masz taki zapis: char znak; znak = getch(); while( znak != 27 ) { }
w wyniku czego program się pętli w nieskończoność. /edit: aby się przekonać, że getch() działa napisz: char znak; cout << "Czekam na klawisz... "; znak = getch(); cout << "klawisz nacisniety!" << endl; while( znak != 27 ) { }
/edit #2: zapis: znak = getch(); musisz umieścić wewnątrz pętli, jednak nie wiem w którym miejscu, ponieważ nie analizowałem kodu i pewnie Ty będziesz wiedział lepiej gdzie to już wstawić. |
|
Pito Temat założony przez niniejszego użytkownika |
» 2008-01-28 10:10:03 Nie działa napis Przycisk wciśnięty nie wyświetla się ale jak napisze nowy program to działa:\ |
|
DejaVu |
» 2008-01-28 11:10:26 Podany przykład nie może nie działać chyba, że masz biblioteki w swoim środowisku niesprawne (conio.h). |
|
Pito Temat założony przez niniejszego użytkownika |
» 2008-01-28 16:50:14 Już wiem co jest problemem:) Po prostu w bibliotece winbgim jest komenda getch tak powiedziała wykładowczyni z podstaw programowania i teraz korzystam z komendy geche() która równiesz znajduje się w conio.h i działa. A jak by kto pytał to programy mi nie zaliczyła bo chce żeby tablice wyświetlało w graficznym trybie:/ jak ktoś zna dobry opis winbgim to bardzo bym prosił o linka(chodzi mi o kurs a nie tylko specyfikacje) |
|
DejaVu |
winbgim.h » 2008-01-28 20:28:55 [tutorial] Na stronie http://4programmers.net/C/FAQ/WinBgim napisane jest: [tutorial]WinBgimJest to biblioteka dla Windows stworzona na podstawie Borlandowskiego graphics.h. Zawiera ona wszystkie funkcje, które były dostępne w starej bibliotece oraz zawiera nowe, specjalnie przygotowane funkcje dla Windows. Oferuje ona również funkcje do obsługi myszy - stąd wzięła się nazwa: WINdows borland BGI graphics and Mouse.[/tutorial] |
Mówiąc prościej: jeśli szukasz kursu do winbgim.h, poszukaj kursu graphics.h, ponieważ funkcje w winbgim.h są wzorowane na graphics.h. [/tutorial] |
|
« 1 » |