• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Samododawanie się losowej liczby do wyniku

Object Storage Arubacloud
0 głosów
160 wizyt
pytanie zadane 26 października 2016 w C i C++ przez neWWbie Początkujący (410 p.)
edycja 26 października 2016 przez neWWbie
#include <iostream>
#include <stdio.h>

using namespace std;

int wyjscie, tunel;
int stopien;
int alarm(int w);
char odp;

int main()
{
pocz_alarmu:
cout<<"Czy wywolac alarm? t/n\n";
cin>>odp;
if (odp='t','T')

{
    cout<<"UWAGA ALARM\n"<<"************************************************\n"<<"Ktorego stopnia? ";
    cin>> stopien;
 //   alarm(stopien);

    switch (stopien)
        {
        case 1:
        wyjscie=5;
        tunel=7; //tutaj dodaje do 7 liczbe 6295968

            cout<<alarm(stopien);
        break;

        case 2:
            wyjscie=10;
            tunel=5; //tutaj dodaje do 5 liczbe 6295968
            cout<<alarm(stopien);
        break;

        default:
        cout<<"Nie ma takiego stopnia!";
        break;

        }}
else if(odp=='n','N')
{
cout<<"Przeciez wszystko jest w porzadku";
}

else
{

goto pocz_alarmu;
}
    return 0;
}

int alarm(int w)            //Funkcja podmienia numery wyjscia i tunelu w zaleznosci od stopnia alarmu
{
cout<<"Prosze kierowac sie wyjsciem nr."<<wyjscie<<" Tunelem nr."<<tunel;
}

Dlaczego dodaje mi te liczby przy kompilacji programu, i czy da się ogólnie zrobić coś żeby to wszystko ładnie wyglądało?

2 odpowiedzi

+2 głosów
odpowiedź 26 października 2016 przez egoon Obywatel (1,360 p.)
wybrane 26 października 2016 przez neWWbie
 
Najlepsza

Hmmm... A to Ci w ogóle działa? Choćby funkcja 'alarm' powinna zwracać wartość (return).

A to:

cout<<alarm(stopień);

jakim cudem działa? Wywalić cout, to może pójdzie...

Poza tym, czemu 'goto'? Nie lepiej wewalić wszystko w np. 'while'? Ja tam nie wiem, ale użycie goto to jakby prośba o kłopoty i niewygody. Daaaawno temu, w Basicu na C64 to owszem, ale tu jakoś niezbyt pasuje.

Wybacz, że się czepiam, jakby co to zignorujwink

komentarz 26 października 2016 przez neWWbie Początkujący (410 p.)
edycja 26 października 2016 przez neWWbie
Faktycznie, teraz działa.

Poza tym z racji tego że jestem początkujący, każda rada mile widziana :)

I mógłbyś napisać jak wstawił być w to w while?
komentarz 26 października 2016 przez egoon Obywatel (1,360 p.)

Dobra, na szybkiego takie coś, powinno działać. Wiem, niejeden powie, że można inaczej, lepiej, wydajniej - normalne, jasne, że można. Ale jak na teraz zrobiłem tak, grunt, że działawink

#include <iostream>
#include <string>

using namespace std;

void alarm(int, int);

int main()
{
	int wyjscie{}, tunel{}, stopien{};
	string odp;

	do
	{
		cout << "Czy wywolac alarm? t/n, q - wyjscie" << endl;
		cin >> odp;
		if (odp == "t" || odp == "T")
		{
			cout << "UWAGA ALARM\n" << "************************************************\n" << "Ktorego stopnia? ";
			cin >> stopien;
			
			switch (stopien)
			{
			case 1:
				wyjscie = 5;
				tunel = 7; 
				alarm(stopien, tunel);
				break;
			case 2:
				wyjscie = 10;
				tunel = 5; 
				alarm(stopien, tunel);
				break;

			default:
				cout << "Nie ma takiego stopnia!";
				break;
			}
		}
		else if (odp == "n" || odp == "N")
		{
			cout << "Przeciez wszystko jest w porzadku" << endl;
			break;
		}
	} while (odp != "q");
	
	cin.get();
	cin.get();
}

void alarm(int w, int t)            
{
	cout << "Prosze kierowac sie wyjsciem nr." << w << " Tunelem nr." << t << endl;
}

Takie drobne uwagi:

  • jeśli to nie jest absolutnie konieczne, nie twórz zmiennych globalnych (przed rozpoczęciem 'main');
  • do funkcji można przekazać różną ilość i typ parametrów;
  • stringa użyłem z przyzwyczajenia, jakoś to lubię :-)
  • jeśli funkcja ma coś zwracać, wywołanie powinno być mniej więcej takie:
int costam = funkcja();
.
.
.
int funkcja()
{
........tu treść funkcji.....
return jakastam_zmienna;
}

 

0 głosów
odpowiedź 26 października 2016 przez egoon Obywatel (1,360 p.)

Dalej:

if (odp = 't', 'T')

to na pewno działa?

Może lepiej tak:

if (odp =='t'||odp=='T')

Pojedynczy znak = to przypisanie, nie porównanie...

Podobne pytania

0 głosów
1 odpowiedź 397 wizyt
pytanie zadane 14 października 2017 w Java przez MartinPLPL Początkujący (310 p.)
0 głosów
1 odpowiedź 498 wizyt
0 głosów
1 odpowiedź 69 wizyt
pytanie zadane 26 czerwca 2020 w Python przez BezBarwny Użytkownik (700 p.)

92,568 zapytań

141,424 odpowiedzi

319,634 komentarzy

61,956 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!

...