Data: 2008-01-27 17:33:18
Pito | [Bulider6, C++] Nie działa funkcja 'getch'
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(); // <= jak tego niema to działa
while (znak!=27) {
cout<<"podaj przedzial<a,b>"<<endl;
do { gotoxy(3,5); clreol(); //czysci linie
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() {
/*układ*/
initwindow(600,600); line(300,0,300,600); line(0,300,600,300);
/*skalowanie*/
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); }
/*rysowanie*/
int n=100; moveto(300,300); for(int i=0;i<n;i++) { if(tab[i]!=NULL) {
//lineto(300+(tab[i]*10),300+i*10); putpixel(300+(tab[i]*10),300-(tab[i]*10),4); } }
while(!kbhit()); closegraph(); }
| Data: 2008-01-27 18:45:04
Piotr Szawdyński | Błąd w kodzie
W programie masz taki zapis:
char znak; znak=getch(); while(znak!=27) { //... tu jakiś kod }
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) { //... tu jakiś kod }
/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ć.
| Data: 2008-01-28 10:10:03
Pito |
Nie działa napis Przycisk wciśnięty nie wyświetla się ale jak napisze nowy program to działa: | Data: 2008-01-28 11:10:26
Piotr Szawdyński |
Podany przykład nie może nie działać chyba, że masz biblioteki w swoim środowisku niesprawne (conio.h). | Data: 2008-01-28 16:50:14
Pito |
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) | Data: 2008-01-28 20:28:55
Piotr Szawdyński | winbgim.h
#include "winbgim.h"
Na stronie http://4programmers.net/C/FAQ/WinBgim napisane jest: 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. 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. | |
| Statystyki tematu | Ostatnio przeczytali |
|---|
| Czytało użytkowników: | 14 | malan, pixelmaster, kampar, Piotr Szawdyński, Dante, pekfos, Pietrzuch, DeBugger, Pito, seba11147, stiopka64, istvant, maiqa, Telm | | Przeczytało użytkowników: | 14 | | Czytało osób ogólnie: | 35 | | Przeczytało osób ogólnie: | 35 |
| Ostatnia Aktualizacja| 2010-09-01 19:27:34 (4 dni temu) | |
| Ostatnio aktywni |
|---|
| wiew | 33 min | | Koni | 44 min | | Mateusz124 | 47 min | | fish13 | 73 min | | wiewiorka | 87 min | | lenrokskate | 8 godz | | dmx81 | 11 godz | | steckel | 11 godz | | pixelmaster | 15 godz | | maciejo | 15 godz | | jurasnumeras | 15 godz | | Imperator_Edi | 16 godz |
|