mozna po "cin" ustawic wartosc domyslna?

0

jest jakas komenda ktora po cin wczyta mi enter?
podam na przykladzie potegi:
wczytuje podstawe potegi i drugi raz wczytuje wykladnik, i chcialbym zrobic tak ze jak za drogim razem nic nie wczytam -tylko nacisne enter- i zeby mi przyjelo do kwadratu

 int potega, wykladnik,wynik=1;

cin>>potega;
cin>>wykladnik;            //w tym miejscu chcialbym zrobic takie cos ze nic nie podam
                                 //tylko nacisne enter to wykladnik przyjmnie mi wartos 2

for(int i=0;i<wykladnik;i++)
{wynik=wynik*potega;
}

cout<<potega<<"^"<<wykladnik<<"="<<wynik;
 

jest taka koenda ktora wczytuje enter albo jakas metoda inna ktora tak zadziala?

0

Nie, ale wystarczy zrobić własny cin (latwe)

0
if(!(cin>>wylkladnik)) wykladnik = 2;

Chyba zadziała.

0

chyba nie o to mi chodzilo..
po cin chcialbym nic nie wpisywac, tylko nacisne enter i zeby mi wczytalo jakas wartos domyslna..
w tym przypadku 2..

0

poczytaj o wskażnikach domiemanych gdzieś w symfoni C++ standard była mowa o czymś takim jak domniemanie

0

czytaj getline'm do stringa, jeślo pusty, podstaw 2, jeśli nie, to skonwertuj do liczby

0

ale jak po cin nacisne enter to tylko kursor przechodzi do nowej lini i tak ciagle az podam jakas wartosc.. a chodzi mi o to ze nic nie podaje tylko wale enter i liczy mi do kwadratu..
wartoscia domniemana raczej nie mozna tak zrobic a getline nie wiem jak..
trzeba wczytac bialy znak(enter) i nie mam pojecia jak.. nie ma jakiejs komendy na to?

albo jakas wartossc ktora odpowiada "eterowi", "niczemu" badz "bialemu znaku" czy cos podobnemu..

 
  if(cin>>wykladnik==   //"enter"  )      //jest cos co odpowiada enterowi?
   wykladnik = 2 ; 
 
0

Nie da rady z cin'em. Zrób własny cin(na np. getch())

0

nie wiem o co chodzi,
moglbys prosic o kod?

0

Trochę długo by się robiło tą funkcję cin, a rozumiem, że niezbyt umiesz klasy więc ci nie przedstawie :/. Ale chodzi o to:
int Cin(int Domyslne = -199)

  • Ustawiasz pozycję kursora.
  • Robisz tablicę z pokazywanymi elementami i jeśli Domyslne != -199, wypelniasz go domyślnymi cyframi.
  • W tablicy ustawiasz kursor
  • Pętla:
    - Pobierasz znak:
    - Jeśli to \n, zatrzymujesz pętle.
    - Jeśli to inny znak niż cyfra, a to nie strzałki ani backspace, zatrzymujesz pętle.
    - Jeśli to są strzałki, zmieniasz pozycję kursora i pozycję jego w tablicy.
    - Jeśli to jest backspace, kasujesz znak przed kursorem i wszystko od kursora łącznie przesuwasz w lewo.
    - Jeśli to cyfra, wszystko, od kursora łącznie przesuwasz w prawo, w wolne miejsce dajesz cyfrę.
    - Kasujesz to co na ekranie.
    - Wyświetlasz tablicę
  • Koniec pętli.
  • Kasujesz kursor i przerwę po nim.
  • Tablicę zmieniasz z atoi na int'a.
  • Zwracasz tablicę.
    Koniec funkcji.
    Wywoływałbyś ją tak: int Zmienna_Do_Wczytania = Cin(Domyslna_wartosc);
    PS. Wersja z getlinem mniej skomplikowana.
0

a wersja z getline jakby wygladala?

0

utworzyc klase i takie podstawy to chyba umiem..
komende getline tez kojarze..
tylko ciekawi mnie jak to zrobic zeby po enterze wczytywalo mi jakas wartosc.
a nie bardzo umiem to polaczyc z tymi metodami..

0

getch() wczytuje znak - czy znak strzałki(specjalny), czy enter(też specjalny), czy spacje, czy F.

0

mam takie cos

    double  potega, wykladnik;
    cout << "Podaj liczbe: ";
    cin >>potega;
    cout << "podaj wykladnik: ";
   
      char znak=getch();

if( znak==' ')                 //jesli spacja to wykladnik=2
  {wykladnik=2;
} else{
wykladnik=znak;            // konwersja z char na int (jak?)
}
   
    cout<<potega<<"^"<<wykladnik<<"="<<pow(potega,wykladnik)<<endl;
 

ale wczytuje spacje:( a jak jest "enter"?
i jak zamienic char na int?

0
int potega, wykladnik,wynik=1;
string s;
istringstream iss;
 
cin>>potega;
//cin>>wykladnik;            //w tym miejscu chcialbym zrobic takie cos ze nic nie podam
                                 //tylko nacisne enter to wykladnik przyjmnie mi wartos 2
getline(cin,s) ;
if(s=="")
    wykladnik=2;
else
{
    iss.str(s);
    iss>>wykladnik;
}
 
for(int i=0;i<wykladnik;i++)
{wynik=wynik*potega;
}
 
cout<<potega<<"^"<<wykladnik<<"="<<wynik;
0

rafal_ dzieki, o to chodzilo..
ale jest maly blad, moze ktos mi powiedziec dlaczego wszystko dobrze liczy oprocz poteg podzielnych przez 5?
przyklad:
5^2=24
5^3=124
10^2=99
15^2=224
wszystkie inne liczy dobrze ale te zmniejsza o 1.. dlaczego?

0

Nie wiem, czemu ci działa potęgowanie przez inne niż 2, gdyż nie da się innego wczytać. Daj przed getlinem cin.ignore();. Po dodaniu sprawdziłem, i mi wszystko dobrze liczy.(Testowane na MinGW z Code::Blocks, jakże też na MinGW z Dev-C++)

0

pisze w dev c++
i nadal mi nie dzialaja liczby podzielne przez 5.. tak jak pisalem wyzej:
10^4=9999
15^2=224
40^2=1599

itd......

     int potega, wykladnik,wynik=1;
string s;
istringstream iss;

cout<<"podaj potege i po spacji wykladnik (enter po potedze liczy ^2)\n"; 
cin>>potega;

cin.ignore();
getline(cin,s) ;           //cin>>wykladnik; 
if(s=="")
    wykladnik=2;
else
{
    iss.str(s);
    iss>>wykladnik;
}
 

  wynik=pow(potega, wykladnik);
 
cout<<potega<<"^"<<wykladnik<<"="<<wynik;
0

U mnie normalnie działa. Może zmień IDE?

1 użytkowników online, w tym zalogowanych: 0, gości: 1