sueldo*=1.25;
Saluditos!.
![](https://st.forocoches.com/foro/images/smilies/aaaaa.gif)
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úCita de: mathias_vg en 12 Junio 2013, 15:05 PM
Gracias leosansan, ahora, te pregunto, hay alguna manera de hacerlo sin tener que utilizar la funcion getchar? ya que no la dimos en clase y no se si la puedo utilizar.
algo como transformar el caracter de entrada en numero y así que me marque el error?
Cita de: eduardosufan en 11 Junio 2013, 19:23 PM
porque para tomar el siguiente token se hace strtok (NULL, "."); ??
es decir, el siguiente token (y ultimo) es el numero de red
Cita de: eduardosufan en 11 Junio 2013, 19:23 PM
por otro lado, como hago para ver si el nombre del archivo que viene a la funcion, contiene el /0 al final?
me dijeron que ese puede ser un problema
Cita de: mathias_vg en 11 Junio 2013, 19:57 PM
Me podrían decir porque entra en bucle cuando elijo un caracter? Que es lo que tengo que modificar?
do
{
scanf ("%d",&dim);
if (dim<4 || dim>10 )
{
printf("\n\n\t\tOpción no valida.\n\n\t\tIngresa la dimensión (4-10): ");
fflush (stdout);
}
while (getchar()!='\n'); /*<==limpio el buffer e impido entrar en un bucle*/
}while (dim<4 || dim>10);
Cita de: KaL3o en 7 Junio 2013, 22:52 PM
hay varios apartes que se repiten, seria bueno utilizar funciones, reducirias varias lineas de codigo
salu2
#include <stdio.h>
#include <stdlib.h>
#include<locale.h>
/************** FUNCIONES **************/
char** asig_memoria( int dim_plus);
void tamanyo_consola (char **matriz,int dim_plus);
void jugada(char **matriz,int dim_plus,int jugador, int color_juego);
void imprimir(char **matriz,int dim_plus,int color_juego);
void comprobar_ganador (char **matriz , int jugador, int x, int y, int dim_plus, int color_jueg);
void ganador (char** matriz,int jugador, int dim_plus, int color_juego,int gana_empata);
void contador(int* cont,char** matriz,int jugador, int dim_plus, int color_juego);
void liberar_mem_matriz( char** matriz, int dim_plus);
void salir( char** matriz, int dim_plus);
/************** FUNCION MAIN **************/
int main()
{
setlocale(LC_ALL, "Spanish");
int color_juego=0,dim_plus=0;
char d,**matriz;
int i=0,j=0,dim=0,movimientos=0,k=0,jugador=1,gana_empata=0;
printf("\n\n\tIngresa la dimensión del tablero de juego (4-10):");
fflush (stdout);
do
{
scanf ("%d",&dim);
if (dim<4 || dim>10 )
{
printf("\n\n\t\tOpción no valida.\n\n\t\tIngresa la dimensión (4-10): ");
fflush (stdout);
}
while (getchar()!='\n');
}while (dim<4 || dim>10);
dim_plus=dim+1;
matriz = asig_memoria( dim_plus );
for (i=1;i<dim_plus;i++)
for (j=1;j<dim_plus;j++)
matriz[i][j]=' ';
tamanyo_consola (matriz, dim_plus);
imprimir( matriz, dim_plus, color_juego);
while (movimientos<=(dim*dim))
{
jugada( matriz, dim, jugador, color_juego);
imprimir( matriz, dim_plus, color_juego);
if (jugador==1)
jugador=2;
else
jugador=1;
movimientos++;
if (movimientos==dim*dim)
ganador (matriz,jugador,dim_plus, color_juego,gana_empata);
}
system("PAUSE");
return 0;
}
/************** FUNCION JUGADA **************/
void jugada(char **matriz,int dim_plus,int jugador,int color_juego)
{
int x=0,y=0,flag=0;
char simbolo[]={'X','O'};
do
{
do
{
flag=0;
printf("\nJUGADOR %d (%c): ",jugador,simbolo[jugador-1]);
fflush (stdout);
scanf ("%d",&y);
while (getchar()!='\n');
if (y<1 || y>dim_plus)
puts("Opción no valida.\nIngresa (4-10)");
}while(y<1 || y>dim_plus);
for (x=dim_plus;x>=0;x--)/*<==este for es mejorable*/
{
if (matriz[x][y]!=' ' && x!=0)
continue;
else if (x==0)
{
puts("¡Ya se llego al limite!.\nIntroduzca otro valor.");
flag=1;
}
else
{
matriz[x][y]=simbolo[jugador-1];
break;
}
}
}while (flag==1);
comprobar_ganador (matriz,jugador,x, y,dim_plus, color_juego);
}
/************** FUNCION TAMAÑO DE LA CONSOLA **************/
void tamanyo_consola (char **matriz,int dim_plus)
{
char tamanyo_consola2[80];
int tam_x=0,tam_y=0;
tam_x=3.8*dim_plus; /* con estos valores puedes*/
tam_y=2*dim_plus ;/*cambiar el tamaño de la consola*/
sprintf(tamanyo_consola2, "MODE %d,%d", tam_x, tam_y);
system(tamanyo_consola2);
system ("cls");
}
/************** FUNCION ASIGNACION DE MEMORIA **************/
char **asig_memoria(int dim_plus )
{
int i;
char** matriz;
matriz = malloc( dim_plus * sizeof *matriz );
for( i = 0; i < dim_plus; ++i )
matriz[i] = malloc( dim_plus * sizeof **matriz );
return matriz;
}
/************** FUNCION IMPRIMIR **************/
void imprimir(char **matriz,int dim_plus,int color_juego)
{
int i=0,j=0;
system ("cls");
for (i=0;i<dim_plus;i++)
{
for (j=1;j<dim_plus;j++)
{
if (i==0)
{
printf ("[%d] ",j);
fflush (stdout);
}
else
{
printf ("(%c) ",matriz[i][j]);
fflush (stdout);
}
}
puts("");
}
}
/************** FUNCION COMPROBAR GANADOR **************/
void comprobar_ganador (char **matriz , int jugador, int x, int y,int dim_plus,int color_juego)
{
int k=1,cont=1;
for (k=1;k<5;k++)
{
if ( x+k <= dim_plus && y+k <= dim_plus && matriz[x][y]==matriz[x+k][y+k])
contador (&cont, matriz,jugador,dim_plus, color_juego);
else
break;
}
for (k=1;k<5;k++)
{
if ( x+k > 0 && y+k > 0 && matriz[x][y]==matriz[x-k][y-k])
contador (&cont, matriz,jugador,dim_plus, color_juego);
else
break;
}
cont=1;
for (k=1;k<5;k++)
{
if ( x+k <= dim_plus && y+k > 0 && matriz[x][y]==matriz[x+k][y-k])
contador (&cont, matriz,jugador,dim_plus, color_juego);
else
break;
}
for (k=1;k<5;k++)
{
if ( x+k > 0 && y+k <= dim_plus && matriz[x][y]==matriz[x-k][y+k])
contador (&cont, matriz,jugador,dim_plus, color_juego);
else
break;
}
cont=1;
for (k=1;k<5;k++)
{
if ( x+k <= dim_plus && matriz[x][y]==matriz[x+k][y])
contador (&cont, matriz,jugador,dim_plus, color_juego);
else
break;
}
cont=1;
for (k=1;k<5;k++)
{
if ( y+k <= dim_plus && matriz[x][y]==matriz[x][y+k])
contador (&cont, matriz,jugador,dim_plus, color_juego);
else
break;
}
for (k=1;k<5;k++)
{
if (y+k > 0 && matriz[x][y]==matriz[x][y-k] )
contador (&cont, matriz,jugador,dim_plus, color_juego);
else
break;
}
}
/************** FUNCION LIBERAR MEMORIA **************/
void liberar_mem_matriz( char** matriz, int dim_plus )
{
int i;
for( i = 0; i < dim_plus; ++i )
free( matriz[i] );
free( matriz );
}
/************** FUNCION CONTADOR **************/
void contador(int* cont,char** matriz,int jugador, int dim_plus, int color_juego)
{
int gana_empata=1;
*cont=+*cont+1;
if (*cont==4)
{
imprimir( matriz, dim_plus+1, color_juego);
ganador (matriz,jugador,dim_plus, color_juego,gana_empata);
}
}
/************** FUNCION GANADOR **************/
void ganador (char** matriz,int jugador, int dim_plus, int color_juego,int gana_empata)
{
if (gana_empata==1)
printf ("Ganó el JUGADOR %d\n",jugador);
else if (gana_empata==0)
puts("EMPATE");
else
puts("¡ERROR!");
puts ("Hasta lueguito.");
salir( matriz, dim_plus );
}
/************** FUNCION SALIR **************/
void salir( char** matriz, int dim_plus )
{
int i;
for( i = 0; i < dim_plus; ++i )
free( matriz[i] );
free( matriz );
system ("pause");
exit (0);
}
/************** FIN **************/
Cita de: mr.blood en 10 Junio 2013, 19:11 PM
Dice lo de los dos getchar(); por la basura que deja scanf en el buffer de entrada. Eso puede arreglarse con fflush(stdin); aunque yo uso setbuffer(stdin, 0, 0);
while (getchar()!='\n');
Cita de: OmarHack en 10 Junio 2013, 18:56 PM
.........................................................
Para ver los resultados del programa pon antes del return lo siguiente:
getchar();
getchar();
si no pones los getchar(); no se te va a ver el programa porque desaparece muy rápido nada más mostrar el texto en pantalla.
puts ("\n\nPresione ENTER para salir");
getchar();
Cita de: daryo en 10 Junio 2013, 16:56 PM
aca tienes un ejemplo en c++
#include<stdio.h>
int main()
{
char Palabra[256];
int i = 0;
puts ("\Introduzca palabra o frase a cifrar:");
fgets (Palabra,255,stdin);
puts ("\nLa frase es:");
for (i = 0;Palabra[i]!='\0';i++)
printf("%c ",Palabra[i]);
puts ("\nCiframos la frase");
for (i = 0; Palabra[i]!='\0';i++)
{
Palabra[i]+=i;
printf("%c ",Palabra[i]);
}
puts ("\n\nDesiframos la frase");
for (i = 0; Palabra[i]!='\0';i++)
{
Palabra[i]-=i;
printf("%c ",Palabra[i]);
}
puts ("\n\nPresione ENTER para salir");
getchar();
return 0;
}