Co zrobiłem nie tak? do while i switch + system

0

Witam! Nie mogę skompilować:

#include <iostream.h>
#include <stdlib.h>

int x;
int main()
{
do {
cout << "Podglad plikow DATA programu KAMIL skonfigurowany do wersji 1.2 (wersja w ktorej podlad zostal wprowadzony po raz pierwszy)";
cout << "\n Autor: Qdzon San \n \n";
cout << "Wybierz liczbe: \n \n";
cout << "1 - BASEDATA - podstawowe informacje o kamilu \n";
cout << "2 - DATA001 - ruchy myszka \n";
cout << "3 - DATA002 - pisanie na klawiaturze \n";
cout << "4 - DATA003 - mowienie \n";
cout << "5 - DATA004 - jedzenie (rozroznianie pokarmow) \n";
cout << "6 - Zakoncz \n";
cout << "... Teraz wprowadz liczbe: "; cin >> x;

switch (x) {
       case 1: system("notepad.exe BASEDATA"); break;
       case 2: system("notepad.exe DATA001"); break;
       case 3: system("notepad.exe DATA002"); break;
       case 4: system("notepad.exe DATA003"); break;
       case 5: system("notepad.exe DATA004"); break;
       default: cout << "Miales wybrac miedzy 1-6!! Wszystko popsules geniuszu";
} while (x==6);

system("PAUSE");
return: 0;
}

I za chiny nie umiem dociec co robię źle. Wiem, że nie powinno się używać system("start nazwa"); ale ja nie umiałem innego łatwego rozwiązania zrobić. Jak używałem w całym pliku samego system("start .."); to mi działało. Dodałem parę elementów, pętlę do while i już nic nie działa

0

Zapomniałeś zamknąć blok switch.

Edit: jak wpiszę szóstkę, to też otrzymam komunikat:
Miales wybrac miedzy 1-6!! Wszystko popsules geniuszu

Edit2: trzymaj się konsekwentnie stylu:

int main()
{
switch (x) {
  1. W pierwszym przykładzie znacznik otwierający masz w drugiej linii, w drugim przykładzie - w tej linii, co switch.
  2. W pierwszym przykładzie nawiasy są zaraz za identyfikatorem, w drugim przykładzie dzieli je spacja.
    To trochę zmniejsza czytelność programu.
0

Raczej zapomniał zamknąć do :) W każdym razie brakuje tam '}'
Do tego po return wywal dwukropek.

0

Dobra działa. Ale to jak mam zrobić:

Wyświetla jakieś informacje. Następnie są pola do wyboru. I jak wpisze np. 1 to mu otworzy plik i z powrotem odtworzy cały program od początku? aha i żeby opcja 6 była zakoncz. to znaczy że wpisze 6 i mu już nie powtórzy nic tylko wyjdzie z programu (bądź wyświetli Aby kontynuować naciśnij dowolny klawisz)

0
do {
//cośtam
} while(x != 6);
0

OK nie do końca działa bo bez końca mi uruchamia plik. TZN. wciskam np. 1 i uruchamia plik. No to wyłączam go. Ale znów go uruchamia! i tak aż się nie wyłączy programu na "X".

Na dodatek wcale nie wyświetla z powrotem całego programu. Ale może jak naprawi się problem wyżej to zadziała...

zresztą jak to ma działać skoro pętla jest do czasu aż x NIE BĘDZIE równe 6? A ono nie będzie równe cały czas i co? Teraz to znów działa tylko opcja zakończ w tym wypadku

0

Ad 2. Łyk angielskiego:

do{    //rób
       //instrukcje
}while(warunek);  //dopóki "warunek = TRUE" (jest spełniony)

Ad 1. Nie wiem, co ci nie działa...

#include <iostream>
#include <stdlib.h>

using namespace std;

int x;
int main(){
do{
cout << "Podglad plikow DATA programu KAMIL skonfigurowany do wersji 1.2 (wersja w ktorej podlad zostal wprowadzony po raz pierwszy)";
cout << "\n Autor: Qdzon San \n \n";
cout << "Wybierz liczbe: \n \n";
cout << "1 - BASEDATA - podstawowe informacje o kamilu \n";
cout << "2 - DATA001 - ruchy myszka \n";
cout << "3 - DATA002 - pisanie na klawiaturze \n";
cout << "4 - DATA003 - mowienie \n";
cout << "5 - DATA004 - jedzenie (rozroznianie pokarmow) \n";
cout << "6 - Zakoncz \n";
cout << "... Teraz wprowadz liczbe: "; cin >> x;

switch(x){
	   case 1: system("notepad.exe C:\\A\\BASEDATA"); break;
       case 2: system("notepad.exe C:\\A\\DATA001"); break;
       case 3: system("notepad.exe C:\\A\\DATA002"); break;
       case 4: system("notepad.exe C:\\A\\DATA003"); break;
       case 5: system("notepad.exe C:\\A\\DATA004"); break;
	   case 6: break;
       default: cout << "Miales wybrac miedzy 1-6!! Wszystko popsules geniuszu\n";
}
} while(x!=6);

system("PAUSE");
return 0;
}

(zapisałem pliki w lokalizacji C:\A[plik]).

0

A no. kiedy skopiowałem zywcem twoje to mi też działa. Dzięki

Ale dlaczego jak przeniosę "do {" żeby było po "cin >> x;" to mi znów się bez końca plik otwiera? Jak zrobić, żeby powtarzało tylko 1 - BASEDATA, 2 - DATA001 itd... ?

0

Zauważ różnicę:

do{
  cin >> x;

  switch(x){
    // ...
  }
} while(x!=6);

Będzie wykonywany cały blok (czytanie x-a i switch), dopóki x będzie różne od 6. Gdy wrzucisz blok "do" za wczytywanie liczby:

cin >> x;
do{
  switch(x){
    // ...
  }
} while(x!=6);

Wprowadzisz np. x=4. Przejdzie ci przez cały blok do-while i wróci do polecenia "do" (wciąż jest x=4). Nie ma możliwości zmiany x-a na szóstkę (bo wczytywanie liczby jest poza pętlą) i program wpada w nieskończoną pętlę.

0

Aha.... no ja mam z tym rozumowaniem trochę problemów :D Poza tym gorąco jak w piekle i mi się myśleć nie chce :d No i wakacje a w wakacje mi się mózg wyłącza na logikę

0

Dziękuję! Dzieki wam mam program doskonały :)

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