Hej, mój kod w Code Bloksie działa zgodnie z wymogami zadania, ale w Spoju wyskakuje błąd kompilacji - dotyczy to biblioteki conio.h i funkcji getch (). Czym mogę zamienić funkcję getch(), tak aby po wpisaniu liczby także nie pokazywała się ona na ekranie??
include
include
using namespace std;
char dane[10];
int rozmiar=0;
void push()
{
if (rozmiar>=10)
{
dane[rozmiar]=getch();
cout<<":("<<endl;
}
else
{dane[rozmiar]=getch();
rozmiar++;
cout<<":)"<<endl;}
}
void pop()
{
if(rozmiar>0)
{rozmiar--;
cout<<dane[rozmiar]<<endl;}
else cout <<":("<<endl;
}
int main()
{
char wybor;
while(true)
{
wybor=getch();
if (wybor == '-') pop ();
else if (wybor == '+') push();
else cout<<":("<<endl;
}
return 0;
}
Witam , mógłby ktoś zerknąć na ten kod oraz wskazać mi co jest nie tak z tym kodem ?
#include
using namespace std;
int rozmiar;
int dane;
double *tab = new double [dane];
void push()
{
cin >> tab[rozmiar];
rozmiar = rozmiar +1;
cout<<":)"<<endl;
}
void pop()
{ if(rozmiar>=1)
{
cout<<tab[rozmiar]<<endl;
rozmiar = rozmiar - 1;
}
else
{
cout<<":("<<endl;
}
}
int main()
{
char znak;
while(cin>>znak)
{
switch(znak)
{
case '+' : push(); break;
case '-' : pop (); break;
}
}
return 0;
}
po pierwsze nie kompiluje się, zapewne na skutek złego wklejenia kodu - wskazane jest przekazywanie kodu poprzez link do ideone.com15 z jednoczesnym wstawieniem tam danych przykładowych
po drugie (po doprowadzeniu do kompilacji) i wstawieniu danych przykładowych nie daje poprawnego wyniku (dziwne, że w ogóle daje jakiś wynik)
a generalnie, to program nie realizuje tego, co podano w zadaniu - przeczytaj uważnie treść zadania
#include <iostream>
using namespace std;
int main()
{
int stos[10], ile=0,w=1;
string znak;
while(cin>>znak)
{
if(znak=="+")
{
if(w!=2)
{
if(w==3)ile++;
w=4;
cin>>stos[ile];
cout<<":)"<<endl;
ile++;
}
else cout<<":("<<endl;
if(ile>9)
{
w=2;
ile--;
}
}
else
{
if(znak=="-")
{
if(w!=1)
{
if(w==4)ile--;
w=3;
cout<<stos[ile]<<endl;
stos[ile]=NULL;
ile--;
}
else
{
cout<<":("<<endl;
}
if(ile<0)
{
w=1;
ile++;
}
}
else
{
cout<<":("<<endl;
}
}
}
return 0;
}
Witam
Mam pewien problem z zadaniem STOS. Po pewnych modyfikacjach przed ktorymi mialem problem z przekroczonym limitem czasu wyskoczyl mi komunikat o blednym programie.Natomiast szczerze mowiac analizujac go kilka razy nie moge za bardzo znalezc bledu.Liczylbym na jakas wskazowke.Nie szukam gotowego rozwiazania ale podpowiedzi
Mam nadzieje ze dobrze wrzucilem kod
Cześć, a co w przypadku, kiedy piszę np. w języku C#, gdzie funkcja “ReadLine” nie zwraca, ani true ani false, więc jak zrobić inaczej pętlę jak nieskończoną, wydaje mi się, że wszystko robię dobrze, tylko błąd leży w przystosowaniu tego zadania do różnych języków
– edit
Dobra troszeczkę za wcześnie zapytałem, w C# po prostu nie można deklarować nowych zmiennych w while, ale można zastosować bez obaw następującą konstrukcję: while((zmienna = Console.ReadLine()) != null)
Może komuś się przyda!
Cześć,
Od 1,5 tygodnia próbuję skrobać w c++. Ostatnim zadaniem z jakim próbuję się zmierzyć to stos. Niby kod działa, poprawnie wyrzuca a sędzia jednak informuje o przekroczonym czasie. Próbuję na różne sposoby, ale efekt jest taki sam. Co robię nie tak? Z góry dziękuję za pomoc.
Wytłumacz mi proszę w takim razie bo nie rozumiem. Mam że jeśli znak + to wybór 1, jeśli - minus to wybór 2. Jeśli cokolwiek innego to wybór 3. Pętla działa do momentu kiedy wybór jest <3. To nie jest poprawne zakończenie pętli?
Ps. Zadziałało dodanie linii while(cin>>znak). Natomiast wciąż nie rozumiem dlaczego tamto nie działało. Co więcej, teraz kiedy podam pusty string, albo inny znak program działa dalej. Dlaczego więc jest poprawnym rozwiązaniem?
zakończenie jest poprawne, niepoprawne jest twoje założenie, że tym znakiem będzie coś innego niż ‘+’ lub '-'
efekt wiadomy
zmienna znak nie zostanie zmieniona, jeżeli dane w strumieniu wejściowym się skończą
czyli dla danych:
+ 1
-
program nigdy się nie skończy (a przynajmniej do momentu, gdy zostanie przerwany z zewnątrz)
skończył by się np. dla:
+1
-
*
ale w zadaniu nie ma, że na zakończenie jest jakiś nie biały znak
więc powinieneś uzupełnić swoje informacje o strumieniach wejściowych (o wyjściowych pewnie też)