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ú

Mensajes - EmmanuelTR9

#11
.NET (C#, VB.NET, ASP) / Re: Neumann en c#
26 Febrero 2020, 07:45 AM
Cita de: engel lex en 26 Febrero 2020, 07:41 AM
desconozco el metodo que describes, pero me parece que no es necesario convertir a string, podrías explicar lo que necesitas hacer en la operacion?
Gracias por responder, lo que necesito hacer es
1.escribir 10 numeros
2.(10numeros)^2
3.y el resultado que salga se toman los 5 de enmedio y se vuelve a repetir el paso 2
#12
.NET (C#, VB.NET, ASP) / Neumann en c#
26 Febrero 2020, 07:28 AM
hola a todos los que puedan leer mi duda que tengo, estoy realizando este metodo en c# pero al momento de tomar los 5 numeros de enmedio de la multiplicacion no lo hace hasta despues lo hace no se si tenga algun error si me podria alguien corregir

 
Código (csharp) [Seleccionar]
double Cantidad;
           double Semilla;
           Semilla = int.Parse(textBox1.Text);
           Cantidad = int.Parse(textBox2.Text);
           double Semilla_cuadrada = 0;

           for (int i = 0; i < Cantidad; i++)
           {
               Semilla_cuadrada = Semilla * Semilla;
               String NSemilla_cuadrada;
               NSemilla_cuadrada = Convert.ToString(Semilla_cuadrada);
               String D4;
               D4 = NSemilla_cuadrada.Substring(3, 5);
               Semilla = Convert.ToInt64(D4);
               listBox1.Items.Add(Semilla_cuadrada);
               listBox2.Items.Add(Semilla);
           }



CoAdm: Etiqueta corregida y tema movido al subforo correcto
#13
si mas o menos me di una idea gracias por responder, el profesor piensa que copiamos del internet pero solamente hacemos el de pasar codigo pero ya vez.
#14
Cita de: YreX-DwX en  1 Noviembre 2019, 17:33 PM

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

int tablero[3][3];
int col, fila;
int modo, ban;
int win;
int pos;
int player;

void gotoxy(int x,int y){
   HANDLE hcon;
   hcon = GetStdHandle(STD_OUTPUT_HANDLE);
   COORD dwPos;
   dwPos.X = x;
   dwPos.Y= y;
   SetConsoleCursorPosition(hcon,dwPos);
}

void escenario(){
   gotoxy(33,2); printf("#############");
   gotoxy(33,3); printf("# 1 # 2 # 3 #"); //35,3 39,3 43,3
   gotoxy(33,4); printf("#############");
   gotoxy(33,5); printf("# 4 # 5 # 6 #"); //35,5 39,5 43,5
   gotoxy(33,6); printf("#############");
   gotoxy(33,7); printf("# 7 # 8 # 9 #"); //35,7 39,7 43,7
   gotoxy(33,8); printf("#############");
 
   gotoxy(33,10); printf("#############");
   gotoxy(33,11); printf("#   #   #   #"); //35,11 39,11 43,11
   gotoxy(33,12); printf("#############");
   gotoxy(33,13); printf("#   #   #   #"); //35,13 39,13 43,13
   gotoxy(33,14); printf("#############");
   gotoxy(33,15); printf("#   #   #   #"); //35,15 39,15 43,15
   gotoxy(33,16); printf("#############");
}


main(){
   for(col=0; col<3; col++){
       for(fila=0; fila<3; fila++){
           tablero[col][fila]=5;
       }
   }

   do{
       system("cls");
       printf("El juego del Gato\n");
       ban=0;
       gotoxy(1,18);printf("Elija la modalidad de juego: 1 Usuario1 vs Usuario2 - 2 Usuario vs Maquina");
       gotoxy(1,19);printf("Modalidad: ");
       scanf("%d",&modo);
       if(modo == 1){
           ban=1;
           if(modo==1){
               gotoxy(1,20);printf("Usuario1 <<X>> vs Maquina <<O>>");
               escenario();
               win=0;
               player=1;
           }
           do{
               gotoxy(1,21); printf("En que cuadro quiere tirar: ");
               scanf("%d",&pos);
               if(pos>=1 && pos<=9){
                   switch(pos){
                       case 1:
                           if(tablero[0][0]==5){
                               if(player==1){
                                   tablero[0][0]=1;
                                   player=2;
                                   gotoxy(35,11);printf("%d",tablero[0][0]);
                               }
                               else{
                                   tablero[0][0]=0;
                                   player=1;
                                   gotoxy(35,11);printf("%d",tablero[0][0]);
                               }
                           }
                           else{
                               printf("La Casilla ya esta ocupada, intente de nuevo");
                           }
                           break;

                       case 2:
                           if(tablero[0][1]==5){
                               if(player==1){
                                   tablero[0][1]=1;
                                   player=2;
                                   gotoxy(39,11);printf("%d",tablero[0][1]);
                               }
                               else{
                                   tablero[0][1]=0;
                                   player=1;
                                   gotoxy(39,11);printf("%d",tablero[0][1]);
                               }
                           }
                           else{
                               printf("La Casilla ya esta ocupada, intente de nuevo");
                           }
                           break;
                   }
               }

           }while(win!=1);

       }
       else{
           printf("La Opcion Seleccionada es Erronia intente nuevamente");
       }

       getch();
   }while(ban!=1);
   getch();
}

Esto era lo que estaba pidiendo que hicieras para poder leer tu código porque sino es realmente imposible saber hasta donde llega cada llave...

Deberías usar funciones y usar variables locales. Las variables globales hacen a los programas inconsistentes... Para algo existen los parámetros a funciones. Además si te das cuenta:
  • Las líneas 55y 57 son lo mismo. Si entra en el primer <if> obviamente entrará en el segundo también.
  • No sé cuál es la utilidad de la variable <ban>.
  • La línea 66 no es necesaria ya que puedes hacer el <switch> del 1 al 9 y un caso <default> para cualquier otro caso.
  • No utilices números mágicos (es decir, número literales como para el tamaño de la matriz o los bucles for). Es mejor crear unas constantes por ejemplo así:

    #define TAM_COLS 3
    #define TAM_FILAS 3

  • En vez de inicializar toda la matriz a 5 (que entiendo que es un número al azar) sería mejor inicializarla a 0 y usar el 1 para el primer jugador y el 2 para el segundo.
  • Cada <case> es prácticamente igual al resto y ocupa 15 líneas. Agrupar código en una función te ahorrará bastante.



    Yo haría lo siguiente: inicializar el tablero a 0, usar la variable <jugador> con valor {1,2} para determinar el jugador en cada momento, la variable <modo> con valor {1,2} para determinar 2 jugadores o 1 jugador vs máquina, respectivamente; y la variable <ganador> con valor {0,1,2} para representar ningún ganador, el primer jugador gana o el segundo jugador gana, respectivamente.

    El programa general sería algo así:

    // librerias

    #define TAM_FILA 3
    #define TAM_COL 3

    // prototipos de funciones
    // es mejor poner los prototipos antes del main y las funciones despues del main. Tambien se pueden poner las funciones completas antes del main

    int main(){ // la funcion main es de tipo int. Es mejor ponerlo siempre
       int tablero[TAM_FILA][TAM_COL]; // tablero del juego
       int jugador = 1; // indica el jugador actual (por defecto el 1). valores = {1,2}
       int modo; // indica el modo de juego. valores = {1,2}
       int ganador = 0; // indica el ganador. valores = {0,1,2}

        inicializarTablero(tablero, 0);

       modo = elegirModo();

       while(!ganador && !tableroCompleto(tablero)){
           posicion = elegirPosicion(tablero, jugador, modo);
           actualizarTablero(tablero, jugador, posicion);
           ganador = comprobarGanador(tablero);
           jugador = (jugador + 1) % jugador; // intercambia el jugador de 1 a 2 y de 2 a 1
       }

       if(ganador)
           printf("Jugador %d gana!!", ganador);
       else
           printf("Empate...");
    }

    Un código limpio, corto y sencillo... que con leer el <main> ya sabes lo que hace el programa. Si luego quieres ver cómo funciona una parte específica o quieres cambiar alguna parte, sólo tienes que ir a la función correspondiente.

    Con esto claro puedes hacer una función como esta para que un jugador elija una posición VÁLIDA del tablero:

    // como la variable tablero deberia ser declarada dentro del main, tendras que pasarla como parametro:
    int elegirPosicion(int tablero[][TAM_COLS], int jugador, int modo){
       do{
           if(jugador == 2 && modo == 2) // si le toca a la maquina...
               posicion = 1 + rand() % (TAM_FILA * TAM_COL); // calcula una posicion aleatoria
           else{
               printf("Elige una posicion valida [%d, %d]: ", 1, TAM_FILA * TAM_COL);
               scanf("%d", posicion);
           }
           int fila = (posicion - 1) / TAM_COL; // calculas la fila segun la posicion
           int col = (posicion - 1) % TAM_COL; // calculas la columna segun la posicion
       }  while(fila >= TAM_FILA || col >= TAM_COL || tablero[fila][col]); // la tercera expresion solo funciona si inicializas la matriz a 0 como dije antes
       return posicion;
    }


    El resto de funciones te las dejo a ti que yo creo que con esto ya te he hecho bastante. Te dejo como guía lo que debería hacer cada función:

    // Poner todas las casillas del tablero con el valor <valor>
    void inicializarTablero(int tablero[][TAM_COL], int valor);

    // Mostrar los modos, hacer un filtro para que el modo sea valido y devolverlo cuando lo sea
    int elegirModo();

    // En la funcion <elegirPosicion(...) ya hemos comprobado que la casilla no este ocupada por lo que aqui
    // solo tienes que calcular la fila y columna correspondiente y asignarle el valor <jugador>
    void actualizarTablero(int tablero[][TAM_COL], int jugador, int posicion);

    // Recorrer todo el tablero mientras no encuentres un 0 (valor por defecto de las casillas)
    // Si encuentras un 0 devuelves el 0 y si no devuelves un numero distinto de 0 (la opcion habitual es 1 para asemejarlo a un true/false).
    int tableroCompleto(tablero);

    // Recorrer todo el tablero. Devolver el numero del jugador que ha ganado y si ninguno ha ganado, devolver un 0.
    int comprobarGanador(tablero)

Gracias por responder y ayudarme, lo que no mencione es que el programa debe de ser asi porque yo algo parecido estuve haciendo asi pero el profesor lo quiere como lo mostre
#15
Cita de: YreX-DwX en 30 Octubre 2019, 16:54 PM
Si quieres recibir ayuda de alguien, pónselo un poco más fácil a quien te intente ayudar...
Es un código bastante grande, la tabulación está regular y sin resaltado de sintaxis (en la etiqueta de apertura de code puedes poner "=c" o "=cpp" sin comillas para que se resalte la sintaxis de C o de C++ o directamente elegir el lenguaje del desplegable "Código GeSHi"). Además no especificas nada de tu problema. Obligas a quien te quiera ayudar a leerse el código entero... y te aseguro que no es para nada apetecible.

Lo siento pero me sentia desesperado ahora ya, me explico si es que puedes explicarme como puedo hacer que cuando jugador 1(yo) tire despues siga la maquina me entiendes?
#16
Estoy intentando hacer el modo de usuario vs cpu ya tengo el de usuario1 vs usuario2 pero no entiendo como usar la funcion de random para hacer funcionar esto, si alguien me podria explicar se lo agradeceria.

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

int tablero[3][3];
int col, fila;
int modo, ban;
int win;
int pos;
int player;

void gotoxy(int x,int y){
HANDLE hcon;
hcon = GetStdHandle(STD_OUTPUT_HANDLE);
COORD dwPos;
dwPos.X = x;
dwPos.Y= y;
SetConsoleCursorPosition(hcon,dwPos);
}

void escenario(){
gotoxy(33,2); printf("#############");
gotoxy(33,3); printf("# 1 # 2 # 3 #"); //35,3 39,3 43,3
gotoxy(33,4); printf("#############");
gotoxy(33,5); printf("# 4 # 5 # 6 #"); //35,5 39,5 43,5
gotoxy(33,6); printf("#############");
gotoxy(33,7); printf("# 7 # 8 # 9 #"); //35,7 39,7 43,7
gotoxy(33,8); printf("#############");

gotoxy(33,10); printf("#############");
gotoxy(33,11); printf("#   #   #   #"); //35,11 39,11 43,11
gotoxy(33,12); printf("#############");
gotoxy(33,13); printf("#   #   #   #"); //35,13 39,13 43,13
gotoxy(33,14); printf("#############");
gotoxy(33,15); printf("#   #   #   #"); //35,15 39,15 43,15
gotoxy(33,16); printf("#############");
}


main(){
for(col=0; col<3; col++){
for(fila=0; fila<3; fila++){
tablero[col][fila]=5;
}
}

do{
system("cls");
printf("El juego del Gato\n");
ban=0;
gotoxy(1,18);printf("Elija la modalidad de juego: 1 Usuario1 vs Usuario2 - 2 Usuario vs Maquina");
gotoxy(1,19);printf("Modalidad: ");
scanf("%d",&modo);
if(modo == 1){
ban=1;
if(modo==1){
gotoxy(1,20);printf("Usuario1 <<X>> vs Maquina <<O>>");
escenario();
win=0;
player=1;
}
do{
gotoxy(1,21); printf("En que cuadro quiere tirar: ");
scanf("%d",&pos);
if(pos>=1 && pos<=9){
switch(pos){
case 1:
if(tablero[0][0]==5)
{
if(player==1){
tablero[0][0]=1;
player=2;
gotoxy(35,11);printf("%d",tablero[0][0]);
}
else{
tablero[0][0]=0;
player=1;
gotoxy(35,11);printf("%d",tablero[0][0]);
}
}
else{
printf("La Casilla ya esta ocupada, intente de nuevo");
}
break;

case 2:
if(tablero[0][1]==5){
if(player==1){
tablero[0][1]=1;
player=2;
gotoxy(39,11);printf("%d",tablero[0][1]);
}
else{
tablero[0][1]=0;
player=1;
gotoxy(39,11);printf("%d",tablero[0][1]);
}
}
else{
printf("La Casilla ya esta ocupada, intente de nuevo");
}
break;
}
}

}while(win!=1);

}
else{
printf("La Opcion Seleccionada es Erronia intente nuevamente");
}

getch();
}while(ban!=1);
getch();
}

#17
Cita de: dijsktra en  8 Octubre 2019, 18:41 PM
A ver, según entiendo yo, si dice "según se lee la letra se acomoda", no se trata de ordenar, sino de insertar en un vector ordenado una letra. Pero el mayor problema, veo yo, tiene que ver con el hecho de capturar caracteres de la entrada estandard. Eso es otro problema, porque la entrada buferada exige que le des al intro, y a la vez el intro es un caracter (que a t'i no te vale para tu proposito).


Propuesta:

/*
P : N>0 and sorted(A,0,N-1) and V=A
Q : perm(V,A) and sorted(V,0,N)


I : perm(V,A) and sorted(V,0,n) and sorted(V,n, N)
and (0<n<N-1 - > V[n-1]<V[n+1]) and 0 <= n <= N-1

!B : n==0 || V[n]>=V[n-1]

 B : n > 0 && V[n]<V[n-1]

|- I and !B -> Q

Quote:

 C(n) = n >= 0

|- I -> C(n) >= 0

Invariant snapshot:
-------------------

0                 n           N
+-----+-----+-----+-----+-----+
|  0  |  1  |  3  |  2  |  4  |
+-----+-----+-----+-----+-----+

Init:
-----
n = N- 1

|- P -> I[n/N-1]

Step:
----
 n= n- 1

|- I and B and n=T -> (n<T)[n/n-1]

Restore:
--------

 V[n],V[n-1]=V[n-1],V[n]

Pseudocode:
-----------

  n=N-1
  while n>0 and V[n]<V[n-1] do
    V[n],V[n-1]=V[n-1],V[n]
    n=n-1
  done

*/

void *insertChar(char V[], int N)
{
 for(int n=N-1 ; (n && V[n]<V[n-1]);n--)
   {
     const int An=V[n];  /* To do swapping */
     V[n]=V[n-1];
     V[n-1]=An;
   }
 return V;
}



#include <stdio.h>
#include <string.h>


#define MAX 100000
int main(int argc, char* args[])
{
 int N;
 char V[MAX];
 memset(V,0, MAX);
 for(N=0 ; (scanf("%c",&V[N++])==1) ; )
   {
     if (V[N-1]=='\n') break; // Hack. I don't know how to
      // avoid '\n'  as character.
     const char c=V[N-1];
     insertChar(V,N);
     printf("%d %c %s\n",strlen(V),c,V);
   }
 return 0;
}


Ejemplp:


gcc char.cc -o char && ./char
asdfdgfhj1234
1 a a
2 s as
3 d ads
4 f adfs
5 d addfs
6 g addfgs
7 f addffgs
8 h addffghs
9 j addffghjs
10 1 1addffghjs
11 2 12addffghjs
12 3 123addffghjs
13 4 1234addffghjs


Intente realizar como el mencionado pero no pude me puedes orientar un poco mas porfavor
#18
Cita de: engel lex en  8 Octubre 2019, 06:30 AM
un for es un do while compacto

en resumen

// el for comun
for(int i = 0; i < 10; i++){

  // hacer cosas

}

// un do while de funcionamiento similar

int i = 0;
do{
 
  // hacer cosas

  i++;
}while(i < 10)




con este conocimiento puedes adaptar los codigos comunes, intentalo, muestra que lograste y si tines dudas, realizalas

aqui sobre el ordenamiento de burbuja en detalle
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Algoritmos_y_Estructuras_de_Datos


Ya intente pero no logro ingresar de manera manual cada una de la letra

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int main(void)
    {
      int fin;
      char ch, entrada[27], salida[27];
      int no[26] = {0}, n, c, t, x;
     
      printf("Escribe las palabras a ordenar\n");
      scanf("%s", entrada);
     
      n = strlen(entrada);
      for (c = 0; c < n; c++)
      {
        ch = entrada[c] - 'a';
        no[ch]++;
      }
      t = 0;
      for (ch = 'a'; ch <= 'z'; ch++)
      {
        x = ch - 'a';
        for (c = 0; c < no[x]; c++)
        {
          salida[t] = ch;
          t++;
        }
      }
      salida[t] = '\0';
      printf("%s\n", salida);
      return 0;
    }
#19
Cita de: engel lex en  8 Octubre 2019, 05:39 AM
si son char, en el scanf no capturas con %d capturas con %c

te recomiendo buscar el algoritmo de ordenamiento de burbuja, es el mas simple de los algoritmos de organizacion

Si he intentado con ese metodo pero no logro poderlo adaptar ya que tengo que usar do while
#20

Hola ante todo he estado intentando lograr ordenar las letras con su orden respectivo pero no logro hacerlo, y publico aca si me podrian ayudar. Al ingresar una letra la debe de empezar a acomodar pero no se muy bien como hacer ello.

#include <stdio.h>
#include <conio.h>

int fin=27;
char Caracter;
char Abecedario[27];
main(void){
do {
printf("Solicitar Caracter: ");
scanf("%d,", &Caracter);


} while(fin != 27);
printf("\nGracias ");
getch();
}