Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - BrendiisFox

#1
Programación C/C++ / Turnos en C++
27 Septiembre 2015, 04:00 AM
Buenas Noches,
Estoy realizando en xo o tic tac toe en c++. Mi programa funciona bien hasta ahora pero mi unico problema es al intercambiar los jugadores. Si alguien me puede señalar el error se los agradeceria mucho

les dejo el codigo:


Código (cpp) [Seleccionar]

#include <iostream>
#include <cstdlib>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>


using namespace std;


int auxiliar;
bool turno ;
class Nodo{
public:
char valor;
    int Index;
    Nodo *sigPtr;
    Nodo *antrPtr;
    Nodo *arrPtr;
    Nodo *abaPtr;

Nodo(char val){
valor=' ';
        //indice a -1
        Index = val;
        //se le mandara al nodo el numero de indice
        sigPtr = 0;
        antrPtr = 0;
        arrPtr = 0;
        abaPtr = 0;
    }
};

class Lista{
private:

public:
    Nodo *PrimeroPtr;
    Nodo *UltimoPtr;
    int tamano;

Lista(){
PrimeroPtr=UltimoPtr=0;
        tamano=0;
    }

bool IsEmpty(){
        return PrimeroPtr==0;
    }

void InsertAtEndDbl(int val){
Nodo *nuevoPtr=new Nodo(val);

if (IsEmpty()){
PrimeroPtr = UltimoPtr = nuevoPtr;
}else{
UltimoPtr->sigPtr = nuevoPtr;
      nuevoPtr->antrPtr = UltimoPtr;
      UltimoPtr = nuevoPtr;
      tamano++;
}
}

void createListX0(){
for(int i=1; i<=9; i++){
InsertAtEndDbl(i);
}

Nodo * anttemp = PrimeroPtr;
    Nodo *actual = PrimeroPtr;

for(int j=1; j<=9; j++){
actual = actual->sigPtr;

if(j>2&&j<9){
anttemp->abaPtr = actual;
            actual->arrPtr = anttemp;
            anttemp = anttemp->sigPtr;         
        }               
    } 
}
   
void Imprimir(){
cout<<" "<<endl;
if(IsEmpty()){
        cout<<"Vacio"<<endl;
    }else{
Nodo *Actual=PrimeroPtr;
        cout<<"["<<Actual->valor<<"] ";
        while(Actual->sigPtr!=0){
            Actual=Actual->sigPtr;
            cout<<"["<<Actual->valor<<"] ";
            if(Actual->Index==3 && Actual->Index<=9 || Actual->Index==6 && Actual->Index<=9){
                cout<<endl;
            }
        }
    }
}

void LlenarJugador1(int posicion){
char simbolo = 'X';
Nodo *actual=PrimeroPtr;
int auxiliar = 0;

if(posicion == 1){
actual->valor = simbolo;
auxiliar++;
}
else if(posicion == 2){
actual->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 3){
actual->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 4){
actual->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 5){
actual->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 6){
actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 7){
actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 8){
actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else{
actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
turno == false;


void LlenarJugador2(int posicion){
char simbolo = '0';
Nodo *actual=PrimeroPtr;
int auxiliar = 0;

if(posicion == 1){
actual->valor = simbolo;
auxiliar++;
}
else if(posicion == 2){
actual->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 3){
actual->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 4){
actual->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 5){
actual->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 6){
actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 7){
actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else if(posicion == 8){
actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
else{
actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
auxiliar++;
}
turno == true;


void Gane(){
Nodo *actual=PrimeroPtr;

//GANE HORIZONTAL
if (actual->valor == 'X' && actual->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->valor == 'X') {
cout<<"Gano de manera Horizontal"<<endl;
auxiliar =9;
system("PAUSE");
}
if(actual->valor=='0' && actual->sigPtr->valor == '0' && actual->sigPtr->sigPtr->valor=='0')
{
cout<<"Gano de manera Horizontal"<<endl;
auxiliar =9;
system("PAUSE");
}
if(actual->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X'){
cout<<"Gano de manera Horizontal"<<endl;
}
if(actual->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0'){
cout<<"Gano de manera Horizontal"<<endl;
auxiliar =9;
system("PAUSE");
}
if(actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X' &&  actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor =='X'){
cout<<"Gano de manera Horizontal"<<endl;
auxiliar =9;
system("PAUSE");
}
if(actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0' &&  actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor =='0'){
cout<<"Gano de manera Horizontal"<<endl;
auxiliar =9;
system("PAUSE");
}


//GANE DIAGONAL
if(actual->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor =='X'){
cout<<"Gano de manera Diagonal"<<endl;
auxiliar =9;
system("PAUSE");
}
if(actual->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor =='0'){
cout<<"Gano de manera Diagonal"<<endl;
system("PAUSE");
}
if(actual->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X'){
cout<<"Gano de manera Diagonal";
auxiliar = 9;
system("PAUSE");
}
if(actual->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0'){
cout<<"Gano de manera Diagonal"<<endl;
auxiliar =9;
system("PAUSE");
}

//GANE VERTICAL
if(actual->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == 'X'){
cout<<"Gano de manera vertical"<<endl;
auxiliar =9;
system("PAUSE");
}
if(actual->valor == '0' && actual->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == '0'){
cout<<"Gano de manera vertical"<<endl;
auxiliar =9;
system("PAUSE");
}
if(actual->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == 'X'){
cout<<"Gano de manera vertical"<<endl;
auxiliar =9;
system("PAUSE");
}
if(actual->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == '0'){
cout<<"Gano de manera vertical"<<endl;
auxiliar =9;
system("PAUSE");
}
if(actual->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == 'X'){
cout<<"Gano de manera vertical"<<endl;
auxiliar =9;
system("PAUSE");
}
if(actual->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == '0'){
cout<<"Gano de manera vertical"<<endl;
auxiliar =9;
system("PAUSE");
}
}

   
friend ostream &operator<<(ostream &os, Lista &l){
    if(l.IsEmpty()){
        return os;
        Nodo *actPtr=l.PrimeroPtr;
        cout<<actPtr->valor<<endl;
        while(actPtr->sigPtr!=0){
            actPtr=actPtr->sigPtr;
            cout<<"->"<<actPtr->valor;
        }
        return os;
    };
}
};

int main(){
system("CLS");
system("Color 8F");
bool seguir = true;

string opcion;
int posicion;

Lista l=Lista();
l.createListX0();
cout<<"--------------------------------- Tic Tac Toe ---------------------------------"<<endl;
while(auxiliar<=3){
if(turno == true){
cout<<"Ingrese posicion: ";
cin>>posicion;
l.LlenarJugador1(posicion);
l.Imprimir();
l.Gane();
auxiliar++;
cout<<"\n";
cout<<"\n";
}
else if(turno == false){
cout<<"Ingrese posicion: ";
cin>>posicion;
l.LlenarJugador2(posicion);
l.Imprimir();
l.Gane();
auxiliar++;
cout<<"\n";
cout<<"\n";

system("PAUSE");
}
}
return 0;
}
#2
Buenas Tardes!
Estoy trabajando con C++, listas doblemente enlazada. Nos pidieron ingresar al incicio, enmedio y al final, de los cuales ya logre realizar el insertar al inicio y al final. Mi problema es, ¿Como inserto en medio?
Me dijeron que es necesario un contador el cual no implemente y no se que tan cierto sera.

Le comparto algo del codigo que ya tengo realizado:


De antemano muchas gracias
#3
Programación C/C++ / Enlazar Nodos?
10 Septiembre 2015, 22:37 PM
Hola a todos!
Necesitaba saber como enlazar nodos con listas enlazadas simples. Si alguien me podria explicar se los agradeceria ya que tengo que enlazar 81 O.o
Esto realizando un sudoku.

De antemano, muchas gracias.
#4
Programación C/C++ / ¿Ayuda con listas enlazadas?
3 Septiembre 2015, 19:05 PM
Buen día a todos!
Estoy rezando un proyecto con listas enlazadas simples en c++, pero tengo algunas dudas al momento de insertar en medio de la lista. El trabajo me pide que inserte al principio, enmedio y final un determinado dato que ingrese el usuario pero por mas que pruebe no logro ingresar enmedio.

Les adjunto lo que llevo hasta ahorita y les agradeceria mucho si me ayudan a salir de este apuro.

Código (cpp) [Seleccionar]

void InserteAlInicio(ListaSimple &ls, int dato){
system("CLS");
cout<<"\n";
cout<<"Ingrese numero de inicio: ";
cin>>dato;
cout<<"\n";
ListaSimple valor;
valor = new(struct nodo);
valor->numero = dato;
valor->puntero = ls;
ls = valor;
}



void InserteEnmedio(ListaSimple &ls, int dato){
system("CLS");
cout<<"\n";
cout<<"Ingrese numero de en medio: ";
cin>>dato;
cout<<"\n";
ListaSimple valor, valor2;
valor = new(struct nodo);
valor->numero = dato;
valor->puntero = valor2->puntero;
valor2->puntero = valor;
ls = valor;
}

void InserteAlFinal(ListaSimple &ls, int dato){
system("CLS");
cout<<"Ingrese numero de final: ";
cin>>dato;
ListaSimple valor, valor2;
valor = new(struct nodo);
valor->numero = dato;
valor->puntero = ls;
valor->puntero = NULL;

if(ls==NULL){
ls = valor;
}else{
valor2 = ls;
while(valor2->puntero!=NULL){
valor2 = valor2->puntero;
}
valor2->puntero = valor;
}
}

#5
Programación C/C++ / ArrayList
21 Agosto 2015, 22:57 PM
Hola, buenas tardes!

Necesito ayuda para trancribir esta linea de codigo de java a c++, es un arraylist y en la tarea que nos dejaron era trancribirlo todo a c++ y estoy mas que trabada con esto. en serio, les agradeceria mucho su ayuda

Código (cpp) [Seleccionar]

public static ArrayList integrantes = new ArrayList();

public static void main(){
}
#6
Programación C/C++ / Virtual y Super en C++
21 Agosto 2015, 04:22 AM
Buenas Noches!

Necesito aclarar una duda con respecto al uso del virtual y super. Estoy trabajando con Herencia y Polimorfismo en C++

El codigo que estoy trabajando es este

Código (cpp) [Seleccionar]

class Futbolista: virtual public SeleccionFutbol{
private: int dorsal;
private: int demarcacion;

public: Futbolista(){
super.Futbolista;
}

//getter y setter

void jugarPartido(){

}

void entrenar(){

}

};


Si me podrian señalar mi error se los agradeceria mucho
#7
Programación C/C++ / Objetos y Clases en c++
18 Agosto 2015, 05:24 AM
Buenas noches, estoy haciendo un proyecto en c++ donde empezamos implementar clases, objetos y herencias. Mi duda es, cuando lleno esto como los mando a llamar en el main. No se si me explico y se me equivoco en algo por favor corrijanme

Por ejemplo

Código (cpp) [Seleccionar]


#include <cstdlib>
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <windows.h>


using namespace std;

class CSuma{

private:
double suma;

public:
CCuenta (double suma_inicial, double respuesta);
void resultado(double respuesta);

};

void Csuma::resultado(double rrespuesta){

//informacion

}



int main(int argc, char *argv[]) {

//como lo mando a llamar desde aqui

}





de antemano, muchas gracias!
#8
Hola a todos!
Estaba realizando un trabajo en C++ sobre un conecta cuatro, realizo el programa mediante una matriz de 10x10 en la cual debo ingresar las coordenadas. Como sabran, solo se debe usar la columna y va en un orden en el que usuario elige que columna pero no fila. No se si me logro explicar.  Mi problema es, como ingresar las coordenadas, estuve leyendo en otros mensajes pero no logro implementarlo. Tengo pensado realizar dos jugadores los cuales se iran turnando, teniendo en cuenta que no se puede repetir dos veces la misma jugada. Les agradecería mucho si pudieran ayudarme.

Código (cpp) [Seleccionar]

void Jugar(){
system("CLS");
int i, j;
string arreglo[10][10];
cout<<"   0    1    2    3    4    5    6    7    8    9";
cout<<"\n";
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
arreglo[i][j]=" ";
}
}

for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
cout<<" [ " << arreglo[i][j]<< "]";
}
cout<<" " << i;
cout<<"\n";
}
cout<<"\n";
cout<<"\n";
int x;
int y;
cout<<"Ingrese sus coordenadas: ";
cin>>x;
cin>>y;
if (arreglo[i-1][j-1] == '0')
arreglo[i-1][j-1] = 'O';
else
   {
       printf ("coordenada no valida");
       continue; //volvemos la principio
   }



cout<<"\n";
cout<<"-----------------------------------------------------";
cout<<"\n";
system("PAUSE");