• 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()

Object Storage Arubacloud
0 głosów
2,387 wizyt
pytanie zadane 15 marca 2019 w C i C++ przez Teslum_369 Gaduła (4,190 p.)
zamknięte 15 marca 2019 przez Teslum_369

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 2019 przez Teslum_369 Gaduła (4,190 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 2,858 wizyt
pytanie zadane 7 listopada 2016 w C i C++ przez Undisputed Gaduła (3,040 p.)
0 głosów
1 odpowiedź 231 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...