[Curso] Introducción a la programación en C (VII)

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06

Puzky
Experto
Experto
Mensajes: 825
Registrado: 07 Oct 2009, 22:09
PSN ID: Puzky

Re: [Curso] Introducción a la programación en C (VII)

Mensaje por Puzky »

El primero, los %f se me olvido cambiarlos por $d
Spoiler:

Código: Seleccionar todo

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

int main(int argc, char *argv[])
{
  //Variable
  int numero;
  //Escaneo de datos
  printf("Introduce un numero entre el 1 y el 100: ");
  scanf("%f", &numero);
  //Condicionales
  numero = numero/10;
 
  switch(numero)
  {
    case 0:
         printf("El %d esta en la primera decena", numero);
         break;
    case 1:
         printf("El %d esta en la segunda decena", numero);
         break;
    case 2:
         printf("El %d esta en la tercera decena", numero);
         break;
    case 3:
         printf("El %d esta en la cuarta decena", numero);
         break;
    case 4:
         printf("El %d esta en la quinta decena", numero);
         break;
    case 5:
         printf("El %d esta en la sexta decena", numero);
         break;
    case 6:
         printf("El %d esta en la septima decena", numero);
         break;
    case 7:
         printf("El %d esta en la octava decena", numero);
         break;
    case 8:
         printf("El %d esta en la novena decena", numero);
         break;
    case 9:
         printf("El %d esta en la decima decena", numero);
         break;
    case 10:
         printf("EL 100 =P");
         break;
    default:
         printf("Entre el 1 y el 100, Dahh!!!");
}
  return 0;
}


Ahi esta el segundo, puse el espacio y se soluciono el problema con el default, pero no supe como arreglar que me saliera el resultado usando los numeros asi que cambie por los signos

Spoiler:

Código: Seleccionar todo

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

int main(int argc, char *argv[])
{
    //Variables
    int num1, num2;
    char ope;
    //Escaneo de datos
    printf("Escribe un numero: ");
    scanf("%d", &num1);
    printf("Escribe otro numero: ");
    scanf("%d", &num2);
    printf("Que operacion deseas realizar?  (+, -, *, /)");
    scanf(" %c", &ope);
    //Opciones de operaciones
   
    switch(ope)
{
    case '+':
         printf("El resultado es: %d", num1 + num2);
         break;
    case '-':
         printf("El resultado es: %d", num1 - num2);
         break;
    case '*':
         printf("El producto es: %d", num1 * num2);
         break;
    case '/':
         printf("El resultado es: %d", num1/num2);
         break;
    default:
         printf("Solo es para operaciones basicas si buscas algo mas compleja usa la calculadora =P");
         break;
}
  return 0;
}

Avatar de Usuario
finfantasy
Habitual
Habitual
Mensajes: 153
Registrado: 15 Oct 2009, 19:00

Re: [Curso] Introducción a la programación en C (VII)

Mensaje por finfantasy »

De eso se trata, los case de un switch tienen que ser todos los posibles resultados de la variable que introduces (o todos, o los que necesites, y los demás en el default).

Puzky
Experto
Experto
Mensajes: 825
Registrado: 07 Oct 2009, 22:09
PSN ID: Puzky

Re: [Curso] Introducción a la programación en C (VII)

Mensaje por Puzky »

Ok, apuntado. Listo para el VIII... :D

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VII)

Mensaje por m0skit0 »

El primero sigue estando mal

m0skit0 escribió:Tu problema es que ahora si yo introduzco el 105, me dirá: EL 100 =P, cuando debería decirme: Entre el 1 y el 100, Dahh!!!


El segundo:

Código: Seleccionar todo

switch(ope)
{
    case '1':
         printf("El resultado es: %d", num1 + num2);
         break;
    case '2':
         printf("El resultado es: %d", num1 - num2);
         break;
    case '3':
         printf("El producto es: %d", num1 * num2);
         break;
    case '4':
         printf("El resultado es: %d", num1/num2);
         break;
    default:
         printf("Solo es para operaciones basicas si buscas algo mas compleja usa la calculadora =P");
         break;
}

Además, la división se muestra mal.
Imagen

Puzky
Experto
Experto
Mensajes: 825
Registrado: 07 Oct 2009, 22:09
PSN ID: Puzky

Re: [Curso] Introducción a la programación en C (VII)

Mensaje por Puzky »

Profe a mi no me pasa eso en el primer ejercicio. Y en el segundo no entendi bien el problema :?

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VII)

Mensaje por m0skit0 »

Resultado de ejecutar tu primer programa:

Código: Seleccionar todo

m0skit0@sodiet:~/Temp$ ./prueba
Introduce un numero entre el 1 y el 100: 105
Entre el 1 y el 100, Dahh!!!m0skit0@sodiet:~/Temp$ ./prueba
Introduce un numero entre el 1 y el 100: 100
Entre el 1 y el 100, Dahh!!!m0skit0@sodiet:~/Temp$ ./prueba
Introduce un numero entre el 1 y el 100: 99
Entre el 1 y el 100, Dahh!!!m0skit0@sodiet:~/Temp$ ./prueba
Introduce un numero entre el 1 y el 100: 90
Entre el 1 y el 100, Dahh!!!m0skit0@sodiet:~/Temp$ ./prueba
Introduce un numero entre el 1 y el 100: 80
Entre el 1 y el 100, Dahh!!!m0skit0@sodiet:~/Temp$ ./prueba
Introduce un numero entre el 1 y el 100: 6
Entre el 1 y el 100, Dahh!!!m0skit0@sodiet:~/Temp$

Es decir, funciona mal

En el segundo, te he puesto cómo tienes que hacerlo para que te acepte 1 2 3 4 como opciones. Tienes que marcarlos como caracteres, tal y como has hecho con los simbolitos esos que has puesto.
Imagen

Avatar de Usuario
brujitosexy
Experto
Experto
Mensajes: 1097
Registrado: 03 Sep 2009, 19:30

Re: [Curso] Introducción a la programación en C (VII)

Mensaje por brujitosexy »

Puzky escribió:Profe a mi no me pasa eso en el primer ejercicio. Y en el segundo no entendi bien el problema :?

1ro Es que no esta especificando en que decena esta esa cantidad.

Código: Seleccionar todo

case 10:
         printf("EL 100 =P");
         break;

Deberias de hacerlo como lo hacias en los anteriores. ;)

Código: Seleccionar todo

case 9:
    printf("Esta en la 10ma decena\n");
    break;

2do No es necesario poner.

Código: Seleccionar todo

#include <stdlib.h>

Por que no la enmumera, para que te puedas funcionar mejor :?:
Aunque es uno de los objetivos de este ejercicios.

Código: Seleccionar todo

printf("Que operacion deseas realizar?  (+, -, *, /)");


Y como resolviste en capitulo anteriores la división o la misma media:?:
Es bueno dar repasaditas a capitulos ya pasados, para obtener mejores resultados en los siguientes capitulos. ;)
Linus Torvalds:
“El Software es como el sexo; es mejor cuando es gratis…”

Puzky
Experto
Experto
Mensajes: 825
Registrado: 07 Oct 2009, 22:09
PSN ID: Puzky

Re: [Curso] Introducción a la programación en C (VII)

Mensaje por Puzky »

Al intentar poner la variable como float me aparece error

Código: Seleccionar todo

//Variable
  float numero

14 C:\Documents and Settings\ANGELICA\Escritorio\Curso C\VII\main.c switch quantity not an integer

Supongo que estando con float se resolveria ese problema del 105 ya que toma en cuenta los decimales pero no puedo compilar :cry:

Avatar de Usuario
m0skit0
Administrador
Administrador
Mensajes: 5585
Registrado: 03 Sep 2009, 09:35
Ubicación: 0xdeadbeef

Re: [Curso] Introducción a la programación en C (VII)

Mensaje por m0skit0 »

Puzky escribió:Al intentar poner la variable como float me aparece error

Si la pones como float tendrías que considerar todos los casos: 0, 0.1, 0.2, 0.3, 0.4, etc...

Puzky escribió:Supongo que estando con float se resolveria ese problema del 105 ya que toma en cuenta los decimales pero no puedo compilar :cry:

Cierto, pero estás enfocando el problema de forma incorrecta. Tienes una solución mucho más sencilla.
Imagen

Avatar de Usuario
brujitosexy
Experto
Experto
Mensajes: 1097
Registrado: 03 Sep 2009, 19:30

Re: [Curso] Introducción a la programación en C (VII)

Mensaje por brujitosexy »

Puzky escribió:Al intentar poner la variable como float me aparece error

Código: Seleccionar todo

//Variable
  float numero

14 C:\Documents and Settings\ANGELICA\Escritorio\Curso C\VII\main.c switch quantity not an integer

Supongo que estando con float se resolveria ese problema del 105 ya que toma en cuenta los decimales pero no puedo compilar :cry:

1ro- La solución es mucho más sencillas de lo que crees, mira como hiciste estas partes.

Código: Seleccionar todo

    case 8:
         printf("El %d esta en la novena decena", numero);
         break;
    case 9:
         printf("El %d esta en la decima decena", numero);
         break;

En que decena esta el 90, 91, 92,..,99 :?: En la 10ma decena :?: Cierto :?:
Y el 100, 101, 102,...105,..109 en que decena deberia estar :?: Ahi esta ya la solución del 1er ejercicio. :ugeek:
Linus Torvalds:
“El Software es como el sexo; es mejor cuando es gratis…”

Responder