Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ problem


Rekomendowane odpowiedzi

Opublikowano

Dzień dobry

 

Ktoś wie w jakim miejscu tego programu 

#include <iostream>
#include <windows.h>
#include <iomanip>
#include <conio.h>

using namespace std;

void err()
{
    cout<<"Wybierz mniejsza liczbe"<<endl;
}

long double liczby[100000];
int n;

int main()
{
    for(;
    {
    cout<<"Ile poteg liczby 2 wyznaczyc?"<<endl;
    cin>>n;
    system("cls");

liczby[0]=1;
liczby[1]=2;

if (n<=100000)
{

    for (int i=2; i<n; i++)
    {
        liczby[i]=liczby[i-1]*2;
    }

cout<<setprecision(10000);

cout<<"Potegi liczby 2 to:"<<endl<<endl;
    for (int i=0; i<n; i++)
    {

        cout<<liczby[i]<<endl;
    }
    getch();
    system("cls");
}

else
    err();

}
    return 0;
}

wstawić

else
    err();

tak żeby nie migało tym tekstem po wpisaniu liczby większej niż 100000 tylko wyświetliło go raz? Próbowałem to wstawiać w różne miejsca i cały czas jest źle.

Opublikowano

Jeśli wpiszesz liczbę tak dużą, aby nie zmieściła się w typie int(lub jakimkolwiek innym, do którego zechcesz wczytać) to dzieje się pewna rzecz. Mianowicie std::cin wie o tym że coś się stało i odmawia współpracy. Przy próbie pobrania czegoś z zepsutego strumienia, std::cin nic nie robi z podaną zmienną i kończy wczytywania. W ten sposób liczba pozostaje taka sama i program działa dalej, czyli na jego tok działania zapętla się tak:

  • Wyświetlenie komunikatów
  • Wyczyszczenie konsoli

I dlatego ekran miga. else err(); jest w dobrym miejscu(zresztą nie ma innego poprawnego), ale musisz wyczyścić flagi błędów aby std::cin zaczął działać poprawnie. Po prostu dopisz w funkcji err():

std::cin.clear();
std::cin.sync();

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...