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

#1
Cita de: Cromatico en 25 Octubre 2013, 21:40 PM
if (num>=1 && num<=5)

    {
    scanf("%d", &num);
    resultado = resultado + num;
   
  }


Primero no deberias sumar?

Saludos!


EDIT: Si comprendes esa partesita del codigo, te das cuenta que  estas pidiendo de nuevo un numero, antes de sumar el anterior :P
De todos modos suele pasar que empecinarte mucho con un problema, te aleje cada vez mas de la solucion, que en este caso era muy simple jajaja, salduos y suerte!

Me temo que eso no ha solucionado el problema amigo, pero de todos modos me has dado una idea con la que he logrado perfeccionar el código de manera que funcione como debería con la pega de que si introduzco un numero superior a 5 lo cuenta, cosa que no quiero que suceda...

#include <stdio.h>
#include <math.h>
int main(void)
{
int num=1, resultat=0;
printf("Dime el numero que quieres introducir (Entre 1 y 5)\n");




while (resultat <= 21){

if (num>=1 && num<=5)

    {
     scanf("%d", &num);
     resultat = resultat + num;


   }
   else if (num > 5){
       printf("No se pueden introducir numeros mayores a 5 ni menores a 1\n");
       scanf("%d", &num);
               }

}

printf("%d, Mayor que 21...¡Te has pasado!, ultimo numero introducido %d", resultat, num);

return 0;

}

Detectas algún problema? quizás es sencillamente un fallo de estructura y no lo sé ver,  pero vamos que el problema reside en else if seguramente, el caso es que no tengo ni idea de que hacer con el para que funcione adecuadamente
#2
Problema con la lectura de una variable por parte de while

Hola!

Me encuentro aprendiendo C autodidactemente y voy haciendo ejercicios que voy encontrando por ahí (Con su teoría, obviamente).

El caso es que tengo que hacer un programa que me pida números entre 1 y 5 (Y avisarle si no es así y volver a pedirle un numero) y en cuanto la suma de estos supere 21 me avise imprimiendo el numero total y el ultimo numero introducido, el programa funciona, pero el caso es que no tiene en cuenta el primer numero que le introduzco, y no consigo sacar en claro y el motivo y probablemente me este empecinando mucho y no veo el evidente error.

Aquí va el código:

#include <stdio.h>
#include <math.h>
int main(void)
{
int num=0, resultado=0;
printf("Dime el numero que quieres introducir (Entre 1 y 5)");
scanf("%d", &num);

if (num > 5){
   printf("No se pueden introducir numeros mayores a 5 ni menores a 1");
   scanf("%d", &num);
   }

while (resultado < 21)
{

if (num>=1 && num<=5)

    {
     scanf("%d", &num);
     resultado = resultado + num;
   
   }

}

printf("%d, Mayor que 21...¡Te has pasado!, ultimo numero introducido %d", resultado, num);

return 0;

}

Alguna idea?

Muchas gracias por su atención y ayuda  :D
#3
Cita de: Eternal Idol en 17 Octubre 2013, 14:10 PM
Llama a getchar pero no le asignes su resultado a letra (asi estaras obteniendo el salto de linea pero no poniendolo en letra).

Vaya!!! Siempre cometo errores en las cosas que parecen mas simples, pero bueno, seguiré aprendiendo...

Muchísimas gracias por la respuesta!  ;D  ;-)
#4


Hola!! Este es mi primer mensaje aquí puesto que hace menos de un mes que he empezado a aprender C, y me topo con algunos problemas que me son un tanto complicados de arreglar, aunque muchas veces estos una vez vistos parecen tonterías....

Bueno, el caso es que me encontraba haciendo un programa que me indicara letras Mayusculas y minisculas, al parecerme un tanto fácil, he decidido complicarlo un poco mas y añadirle que me pide 8 caracteres y que me indique de nuevo si son mayusculas o no con la función while, tal que así.

#include <stdio.h>
#include <math.h>
int main(void)

{

      int numero=0;
      char letra;



      while (numero <= 7){


   printf("Introduce la letra\n");
      scanf("%c", &letra);
             letra = getchar();                
                     numero++;




      if (letra >= 'a' && letra <= 'z')

       {

         printf("Las letras son minusculas\n");
       }


       else if (letra>='A' && letra<='Z')

       {
         printf("Las letras son mayusculas\n");
       }

        else

       {
         printf("No son letras\n");
       }

       }

      return 0;

}

----------------

Me pide los 8 caracteres pero no me indica si las letras son mayusculas y minusculas, en cambio si le quito el getchar si que me lo pide pero al detectarme el enter... pues me salta dos lineas por lo que es un desastre, ¿Utilizo mal el getchar o es la estructura del programa?