Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program się wyłącza

Ostatnio zmodyfikowano 2016-11-20 09:39
Autor Wiadomość
wokub
Temat założony przez niniejszego użytkownika
Program się wyłącza
» 2016-11-19 21:31:10
Wiem, to pytanie pojawiło się pewnie milion razy, jednak ja próbowałem już dużo rozwiązań i co kilka zadań jakie wykonuje, pojawia mi się problem z wyłączaniem .exe po otrzymaniu wyniku. Tym razem miałem policzyć silnię i oto mój kod:
C/C++
#include <stdio.h>
#include <iostream>

int main()
{
    int i, x, silnia = 1;
    printf( "\n Cyfra: " );
    scanf( "%d", & x );
    for( i = 1; i <= x; i++ )
         silnia = silnia * i;
   
    printf( "\n %d! = %d", x, silnia );
   
   
    return 0;
}

Próbowałem już cin.get() no ale tutaj raczej cin nie ma. Chciałbym uniknąć używania conio.h. Zostało mi więc return 0, jednak po otrzymaniu wyniku program automatycznie się wyłącza.
Czy problemem jest kod? Nie znalazłem podpowiedzi jak rozwiązać to zadanie bez używania stdio.h. Czy to ten include jest tu problemem? Szczerze mówiąc rozumiem używanie go tylko w 60% więc jest to możliwe. A i na koniec, mam nadzieję, że nie ma tu ,,spamowania tematami", jeżeli tak, to po tym temacie odpuszczę sobie tak ,,częste" (2 pytania na 2h) pytanie. Z góry dzięki za pomoc
P-153936
karambaHZP
» 2016-11-19 21:35:14
P-153937
wokub
Temat założony przez niniejszego użytkownika
» 2016-11-19 21:40:44
C/C++
#include <stdio.h>
#include <iostream>

int main()
{
    int i, x, silnia = 1;
    printf( "\n Cyfra: " );
    scanf( "%d", & x );
    for( i = 1; i <= x; i++ )
         silnia = silnia * i;
   
    printf( "\n %d! = %d", x, silnia );
   
   
    cin.sync(); //kasowanie zbędnych znaków z bufora
    cin.get(); //oczekiwanie na wciśnięcie klawisza
    return 0;
}

C/C++
#include <stdio.h>
#include <iostream>
#include <cstdio>

int main()
{
    int i, x, silnia = 1;
    printf( "\n Cyfra: " );
    scanf( "%d", & x );
    for( i = 1; i <= x; i++ )
         silnia = silnia * i;
   
    printf( "\n %d! = %d", x, silnia );
   
   
    getchar(); //oczekiwanie na wciśnięcie klawisza
    return 0;
}

C/C++
#include <stdio.h>
#include <iostream>
#include <cstdio>
#include <cstdlib>

int main()
{
    int i, x, silnia = 1;
    printf( "\n Cyfra: " );
    scanf( "%d", & x );
    for( i = 1; i <= x; i++ )
         silnia = silnia * i;
   
    printf( "\n %d! = %d", x, silnia );
   
   
    system( "pause" ); //działa tylko na windowsach!
    return 0;
}

Żaden kod nie działa. No i chciałbym uniknąć ostatniej opcji, gdyż bardzo często męczę zadania na linuxie.
P-153938
karambaHZP
» 2016-11-19 21:59:41
C/C++
#include <stdio.h>

int main()
{
    int i, x, silnia = 1;
    printf( "\n Cyfra: " );
    scanf( "%d", & x );
    for( i = 1; i <= x; i++ )
         silnia = silnia * i;
   
    printf( "\n %d! = %d", x, silnia );
   
   
    getchar(); //oczekiwanie na wciśnięcie klawisza
    return 0;
}
 Pod kontrolą Windows w C::B gcc 5.xxx działa poprawnie.
P-153941
wokub
Temat założony przez niniejszego użytkownika
» 2016-11-19 22:21:17
Chyba będę musiał przelogować się na linuxa. Z tą instalacją GNU GCC mam ciut problemów, więc pozostaje mi uwierzyć na słowo jeżeli chodzi o Windowsa. Mniejsza, dzięki za pomoc.

Aktualizacja: Działa w Code::Blocks z którego otwierana jest konsola. Nie dość, że mam zadanie, to w końcu wziąłem się do roboty jeżeli chodzi o normalny program z kompilatorem. Dzięki wielkie
P-153944
mateczek
» 2016-11-20 09:39:18
Kilka spraw.
1. Większość Ide potrafi Ci bez problemu zatrzymać program przed zamknięciem konsoli (zarówno windows jak i linux)
2. jeśli używasz c++ a nie masz wyraźnych powodów do używania stylu "C" możesz korzystać ze strumieni
C/C++
#include<iostream>
using namespace std;

int main()
{
    int x;
    unsigned long long silnia = 1;
    cout << "Cyfra: " << endl;
    cin >> x;
    cin.ignore(); //pozbywamy się znaku końca lini;
    for( int i = 1; i <= x; i++ )
         silnia = silnia * i;
   
    cout << "silnia = " << silnia << endl;
    cin.ignore(); //czekasz jescze na wcisinięcie enter;
    return 0;
}
3. Zauważ. Patrząc na program wyżej, że jeśli chcesz go odpalić dwuklikiem i aby konsola się nie zamknęła automatycznie musisz pozbyć się dwóch znaków ze strumienia. Dwie instrukcje "ignore" "getchar: czy co tam sobie wymyślisz.

4. naprawdę od bardzo dawna się nie spotkałem, żeby ktoś się męczył z instalcją GCC na linuxie. W większości dystrybucji kompilator jest zainstalowany od razu. jedynie Co musisz doinstalować to ide!!! Ja korzystam z QtCreatora. Wybór jest szeroki a instalacja sprowadza się np w ubuntu do wydania polecenia


sudo apt-get install qtcreator
//lub codebloks;
sudo apt-get install codeblocks

inne IDE, które są dostępne to codelite, netbeans, eclipse +ctd, kdevelop(dla tych co korzystają z kde), i pewnie jeszcze jakieś by się znalazły. Wiadomym jest, że do programowania ide jest pomocne. Tak samo pod windows jak i pod Linuxa.
5.
C/C++
cin.sync(); //działa tylko na windowsie. choć w zamyśle ta instrukcja nie do tego służy i pod linux nie czyści strumienia. Podobnie jak
system( "pause" ) // również to typowy windowsowy wynalazek
P-153954
« 1 »
  Strona 1 z 1