[c] zatrzymanie ekranu programu?

marek12
Użytkownik
Użytkownik
Posty: 696
Rejestracja: 5 lut 2008, o 15:38
Płeć: Mężczyzna
Lokalizacja: marki
Podziękował: 165 razy
Pomógł: 20 razy

[c] zatrzymanie ekranu programu?

Post autor: marek12 »

jak zatrzymć ten program na ekranie w dev?

Kod: Zaznacz cały

#include <stdio.h>

// Prototypy funkcji uzytych w programie
float bisekcja(float, float, float);
float f(float);


int main(void)
  {
  // Program glowny
  
  float lewy,prawy,eps,wynik;

  // Wczytanie danych
  printf("Podaj lewy kraniec przedzialu,  lewy = ");
  scanf("%f", &lewy);

  printf("Podaj prawy kraniec przedzialu, prawy = ");
  scanf("%f", &prawy);

  printf("Podaj zadana dokladnosc, eps = ");
  scanf("%f", &eps);

  // Wywolanie funkcji obliczacej miejsce zerowe
  wynik = bisekcja(lewy,prawy,eps);
  printf("%f
",wynik);

  }


float bisekcja(float lewy, float prawy, float eps)
  {
  // Funkcja oblicza miejsce zerowe funkcji f metoda bisekcji

  float pierwiastek;

  if ( f(lewy)*f(prawy) < 0 ) 
    {
    pierwiastek = lewy;   // Pierwsze przyblizenie pierwiastka

    while( (prawy-lewy) >= eps )  // Liczymy do momentu osiagniecia zadanej dokladnosci
      {
      pierwiastek = (prawy + lewy) / 2.0;  // srodek przedzialu
      if ( f(lewy)*f(pierwiastek) < 0 )
        prawy = pierwiastek;
      else if ( f(pierwiastek)*f(prawy) < 0 )
        lewy = pierwiastek;
      else break;
      }
    }
  else 
    pierwiastek = -0.0;   // Nie ma pierwiastka w przedziale, zwracamy -0.0

  return(pierwiastek);
  }


float f(float x)
  {

  // Funkcja, ktorej miejsc zerowych szukamy
  return(x*x-9);

  }


arecek
Użytkownik
Użytkownik
Posty: 283
Rejestracja: 26 sty 2007, o 22:11
Płeć: Mężczyzna
Podziękował: 4 razy
Pomógł: 93 razy

[c] zatrzymanie ekranu programu?

Post autor: arecek »

Nie jestem pewien , ale

getch();

lub

while(kbhit())
getch();

powinny zadziałać.
marek12
Użytkownik
Użytkownik
Posty: 696
Rejestracja: 5 lut 2008, o 15:38
Płeć: Mężczyzna
Lokalizacja: marki
Podziękował: 165 razy
Pomógł: 20 razy

[c] zatrzymanie ekranu programu?

Post autor: marek12 »

a gdzie to mam wpisac ?
6hokage
Użytkownik
Użytkownik
Posty: 268
Rejestracja: 24 mar 2009, o 13:06
Płeć: Mężczyzna
Podziękował: 1 raz
Pomógł: 35 razy

[c] zatrzymanie ekranu programu?

Post autor: 6hokage »

Jak w main-ie wpiszesz gdziekolwie getch() to program będzie czekał aż wciśniesz jakikolwiek klawisz,
skoro chcesz zatrzymać program po wyświetleniu wyników to umieść getch() na końcu. Biblioteka w której jest definicja funkcji getch() to <conio.h>.
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

[c] zatrzymanie ekranu programu?

Post autor: matshadow »

Kod: Zaznacz cały

#include <conio.h>
int main(void)
{
      .....
      getch();
      return 0;
}
marek12
Użytkownik
Użytkownik
Posty: 696
Rejestracja: 5 lut 2008, o 15:38
Płeć: Mężczyzna
Lokalizacja: marki
Podziękował: 165 razy
Pomógł: 20 razy

[c] zatrzymanie ekranu programu?

Post autor: marek12 »

ok dzieki
jush6
Użytkownik
Użytkownik
Posty: 2
Rejestracja: 17 lis 2010, o 21:22
Płeć: Mężczyzna
Lokalizacja: WIEŚ

[c] zatrzymanie ekranu programu?

Post autor: jush6 »

Ja tak zrobiłem jak poniżej i podaję epsilon np. 0.001 to jako wynik otrzymuje same zera 00000000 program nie odpowiada dobrze Czy ktoś wie dlaczego?

Kod: Zaznacz cały

// Znajdywanie miejsc zerowych metoda bisekcji

#include <stdio.h>
#include <conio.h>
// Prototypy funkcji uzytych w programie
float bisekcja(float, float, float);
float f(float);


int main(void)
  {
  // Program glowny
  
  float lewy,prawy,eps,wynik;

  // Wczytanie danych
  printf("Podaj lewy kraniec przedzialu,  lewy = ");
  scanf("%f", &lewy);

  printf("Podaj prawy kraniec przedzialu, prawy = ");
  scanf("%f", &prawy);

  printf("Podaj zadana dokladnosc, eps = ");
  scanf("%f", &eps);

  // Wywolanie funkcji obliczacej miejsce zerowe
  wynik = bisekcja(lewy,prawy,eps);
  printf("%f
",wynik);
  getch();
  return 0;


  }


float bisekcja(float lewy, float prawy, float eps)
  {
  // Funkcja oblicza miejsce zerowe funkcji f metoda bisekcji

  float pierwiastek;

  if ( f(lewy)*f(prawy) < 0 ) 
    {
    pierwiastek = lewy;   // Pierwsze przyblizenie pierwiastka

    while( (prawy-lewy) >= eps )  // Liczymy do momentu osiagniecia zadanej dokladnosci
      {
      pierwiastek = (prawy + lewy) / 2.0;  // srodek przedzialu
      if ( f(lewy)*f(pierwiastek) < 0 )
        prawy = pierwiastek;
      else if ( f(pierwiastek)*f(prawy) < 0 )
        lewy = pierwiastek;
      else break;
      }
    }
  else 
    pierwiastek = -0.0;   // Nie ma pierwiastka w przedziale, zwracamy -0.0

  return(pierwiastek);
  }


float f(float x)
  {
  // Funkcja, ktorej miejsc zerowych szukamy
  return(x*x - 9);
  }
matshadow
Użytkownik
Użytkownik
Posty: 941
Rejestracja: 17 gru 2007, o 21:48
Płeć: Mężczyzna
Lokalizacja: Kingdom Hearts
Podziękował: 6 razy
Pomógł: 222 razy

[c] zatrzymanie ekranu programu?

Post autor: matshadow »

A jakie wpisujesz końce przedziału?
dpiotrow
Użytkownik
Użytkownik
Posty: 19
Rejestracja: 7 cze 2009, o 13:59
Płeć: Kobieta
Podziękował: 4 razy

[c] zatrzymanie ekranu programu?

Post autor: dpiotrow »

Samo wpisanie system("pause"); przed return 0 też działa.
tobix10
Użytkownik
Użytkownik
Posty: 112
Rejestracja: 6 wrz 2007, o 16:30
Płeć: Mężczyzna
Podziękował: 8 razy
Pomógł: 7 razy

[c] zatrzymanie ekranu programu?

Post autor: tobix10 »

Program konsolowy przeznaczony jest do uruchamiania w konsoli. Jeżeli włączysz najpierw cmd, przejdziesz do folderu z programem i go odpalisz to nie musisz nic pauzować, bo okno nie zniknie.

Co do drugiego, nie analizowałem kodu, ale możesz spróbować użyć zmiennych double albo long double.
ODPOWIEDZ