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 - Almapa

#91
Mira a ver que te parece este código, he modificado el tuyo tal cual lo pide en el enunciado, con las funciones que pide y los parámetros que utiliza cada función.

Código (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define CIFRAS 3
int resultado[2];
char num[10]={'0','1','2','3','4','5','6','7','8','9'};
int aleatorio();
void leer_combinacion(int *v1,int *v2,int *v3);
int compara (int v1,int v2,int v3, char cadena[]);



////Función main
int main()
{
//Definiión de variables    
time_t t;
int v1,v2,v3;
int i,j,azar,intentos,repetida,jugar=1,ola;
char cadena[CIFRAS];
char jugada[CIFRAS];
char volver_jugar;
 

intentos=repetida=azar=0;
srand((unsigned)time(&t));

//Bucle con la función aleatorio para generar la solución
for(i=0;i<CIFRAS;i++)
{
  cadena[i]=num[aleatorio()];
}

printf("\nLa combinación aleatoria es: ");
for(j=0;j<CIFRAS;j++) printf("%c ",cadena[j]);

//Bucle para obtener las entradas del jugador y comprobar si son correctas.
while (jugar==1)
{
  intentos++;
  leer_combinacion(&v1,&v2,&v3);
 
  printf("\nTu jugada es: ");
  printf("\n%i %i %i ",v1,v2,v3);
  compara(v1,v2,v3,cadena);

 
  if(resultado[0]==CIFRAS) printf("\n\nENHORABUENA! HAS GANADO!(%d intentos)\n",intentos);
  else
  {
      printf("\n\nOTRA PARTIDA<S/N>?");
      scanf("%c",&volver_jugar);
      fflush(stdin);
      if (volver_jugar=='S' || volver_jugar=='s') jugar=1;
      else jugar=0;
  }
}
 
system("pause");
return 0;
}


//// Función aleatorio

int aleatorio()
{
  return (rand()%10);
}

//// Función compara
int compara(int v1,int v2,int v3, char cadena[])
{
   
  int i;
  int jugada;
  for (i=0;i<CIFRAS;i++)
  {
      if (i==0) jugada=atoi(&cadena[i])/100; else if (i==1) jugada=atoi(&cadena[i])/10; else jugada=atoi(&cadena[i]);
      if (jugada==v1)
      {
      if (i==0) {printf("verde");resultado[0]++;} else {printf("amarillo");resultado[1]++;}
      }
      if (jugada==v2)
      {
      if (i==1) {printf("verde");resultado[0]++;} else {printf("amarillo");resultado[1]++;}
      }
      if (jugada==v3)
      {
      if (i==2) {printf("verde");resultado[0]++;} else {printf("amarillo");resultado[1]++;}
      }
      if (jugada!=v1 && jugada!=v2 && jugada!=v3) printf("rojo");
  }
  return 1;
 
}

//// Función leer_combinación
void leer_combinacion(int *v1,int *v2,int *v3)
{
    int j;
    printf("\n\nIntroduce un numero, del 0 al 9");
    printf("\nNumero 1: ");
    scanf("%i",v1);
    printf("\nNumero 2: ");
    scanf("%i",v2);
    printf("\nNumero 3: ");
    scanf("%i",v3);
    fflush(stdin);
}
#92
Citar
Cita de: amchacon en  3 Abril 2013, 00:30 AM
Será sumar 2.

Sumar 2 también es una posibilidad, pero al multiplicar por 2 una variable que se va incrementando de 1 en 1 también proporciona los números pares.
#93
Hay varias opciones, puedes hacer un bucle "for" o "while" que te incremente una variable e ir comprobando si el residuo al dividirlo por 2 es cero, como dice amchacon o multiplicar dicha variable por 2 directamente con lo que te ahorras tiempo de cálculo y habrá muchas más formas de hacerlo.
El límite del bucle será que el número a imprimir como mucho sea 100
#94
Un par de cosas que he cambiado para poder hacerlo funcionar:
- La variable "letra", supongo que es lo que se ha definido previamente como num[6]
-Todos los bucles "for" en los que metes la variable "combinacion" debes poner "combinacion" pues de lo contrario no estarás recorriendo el array elemento a elemento.
- La línea "combinacion=letra[azar]; " durante la definición de la combinación aleatoria correcta, debe estar fuera del "while" pues si no se repite la letra debe asignarla también en la posición correspondiente.

Creo que eso es todo, a mi me funciona bien habiendo hecho esos cambios.

Un saludo.
#95
Efectivamente, con la siguiente línea si que obedece al día insertado

Código (cpp) [Seleccionar]
if (strcmp(dia,"sabado")==0||strcmp(dia,"martes")==0)descuento=montobruto*12.56/100;
#96
A mi me estaba dando fallos para pasar pagarporhora y montobruto de int a float, pero bueno si a ti te va bien, mejor.

Yo habiendo definido estas dos variables como float también y poniéndole:

Código (cpp) [Seleccionar]
system("pause");  // Para que no desaparezca la pantalla rápidamente

Habiendo incluido la librería iostream, si que obtengo el resultado. Creo que no hay ningún fallo.
#97
Scripting / Re: Ayuda a crear un archivo bat.
28 Marzo 2013, 18:25 PM
Mira a ver si esto te sirve para tu programa, sería para volver al mismo día y mismo mes del año pasado.

set dia=%date:~0,2%
set mes=%date:~3,2%
set /a año=%date:~6,4%-1
date %dia%/%mes%/%año%
start "Tu_programa.exe"

Saludos

#98
Programación C/C++ / Re: suma de ASCII
28 Marzo 2013, 12:04 PM
Efectivamente, como ha dicho Maik33 puedes utilizar la función strlen y a partir de ahí ya lo puedes programar como un bucle for:

Código (cpp) [Seleccionar]
while(!feof(archivo))
    {
        fscanf(archivo,"%[^\n]\n",cadena);
        l=strlen(cadena);
        for(i=0; i<l+1; i++)
        {
            suma=suma+cadena[i];
        }
    }


o como un while

Código (cpp) [Seleccionar]
while(!feof(archivo))
    {
        fscanf(archivo,"%[^\n]\n",cadena);
        l=strlen(cadena);
        while(i<=l)
        {
            suma=suma+cadena[i];
            i++;
        }
    }


Un saludo
#99
La estructura del "if"  es:

if (condition) statement

Por lo que para una categoría por ejemplo sería

if (la edad de la persona está dentro del rango) Precio=Precio_normal-descuento;

y así lo repites con cada una de las categorias. Si aún así te da errores escribe el código que tengas hasta el momento para así dar directamente con el error.
#100
Es un problema bastante fácil en cuanto a programar, inténtalo y si tienes problemas más específicos no dudes en preguntar, pues será el único modo de que aprendas.