Problemas en C

Iniciado por Orb, 15 Noviembre 2015, 20:21 PM

0 Miembros y 1 Visitante están viendo este tema.

Orb

Me puse a probar cosas e intente hacer un programa que te pidiera nombre apellido y edad, y si la edad estaba comprendida entre 18 y 22 devolvia tu nombre por pantalla.

#include <stdio.h>


char nombre;
char apellidos;
int edad;
int main (void)
{
printf ("Introduzca su nombre");
scanf ("%s", &nombre);
printf ("Introduzca sus apellidos");
scanf ("%s", &apellidos);
printf ("Por último introduzca su edad");
scanf ("%n", &edad);
if ((edad>18) && (edad<=22))
printf ("%s", &nombre);
else
printf ("No cumple los requisitos");
}


Tuve que poner

if ((edad>18) && (edad<=22))

porque si ponia if ((edad=>18) && (edad<=22))

me devolvia el siguiente error ;

error: expected expression before '>' token
if ((edad=>18) && (edad<=22))

Decidí quitar el = y probar a ver, y el problema llega cuando compilo, ejecuto , pregunta nombre, introduzco, pide apellido , lo pongo y me sale al lado, introducir la edad pegado de no cumple los requisitos.

¿Alguien podria ayudarme?

A.I.


iUDEX

#2
Como diría @A.I. tendrías que usar %d en vez de %n.

Citarporque si ponia if ((edad=>18) && (edad<=22))

me devolvia el siguiente error ;

error: expected expression before '>' token
if ((edad=>18) && (edad<=22))

El signo está mal. Es:

if ((edad>=18) && (edad<=22))

Además creo que tienes que especificar la longitud de los char:

char nombre[10], apellidos[10];
Namasté, criatura.

v4char

te he hecho un programa pero en apellidos no puedes poner espacios porque si no te lo detecta como otra y salta
Código (cpp) [Seleccionar]
#include <stdio.h>

int main()
{
  char nombre[20];
  char apellidos[40];
  int edad;
 
  printf("Nombre: ");
  scanf("%20s", nombre);

  printf("Apellidos: ");
  scanf("%40s", apellidos);

  printf("Edad: ");
  scanf("%i", &edad);

  if (18 > edad > 22)
  {
     printf("Hola %s %s", nombre, apellidos);
  } else
  {
     printf("No cumples los requisitos");
  }

  return 0;
}

MAFUS

Prueba con esto:

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

int main() {
   char nombre[20];
   char apellidos[40];
   int edad;

   printf("Nombre: ");
   fgets(nombre, 19, stdin);
   *strchr(nombre, '\n') = '\0';
   printf("Apellidos: ");
   fgets(apellidos, 39, stdin);
   *strchr(apellidos, '\n') = '\0';
   printf("Edad: ");
   scanf("%i", &edad);

   if (edad >= 18 && edad <= 22) {
      printf("Hola %s %s", nombre, apellidos);
   }
   else {
      printf("No cumples los requisitos");
   }

   return 0;
}

Con fgets lees toda la cadena de entrada hasta pulsar ENTER y recoge hasta un máximo de caracteres que le has informado como último parámetro de la función.
Cómo también lee el carácter de nueva línea debes convertirlo en carácter nulo, y eso es lo que hace la línea donde se encuentra la función strchr.