Przerwanie wpisywania/wypisywania liczb w Tabeli/Tablicy.

0

Witam,

Napisałem program który wpisuje do tablicy losowo 1 lub 2. Jeżeli ma po prostu uzupełnić tablice tymi liczbami to jest ok i działa, ale gdy chce przerwać po wylosowaniu np.1 to jest błąd ale nie w kompilacji bo program się kompiluje, tylko w postaci liczb niewiadomego pochodzenia w oknie konsoli.

Program ma wyrażać chłopca który w drodze do szkoły mija cztery Kioski. Przed każdym z kiosków rzuca monetą, i jeśli wypadnie reszka(np.1) to wchodzi do tego kiosku a jeśli orzeł(np.2) to idzie dalej i przy następnym kiosku znów rzuca monterką i tak do 4 kiosku(jeśli dojdzie do niego to juz nie rzuca monetą). Tak przez 10 dni. Czyli Wynikiem jest Tabela/Tablica 4x10

Próbowałem w rożnych miejscach programu wstawić:

 
 if (A[wiersze][Kolumny] =1)
         {
             break;
         }
        else
        {
            continue;
        }

albo wersje bez else i continue i wynikiem są liczby niewiadomego pochodzenia. Dodam ze wstawiałem ten warunek w momencie uzupełniania tabeli, czyli w linijce po:

A[wiersze][Kolumny] = ( rand() % 2 )+1;

PrntScr Błędu:
http://img706.imageshack.us/img706/2568/8foz.jpg

Kod programu ktory uzupelnia tabele 1 lub 2:

#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <time.h>
using namespace std;

int main()
{
  int **A, wiersze, Kolumny;
  int Ilosc_Dni =10, Ilosc_Kioskow=4;

  srand((unsigned)time(NULL));

 // tworzymy tablicę wskaźników
   A = new int * [Ilosc_Kioskow];

  // tworzymy tablice wierszy
  for(wiersze = 0; wiersze < Ilosc_Kioskow; wiersze++)
  {
    A[wiersze] = new int[Ilosc_Dni];
  }

  // wypełniamlosowymi liczbami
  for(wiersze = 0; wiersze < Ilosc_Kioskow; wiersze++)
{
    for(Kolumny = 0; Kolumny < Ilosc_Dni; Kolumny++)
    {
      A[wiersze][Kolumny] = ( rand() % 2 )+1;
      
    }
}
  // wyświetlanie
  cout << "Kioski = " << Ilosc_Kioskow << endl
       << "Dni = " << Ilosc_Dni << endl << endl
       << "Eksperyment dla " << Ilosc_Kioskow << " kioskow i " << Ilosc_Dni << " dni" << endl;

  for(wiersze = 0; wiersze < Ilosc_Kioskow; wiersze++)
  {
        for(Kolumny = 0; Kolumny < Ilosc_Dni; Kolumny++)
          cout << setw(5) << A[wiersze][Kolumny];
        cout << endl;
  }
}

Zatem... do sedna, nie wiem gdzie wstawić polecenie przerwania wpisywania/wypisywania liczb jeśli wypadnie np.1 i czy moja propozycja takiego polecenia w ogóle jest prawidłowa.

0

Wstaw wypełnienie do funkcji i po wylosowaniu 1 zrób return;
Tylko że musisz pogodzić się z tym że skoro nie wylosowałeś do komórek tabeli żadnych wartości to są tam jakieś śmieci.

0

emm... a można prosić trochę jaśniej? :)

0

Zrób funkcje, ktora wypełnia Ci tablice. Po wylosowaniu ją przerwij, czyli return;. Co do śmieci - wszystko alokowane na stosie jak "wskakuje" w jakąs komórke pamięci, to ma wartosc taką, jaka wczesniej była w tej komórce. Nie jest to domyślnie czyszczone. Jeśli wypełnisz połowe tablicy, trafisz 1 i przerwiesz wypełnianie, to drugie pol tablicy ma smieci i raczej w tym (moim zdaniem) problem, bo przerwanie wpisywania mozesz zakonczyc na milion sposobów, nie tylko return; w funkcji.
A swoją drogą:

if (A[wiersze][Kolumny] =1)

A swoją drogą 2: formatuj kod i wstawiaj w znaczniki, bo nikt raczej nie ma ochoty analizować tak napisanego kodu.

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