• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed [C++][Linux] Funkcja sleep()

0 głosów
46 wizyt
pytanie zadane 15 marca w C i C++ przez Karol_Tesla Bywalec (2,700 p.)
zamknięte 15 marca przez Karol_Tesla

Witam,

Próbuję użyć funkcji sleep() na Linux.

Problem polega na tym, że najpierw wypisuję tekst, potem używam sleep'a, a program najpierw czeka i potem wypisuje wszystko na raz. Chciałbym zrobić taki mini loading kropek w sensie:

"Twoja odpowiedz jest (1s) .  (1s) . (1s) . Poprawna!"

A kompilator wykonuje coś takiego: (3s) Twoja odpowiedz jest...Poprawna!;

 

Legenda:

(xs) oznacza x sekund wstrzymania programu.

Dołączam pełen kod:

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <unistd.h>
#include <algorithm>


std::string temat, nick;
std::string tresc[5];
std::string odpA[5],odpB[5],odpC[5],odpD[5];
std::string poprawna[5];

int main()
{
  std::string linia{};
  int nr_linii{1};
  int nr_pytania{};
  
  int punkty{};
  std::string odpowiedz[5];
  
      std::fstream file;
      file.open("abc.txt", std::ios::in);
      if(file.good() == false) {std::cout << "Access denied!"; exit(0);}
      
      while(getline(file,linia))
      {
        switch(nr_linii)
        {
          case 1: temat                = linia;break;
          case 2: nick                 = linia;break;
          case 3: tresc[nr_pytania]    = linia;break;
          case 4: odpA[nr_pytania]     = linia;break;
          case 5: odpB[nr_pytania]     = linia;break;
          case 6: odpC[nr_pytania]     = linia;break;
          case 7: odpD[nr_pytania]     = linia;break;
          case 8: poprawna[nr_pytania] = linia;break;
        }
        if(nr_linii == 8)
        {
          nr_linii = 2;
          nr_pytania++;
        }
        
        nr_linii++;
      }
      
      file.close();
      
      
      for(int i{}; i<5; i++)
      {
        std::cout << '\n' << tresc[i];
        std::cout << '\n' << "A) " << odpA[i];
        std::cout << '\n' << "B) " <<odpB[i];
        std::cout << '\n' << "C) " <<odpC[i];
        std::cout << '\n' << "D) " <<odpD[i];
        std::cout << '\n' << "\nTwoja odpowiedz: ";
        std::cin >> odpowiedz[i];
        
        std::cout << "\nTwoja odpowiedz jest";
        
        
        sleep(1); std::cout << "."; 
        sleep(1); std::cout << "."; 
        sleep(1); std::cout << "."; 
      
          
          std::transform(odpowiedz[i].begin(), odpowiedz[i].end(), odpowiedz[i].begin(), ::tolower);
        if(odpowiedz[i] == poprawna[i])
        {
          std::cout << " Poprawna!\n\n";
          punkty++;
        }
        else std::cout << " Niepoprawna!\n\n";
        
      }


      std::cout << "\nKoniec quizu! Zdobyte punkty: " << punkty;




  std::cin.ignore();
  getchar();
  return 0;
}

Plik .txt:

Programowanie w C++
XYZ
Typ zmiennych o nazwie float przechowuje:
liczby calkowite
napisy
liczby zmiennoprzecinkowe
pojedyncze znaki
c
Wstrzymanie wykonania programu na czas 2 sekund uzyskasz instrukcja:
Wait(2000)
Stop(2000)
Delay(2000)
Sleep(2000)
d
Ktora deklaracja jest zapisana poprawnie?
int x;
integer x;
x:integer;
x=integer;
a
Z jakiego przedzialu zostanie wylosowana liczba: rand()%10+2
0..9
2..9
2..11
0..11
c
Ile razy wykona sie petla: for (int i=4; i>=-2; i--)
ani razu
nieskonczenie wiele razy
6
7
d

(Dałem txt w bloczku na kod)

Kombinowałem coś z std::cin.ignore() po funkcji sleep(), ale program wymaga wciśnięcie klawisza + enter (czego bym nie chciał)

Czy ktoś wie, jak rozwikłać ten problem?

 

Z góry dziękuję.

komentarz zamknięcia: Problem solved

1 odpowiedź

0 głosów
odpowiedź 15 marca przez Karol_Tesla Bywalec (2,700 p.)

[SOLVED]

Przeglądarka forumowa nie pokazała mi wcześniej takiego pytania. Jeśli ktoś będzie zmagał się w z tym problemem to odpowiedź znajdzie w tym poście: https://forum.pasja-informatyki.pl/194588/funkcja-sleep-linux

Podobne pytania

0 głosów
2 odpowiedzi 790 wizyt
pytanie zadane 7 listopada 2016 w C i C++ przez Undisputed Bywalec (2,610 p.)
0 głosów
1 odpowiedź 125 wizyt
0 głosów
1 odpowiedź 1,007 wizyt
pytanie zadane 10 września 2016 w C i C++ przez BinaryMan Stary wyjadacz (12,530 p.)
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.IRC

62,306 zapytań

108,432 odpowiedzi

226,358 komentarzy

35,030 pasjonatów

Przeglądających: 138
Pasjonatów: 0 Gości: 138

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...