Serwis został przeniesiony pod nową domenę: http://cpp0x.pl/
PowrótPowrótHistoria odwiedzonych stron
AutorWiadomość
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 problememwesoły
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:

WinBgim

Jest 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.

1



Statystyki tematuOstatnio przeczytali
Czytało użytkowników:14malan, 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



PowrótPowrótHistoria odwiedzonych stron
Panel Logowania
Login:
Hasło:

Użytkowników
Obecnie aktywnych:13
Zalogowanych:0
Zarejestrowanych:4367
Ostatnie 24h:539
Non-cookie 24h:2688
Wszystkich:214122
Ostatnia Aktualizacja
2010-09-01 19:27:34 (4 dni temu)
Ostatnio aktywni
wiew33 min
Koni44 min
Mateusz12447 min
fish1373 min
wiewiorka87 min
lenrokskate8 godz
dmx8111 godz
steckel11 godz
pixelmaster15 godz
maciejo15 godz
jurasnumeras15 godz
Imperator_Edi16 godz

Wynajem Sopot - wakacje
Pokój 2 osobowy 130zł/doba;
Lokalizacja: Sopot


O portaluArchiwumHistoriaIndeksRegulaminWyszukiwarkaLinki
Kurs HTML - strona WWW za darmoRestauracja "ATOL" - SopotValid HTML 4.01 TransitionalValid CSS!HTML CSS JavaScript FLASH PHP MySQL