elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


  Mostrar Mensajes
Páginas: [1] 2
1  Programación / Programación C/C++ / Turnos en C++ en: 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
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <conio.h>
  6. #include <windows.h>
  7.  
  8.  
  9. using namespace std;
  10.  
  11.  
  12. int auxiliar;
  13. bool turno ;
  14. class Nodo{
  15. public:
  16. char valor;
  17.    int Index;
  18.    Nodo *sigPtr;
  19.    Nodo *antrPtr;
  20.    Nodo *arrPtr;
  21.    Nodo *abaPtr;
  22.  
  23. Nodo(char val){
  24. valor=' ';
  25.        //indice a -1
  26.        Index = val;
  27.        //se le mandara al nodo el numero de indice
  28.        sigPtr = 0;
  29.        antrPtr = 0;
  30.        arrPtr = 0;
  31.        abaPtr = 0;
  32.   }
  33. };
  34.  
  35. class Lista{
  36. private:
  37.  
  38. public:
  39.    Nodo *PrimeroPtr;
  40.    Nodo *UltimoPtr;
  41.    int tamano;
  42.  
  43. Lista(){
  44. PrimeroPtr=UltimoPtr=0;
  45.        tamano=0;
  46.    }
  47.  
  48. bool IsEmpty(){
  49.        return PrimeroPtr==0;
  50.     }
  51.  
  52. void InsertAtEndDbl(int val){
  53. Nodo *nuevoPtr=new Nodo(val);
  54.  
  55. if (IsEmpty()){
  56. PrimeroPtr = UltimoPtr = nuevoPtr;
  57. }else{
  58. UltimoPtr->sigPtr = nuevoPtr;
  59.     nuevoPtr->antrPtr = UltimoPtr;
  60.       UltimoPtr = nuevoPtr;
  61.       tamano++;
  62. }
  63. }
  64.  
  65. void createListX0(){
  66. for(int i=1; i<=9; i++){
  67. InsertAtEndDbl(i);
  68. }
  69.  
  70. Nodo * anttemp = PrimeroPtr;
  71.    Nodo *actual = PrimeroPtr;
  72.  
  73. for(int j=1; j<=9; j++){
  74. actual = actual->sigPtr;
  75.  
  76. if(j>2&&j<9){
  77. anttemp->abaPtr = actual;
  78.            actual->arrPtr = anttemp;
  79.            anttemp = anttemp->sigPtr;        
  80.        }                
  81.    }  
  82. }
  83.  
  84. void Imprimir(){
  85. cout<<" "<<endl;
  86. if(IsEmpty()){
  87.        cout<<"Vacio"<<endl;
  88.    }else{
  89. Nodo *Actual=PrimeroPtr;
  90.        cout<<"["<<Actual->valor<<"] ";
  91.        while(Actual->sigPtr!=0){
  92.            Actual=Actual->sigPtr;
  93.            cout<<"["<<Actual->valor<<"] ";
  94.            if(Actual->Index==3 && Actual->Index<=9 || Actual->Index==6 && Actual->Index<=9){
  95.                cout<<endl;
  96.            }
  97.        }
  98.    }
  99. }
  100.  
  101. void LlenarJugador1(int posicion){
  102. char simbolo = 'X';
  103. Nodo *actual=PrimeroPtr;
  104. int auxiliar = 0;
  105.  
  106. if(posicion == 1){
  107. actual->valor = simbolo;
  108. auxiliar++;
  109. }
  110. else if(posicion == 2){
  111. actual->sigPtr->valor = simbolo;
  112. auxiliar++;
  113. }
  114. else if(posicion == 3){
  115. actual->sigPtr->sigPtr->valor = simbolo;
  116. auxiliar++;
  117. }
  118. else if(posicion == 4){
  119. actual->sigPtr->sigPtr->sigPtr->valor = simbolo;
  120. auxiliar++;
  121. }
  122. else if(posicion == 5){
  123. actual->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
  124. auxiliar++;
  125. }
  126. else if(posicion == 6){
  127. actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
  128. auxiliar++;
  129. }
  130. else if(posicion == 7){
  131. actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
  132. auxiliar++;
  133. }
  134. else if(posicion == 8){
  135. actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
  136. auxiliar++;
  137. }
  138. else{
  139. actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
  140. auxiliar++;
  141. }
  142. turno == false;
  143. }  
  144.  
  145. void LlenarJugador2(int posicion){
  146. char simbolo = '0';
  147. Nodo *actual=PrimeroPtr;
  148. int auxiliar = 0;
  149.  
  150. if(posicion == 1){
  151. actual->valor = simbolo;
  152. auxiliar++;
  153. }
  154. else if(posicion == 2){
  155. actual->sigPtr->valor = simbolo;
  156. auxiliar++;
  157. }
  158. else if(posicion == 3){
  159. actual->sigPtr->sigPtr->valor = simbolo;
  160. auxiliar++;
  161. }
  162. else if(posicion == 4){
  163. actual->sigPtr->sigPtr->sigPtr->valor = simbolo;
  164. auxiliar++;
  165. }
  166. else if(posicion == 5){
  167. actual->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
  168. auxiliar++;
  169. }
  170. else if(posicion == 6){
  171. actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
  172. auxiliar++;
  173. }
  174. else if(posicion == 7){
  175. actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
  176. auxiliar++;
  177. }
  178. else if(posicion == 8){
  179. actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
  180. auxiliar++;
  181. }
  182. else{
  183. actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor = simbolo;
  184. auxiliar++;
  185. }
  186. turno == true;
  187. }  
  188.  
  189. void Gane(){
  190. Nodo *actual=PrimeroPtr;
  191.  
  192. //GANE HORIZONTAL
  193. if (actual->valor == 'X' && actual->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->valor == 'X') {
  194. cout<<"Gano de manera Horizontal"<<endl;
  195. auxiliar =9;
  196. system("PAUSE");
  197. }
  198. if(actual->valor=='0' && actual->sigPtr->valor == '0' && actual->sigPtr->sigPtr->valor=='0')
  199. {
  200. cout<<"Gano de manera Horizontal"<<endl;
  201. auxiliar =9;
  202. system("PAUSE");
  203. }
  204. if(actual->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X'){
  205. cout<<"Gano de manera Horizontal"<<endl;
  206. }
  207. if(actual->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0'){
  208. cout<<"Gano de manera Horizontal"<<endl;
  209. auxiliar =9;
  210. system("PAUSE");
  211. }
  212. 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'){
  213. cout<<"Gano de manera Horizontal"<<endl;
  214. auxiliar =9;
  215. system("PAUSE");
  216. }
  217. 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'){
  218. cout<<"Gano de manera Horizontal"<<endl;
  219. auxiliar =9;
  220. system("PAUSE");
  221. }
  222.  
  223.  
  224. //GANE DIAGONAL
  225. if(actual->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor =='X'){
  226. cout<<"Gano de manera Diagonal"<<endl;
  227. auxiliar =9;
  228. system("PAUSE");
  229. }
  230. if(actual->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor =='0'){
  231. cout<<"Gano de manera Diagonal"<<endl;
  232. system("PAUSE");
  233. }
  234. if(actual->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X'){
  235. cout<<"Gano de manera Diagonal";
  236. auxiliar = 9;
  237. system("PAUSE");
  238. }
  239. if(actual->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0'){
  240. cout<<"Gano de manera Diagonal"<<endl;
  241. auxiliar =9;
  242. system("PAUSE");
  243. }
  244.  
  245. //GANE VERTICAL
  246. if(actual->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == 'X'){
  247. cout<<"Gano de manera vertical"<<endl;
  248. auxiliar =9;
  249. system("PAUSE");
  250. }
  251. if(actual->valor == '0' && actual->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == '0'){
  252. cout<<"Gano de manera vertical"<<endl;
  253. auxiliar =9;
  254. system("PAUSE");
  255. }
  256. if(actual->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == 'X' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == 'X'){
  257. cout<<"Gano de manera vertical"<<endl;
  258. auxiliar =9;
  259. system("PAUSE");
  260. }
  261. if(actual->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->valor == '0' && actual->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr->sigPtr-> valor == '0'){
  262. cout<<"Gano de manera vertical"<<endl;
  263. auxiliar =9;
  264. system("PAUSE");
  265. }
  266. 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'){
  267. cout<<"Gano de manera vertical"<<endl;
  268. auxiliar =9;
  269. system("PAUSE");
  270. }
  271. 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'){
  272. cout<<"Gano de manera vertical"<<endl;
  273. auxiliar =9;
  274. system("PAUSE");
  275. }
  276. }
  277.  
  278.  
  279. friend ostream &operator<<(ostream &os, Lista &l){
  280.    if(l.IsEmpty()){
  281.        return os;
  282.        Nodo *actPtr=l.PrimeroPtr;
  283.        cout<<actPtr->valor<<endl;
  284.        while(actPtr->sigPtr!=0){
  285.            actPtr=actPtr->sigPtr;
  286.            cout<<"->"<<actPtr->valor;
  287.        }
  288.        return os;
  289.    };
  290. }
  291. };
  292.  
  293. int main(){
  294. system("CLS");
  295. system("Color 8F");
  296. bool seguir = true;
  297.  
  298. string opcion;
  299. int posicion;
  300.  
  301. Lista l=Lista();
  302. l.createListX0();
  303. cout<<"--------------------------------- Tic Tac Toe ---------------------------------"<<endl;
  304. while(auxiliar<=3){
  305. if(turno == true){
  306. cout<<"Ingrese posicion: ";
  307. cin>>posicion;
  308. l.LlenarJugador1(posicion);
  309. l.Imprimir();
  310. l.Gane();
  311. auxiliar++;
  312. cout<<"\n";
  313. cout<<"\n";
  314. }
  315. else if(turno == false){
  316. cout<<"Ingrese posicion: ";
  317. cin>>posicion;
  318. l.LlenarJugador2(posicion);
  319. l.Imprimir();
  320. l.Gane();
  321. auxiliar++;
  322. cout<<"\n";
  323. cout<<"\n";
  324.  
  325. system("PAUSE");
  326. }
  327. }
  328. return 0;
  329. }
  330.  
2  Programación / Programación C/C++ / Re: Insertar enmedio de una lista doblemente enlazada en: 16 Septiembre 2015, 18:40 pm
Muchas Gracias!
Am, estuve intentando y si, tuve que crear una variable de tamaño la cual incrementa cuando inserto y disminuye cuando elimino. Logre que inserte en medio, pero solo cuando ingreso tres numeros. Si agrego mas, cuando intento ingresar en medio lo coloco detras del primero.

Código
  1. void InserteAlMedio(string elemento){
  2. Nodo *temporal = new Nodo(elemento);
  3. if(Vacio() == true){
  4. primero=ultimo=temporal;
  5. }
  6. else{
  7. /*temporal->siguiente = primero;
  8. primero->anterior = ultimo;
  9. temporal->anterior = primero;
  10. //primero->anterior = temporal->siguiente;
  11. primero->anterior = temporal; */
  12.  
  13.  
  14. /*primero->anterior = ultimo;
  15. ultimo->anterior = temporal;
  16. temporal->siguiente = temporal->anterior;  */
  17.  
  18.  
  19. /*primero->siguiente->anterior = temporal;
  20. temporal->siguiente = primero->anterior;
  21. temporal->anterior = primero;
  22. primero->siguiente = temporal; */
  23.  
  24. primero->siguiente-> anterior = temporal;
  25. temporal->siguiente = primero->siguiente;
  26. temporal->anterior = primero;
  27. primero->siguiente = temporal;
  28.  
  29. tamano++;
  30. }
  31. }
  32.  
  33.  
  34.  
  35. void EliminarAlMedio(){
  36. if(Vacio() ==  true){
  37. cout<<"Lista vacia, no puede eliminar."<<endl;
  38. }
  39. else{
  40. //if(primero == ultimo)
  41.  
  42. if (tamano == 0){
  43. Nodo *temporal = primero->siguiente;
  44. delete primero;
  45. primero = temporal;
  46. primero->anterior = NULL;
  47.  
  48. //primero = ultimo = NULL;
  49. //Cuando se tiene mas de un nuedo, este se marca con una variable temporal.
  50. }
  51. else{
  52. Nodo *temporal = primero;
  53. for(int i=0; i<tamano; i++){
  54. primero->siguiente->anterior = primero->anterior;
  55. primero->anterior->siguiente = primero->siguiente;
  56.  
  57. delete temporal;
  58. //Elimina
  59. cout<<"Dato eliminado"<<endl;
  60.  
  61. tamano--;
  62.  
  63.  
  64. /*}
  65. primero->siguiente->anterior = primero->anterior;
  66. primero->anterior->siguiente = primero->siguiente;
  67.  
  68. delete temporal;
  69. //Elimina
  70. cout<<"Dato eliminado"<<endl;
  71.  
  72. tamano--; */
  73. }
  74.  
  75. }
  76. }
  77. }
  78.  
3  Programación / Programación C/C++ / Insertar enmedio de una lista doblemente enlazada en: 14 Septiembre 2015, 22:40 pm
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
4  Programación / Programación C/C++ / Re: Enlazar Nodos? en: 13 Septiembre 2015, 02:43 am
Uhmm como haria eso?

Averigue que esto se puede realizar con dos ciclos for. No se que tan bien saldra.
5  Programación / Programación C/C++ / Re: Enlazar Nodos? en: 12 Septiembre 2015, 05:08 am
Si, lo se. Creeme que quise hacerlo con arreglo, seria mas sencillo. LE punto es que se me exige usar una lista enlazada, lo cual no le encuentro el sentido. No sabria como enlazar los 81 nodos.

en serio si me ayudan se los agradeceria.
6  Programación / Programación C/C++ / Re: Enlazar Nodos? en: 11 Septiembre 2015, 03:44 am
Hola, ni yo misma tengo idea. Es un proyecto que me han dejado de tarea y la verdad no se ni por donde empezar.
7  Programación / Programación C/C++ / Enlazar Nodos? en: 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.
8  Programación / Programación C/C++ / ¿Ayuda con listas enlazadas? en: 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
  1. void InserteAlInicio(ListaSimple &ls, int dato){
  2. system("CLS");
  3. cout<<"\n";
  4. cout<<"Ingrese numero de inicio: ";
  5. cin>>dato;
  6. cout<<"\n";
  7. ListaSimple valor;
  8. valor = new(struct nodo);
  9. valor->numero = dato;
  10. valor->puntero = ls;
  11. ls = valor;
  12. }
  13.  
  14.  
  15.  
  16. void InserteEnmedio(ListaSimple &ls, int dato){
  17. system("CLS");
  18. cout<<"\n";
  19. cout<<"Ingrese numero de en medio: ";
  20. cin>>dato;
  21. cout<<"\n";
  22. ListaSimple valor, valor2;
  23. valor = new(struct nodo);
  24. valor->numero = dato;
  25. valor->puntero = valor2->puntero;
  26. valor2->puntero = valor;
  27. ls = valor;
  28. }
  29.  
  30. void InserteAlFinal(ListaSimple &ls, int dato){
  31. system("CLS");
  32. cout<<"Ingrese numero de final: ";
  33. cin>>dato;
  34. ListaSimple valor, valor2;
  35. valor = new(struct nodo);
  36. valor->numero = dato;
  37. valor->puntero = ls;
  38. valor->puntero = NULL;
  39.  
  40. if(ls==NULL){
  41. ls = valor;
  42. }else{
  43. valor2 = ls;
  44. while(valor2->puntero!=NULL){
  45. valor2 = valor2->puntero;
  46. }
  47. valor2->puntero = valor;
  48. }
  49. }
  50.  
  51.  
9  Programación / Programación C/C++ / ArrayList en: 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
  1. public static ArrayList integrantes = new ArrayList();
  2.  
  3. public static void main(){
  4. }
  5.  
10  Programación / Programación C/C++ / Virtual y Super en C++ en: 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
  1. class Futbolista: virtual public SeleccionFutbol{
  2. private: int dorsal;
  3. private: int demarcacion;
  4.  
  5. public: Futbolista(){
  6. super.Futbolista;
  7. }
  8.  
  9. //getter y setter
  10.  
  11. void jugarPartido(){
  12.  
  13. }
  14.  
  15. void entrenar(){
  16.  
  17. }
  18.  
  19. };
  20.  

Si me podrian señalar mi error se los agradeceria mucho
Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines