Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Błędne wypisywanie elementów tablicy

Ostatnio zmodyfikowano 2012-11-03 18:32
Autor Wiadomość
Rosumad
Temat założony przez niniejszego użytkownika
[C++] Błędne wypisywanie elementów tablicy
» 2012-11-03 15:16:15
Witam, mam problem w takim programie:

C/C++
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <iomanip>
#include <ctime>
#include <fstream>
#include <cstdlib>
using namespace std;

void WysPlansze( char tz[] )
{
    cout << "1    *2    *3    " << endl;
    cout << "  " << tz[ 1 ] << "  *  " << tz[ 2 ] << "  *  " << tz[ 3 ] << "  " << endl;
    cout << "     *     *     " << endl;
    cout << "*****************" << endl;
    cout << "4    *5    *6    " << endl;
    cout << "  " << tz[ 4 ] << "  *  " << tz[ 5 ] << "  *  " << tz[ 6 ] << "  " << endl;
    cout << "     *     *     " << endl;
    cout << "*****************" << endl;
    cout << "7    *8    *9    " << endl;
    cout << "  " << tz[ 8 ] << "  *  " << tz[ 8 ] << "  *  " << tz[ 9 ] << "  " << endl;
    cout << "     *     *     " << endl;
}

void WartPocz( int tab[] )
{
    int la = 9;
    for( int i = 0; i <= la; i++ )
    {
        tab[ i ] = 0;
    }
}

void Przypisywanie( int tabl[], char tabz[] )
{
    int l = 0;
   
    do
    {
        if( tabl[ l ] == 0 )
        {
            tabz[ l ] = ' ';
            l++;
        }
        else if( tabl[ l ] == 1 )
        {
            tabz[ l ] = 'O';
            l++;
        }
        else if( tabl[ l ] == 2 )
        {
            tabz[ l ] = 'X';
            l++;
        }
    } while( l <= 9 );
   
}

int KtorePole()
{
    int wybor;
    cout << " Do ktorego pola wpisac? " << endl << endl;
    cin >> wybor;
    return wybor;
}

void Wpisuje( int tl[], int wpola, char cruch )
{
    if( cruch == 'O' )
    {
        tl[ wpola ] = 1;
    }
    else if( cruch == 'X' )
    {
        tl[ wpola ] = 2;
    }
}

main()
{
    int tl[ 10 ], wpola;
    char tz[ 10 ], cruch = 'O';
    WartPocz( tl );
   
    Przypisywanie( tl, tz );
    WysPlansze( tz );
    wpola = KtorePole();
    if( cruch == 'O' )
    {
        Wpisuje( tl, wpola, cruch );
        cruch = 'X';
    }
    else if( cruch == 'X' )
    {
        Wpisuje( tl, wpola, cruch );
        cruch = 'O';
    }
    Przypisywanie( tl, tz );
    WysPlansze( tz );
   
    getch();
}

Problem pojawia sie gdy do zmiennej 'wpola' wpiszemy wartosc 7 lub 8:
 - dla liczby 7 - program do pola nr. 7 nie wpisuje zadnej wartosci
 - dla liczby 8 - program wpisuje do pola nr. 7 i nr. 8 takie same wartosci (np. 2x X czy 2x O)

Probowalem rozwiazac to na wszystkie znane mi sposoby, nie udalo sie. Kombinuje od 3h... Mam nadzieje, ze mi pomozecie.

Po 2,5h czekania stwierdzam, ze chyba nikt nie zna rozwiazania na ten problem... No, nie wazne, sproboje jeszcze...
P-68335
OSA_PL
» 2012-11-03 18:08:52
Popatrz jeszcze raz na funkcję WysPlansze.
P-68360
Rosumad
Temat założony przez niniejszego użytkownika
» 2012-11-03 18:16:01
OSA_PL JESTES MOIM MISTRZEM!
Dzieki bardzo, nie zauwazylem tak prostego, a tak znaczacego bledu... Dlugo to studiowales? Ja od 6h probowalem dojsc dlaczego...
P-68363
OSA_PL
» 2012-11-03 18:19:41
Chwilkę, ta funkcja jest na samym początku więc nie miałem zbyt wiele do studiowania.
P-68365
tirou
» 2012-11-03 18:22:55
Może ktoś by wyjasnil gdzie jest blad w twoim kodzie? Tak dla jasności innych forumowiczow ;)
P-68368
OSA_PL
» 2012-11-03 18:23:48
cout << "  " << tz[ 8 ] << "  *  " << tz[ 8 ] << "  *  " << tz[ 9 ] << "  " << endl;
 Teraz widzisz?
P-68369
Rosumad
Temat założony przez niniejszego użytkownika
» 2012-11-03 18:32:50
Chodzilo o to, ze w kodzie bylo

cout << "  " << tz[ 8 ] << "  *  " << tz[ 8 ] << "  *  " << tz[ 9 ] << "  " << endl;

zamiast tz[7] bylo tz[8]. Caly blad.
P-68370
« 1 »
  Strona 1 z 1