• 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
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

62,306 zapytań

108,432 odpowiedzi

226,358 komentarzy

35,030 pasjonatów

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

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.

...