elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Dos Ejercicios en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dos Ejercicios en C  (Leído 6,021 veces)
Saberuneko


Desconectado Desconectado

Mensajes: 2.194



Ver Perfil WWW
Dos Ejercicios en C
« en: 21 Enero 2011, 13:12 pm »

Bueno, ya empezamos con C en clase. Tengo hechos ya cuatro ejercicios, pero dos de ellos no consigo que funcionen bien, son los siguientes:

3.- En una estación de autobuses se requiere un programa que contabilice los billetes vendidos al cabo del día. Teniendo en cuenta que existen tres trayectos A,B,C cuyas tarifas con 6,12,18 € respectivamente.
El programa pedirá al viajero que introduzca el número de billetes que desea y el trayecto, finalizando la emisión de billetes al introducir $ en el trayecto. Una vez terminada dicha emisión, el programa visualizará:
NºBILLETES              TOTAL EUROS
A:..............                 ................
B:..............                 ................
C:.............                 .................


Esto es lo que tengo hasta el momento, no quiero que me lo resuelvan, sino que me digan qué está mal y me orienten un poco sobre qué hay que corregir sin decírmelo literalmente:

Código
  1. #include <stdio.h>
  2. main()
  3. {
  4. char opcion;
  5. int a=0,b=0,c=0,ap,bp,cp,x;
  6.   printf("Introduzca un trayecto\n");
  7.   opcion=getchar();
  8.   printf("Introduzca cantidad\n");
  9. scanf("%d",&x);
  10.   while(opcion!='$')
  11.   {
  12.   switch(opcion)
  13.   {
  14.   case 'a':
  15.       a=a+x;
  16.        break;
  17.      case 'b':
  18.     b=b+x;
  19.         break;
  20.      case 'c':
  21.   c=c+x;
  22.         break;
  23.      default:
  24.       printf("Opcion erronea\n");
  25.   }
  26.         printf("Introduzca un trayecto\n");
  27. opcion=getchar();
  28.   printf("Introduzca cantidad\n");
  29. scanf("%d",&x);
  30.   }
  31.   ap=a*6;
  32.   bp=b*12;
  33.   cp=c*18;
  34.   printf("\tNºBILLETES\tTOTAL EUROS");
  35.   printf("A\t%d\t%d",a,ap);
  36.   printf("B\t%d\t%d",b,bp);
  37.   printf("C\t%d\t%d",c,cp);
  38. }

4.- Programa que visualice cuantos números de los N primeros (N introducido por teclado) cumplen las siguientes condiciones:
- El producto de sus divisores es múltiplo de 5
- La suma de sus divisores es múltiplo de 3
- Cumple ambas condiciones anteriores a la vez


Esto es lo que tengo de momento, lo mismo que en el anterior, quiero ver dónde he fallado para intentar corregirlo, no quiero que me lo den hecho:

Código
  1. #include <stdio.h>
  2. main()
  3. {
  4. int cont,actual,n,res5,res3;
  5.   printf("Introduzca n\n");
  6.   scanf("%d",&n);
  7.   for(actual=1;actual<=n;actual++)
  8.   {
  9.   res5=0;
  10.      res3=0;
  11.      while(cont<=actual/2)
  12.      {
  13.       if(actual%cont==0)
  14.         {
  15.         res5=res5*cont;
  16.            res3=res3+cont;
  17.         }
  18.      }
  19.      if(res5%5==0)
  20.      {
  21.         printf("El producto de los divisores de %d es multiplo de 5\n",actual);
  22.      }
  23.      else
  24.      {
  25.         printf("El producto de los divisores de %d no es multiplo de 5\n",actual);
  26.      }
  27.      if(res3%3==0)
  28.      {
  29.         printf("La suma de los divisores de %d es multiplo de 3\n",actual);
  30.      }
  31.      else
  32.      {
  33.         printf("La suma de los divisores de %d no es multiplo de 3\n",actual);
  34.   }
  35.      if ((res5%5==0)&&(res3%3==0))
  36.      {
  37.         printf("Cumplen ambas condiciones anteriores a la vez\n");
  38.      }
  39.      else
  40.      {
  41.         printf("No cumplen ambas condiciones anteriores a la vez\n\n");
  42.      }
  43.   }
  44. }

Gracias por adelantado y un saludo, miau!


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Dos Ejercicios en C
« Respuesta #1 en: 21 Enero 2011, 17:55 pm »

Joder, hace mucho ratón que no programo en C. Pero recorte y organice un poco el código, no funciona correctamente, pero quizás te servirá de algo...
Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4.  
  5.  char sOption;
  6.  int sCant = 0;
  7.  int a = 0; int b = 0; int c = 0;
  8.  int aT = 0; int bT = 0; int cT = 0;
  9.  
  10.  while(sOption != '$'){
  11.    printf("Introduzca un trayecto:\n");
  12.    scanf("%c", &sOption);
  13.    printf("Introduzca cantidad:\n");
  14.    scanf("%d", &sCant);
  15.    switch(sOption){
  16.      case 'a':
  17.        a = a + sCant;
  18.        break;
  19.      case 'b':
  20.        b = b + sCant;
  21.        break;
  22.      case 'c':
  23.        c = c + sCant;
  24.        break;
  25.      default:
  26.        printf("Error.\n");
  27.   }
  28.  }
  29.  aT = a * 6;
  30.  bT = b * 12;
  31.  cT = c * 18;
  32.  
  33.  printf("\tNºBILLETES\tTOTAL EUROS\n");
  34.  printf("A\t%d\t\t%d\n", a, aT);
  35.  printf("B\t%d\t\t%d\n", b, bT);
  36.  printf("C\t%d\t\t%d\n", c, cT);
  37.  
  38.  return 0;
  39. }

Resultado,
Código
  1. alex@alex:~/Escritorio$ gcc PoC.c
  2. alex@alex:~/Escritorio$ ./a.out
  3. Introduzca un trayecto:
  4. a
  5. Introduzca cantidad:
  6. 3
  7.  
  8. $
  9.  
  10. NºBILLETES TOTAL EUROS
  11. A 3 18
  12. B 0 0
  13. C 0 0


En línea

Te vendería mi talento por poder dormir tranquilo.
diskontrol

Desconectado Desconectado

Mensajes: 89


RAWR!


Ver Perfil
Re: Dos Ejercicios en C
« Respuesta #2 en: 22 Enero 2011, 07:57 am »

A simple vista se ven un par de errores en el segundo ejercicio; por ejemplo el acumulador res5 debes inicializarlo a 1, o la variable cont que no esta inicializada ni es incrementada.

Saludos!
En línea

Siempre ten tus cosas cuando las necesites con @Dropbox. ¡Una cuenta de 2 GB es gratis! http://db.tt/YxRhsCI
Saberuneko


Desconectado Desconectado

Mensajes: 2.194



Ver Perfil WWW
Re: Dos Ejercicios en C
« Respuesta #3 en: 22 Enero 2011, 14:46 pm »

Ahora tienen pinta de funcionar, así me han quedado:

Código
  1. #include <stdio.h>
  2. main()
  3. {
  4. char opcion;
  5. int a=0,b=0,c=0,ap,bp,cp,x;
  6.   printf("Introduzca un trayecto\n");
  7.   scanf("%c",&opcion);
  8.   while (opcion!='a'&& opcion!='b'&& opcion!='c' && opcion!='$')
  9.   {
  10.      printf("Opcion erronea\n");
  11.      printf("Introduzca un trayecto\n");
  12.      scanf("%c",&opcion);
  13.   }
  14.   while(opcion!='$')
  15.   {
  16.      printf("Introduzca cantidad\n");
  17.   scanf("%d",&x);
  18.      getchar();
  19.   switch(opcion)
  20.   {
  21.   case 'a':
  22.       a=a+x;
  23.        break;
  24.      case 'b':
  25.     b=b+x;
  26.         break;
  27.      case 'c':
  28.   c=c+x;
  29.         break;
  30.      default:
  31.       printf("Opcion erronea\n");
  32.   }
  33.      printf("Introduzca un trayecto\n");
  34.      scanf("%c",&opcion);
  35.      while (opcion!='a'&& opcion!='b'&& opcion!='c' && opcion!='$')
  36.      {
  37.       printf("Opcion erronea\n");
  38.         printf("Introduzca un trayecto\n");
  39.         scanf("%c",&opcion);
  40.      }
  41.   }
  42.   ap=a*6;
  43.   bp=b*12;
  44.   cp=c*18;
  45.   printf("\tN BILLETES\tTOTAL EUROS\n");
  46.   printf("A:\t%d\t\t%d\n",a,ap);
  47.   printf("B:\t%d\t\t%d\n",b,bp);
  48.   printf("C:\t%d\t\t%d\n",c,cp);
  49. return 0;
  50. }

El otro:

Código
  1. #include <stdio.h>
  2. main()
  3. {
  4. int cont,actual,n,res5,res3,a=0,b=0,c=0;
  5.   printf("Introduzca n\n");
  6.   scanf("%d",&n);
  7.   for(actual=2;actual<=n;actual++)
  8.   {
  9.   res5=1;
  10.      res3=0;
  11.      cont=2;
  12.      while(cont<=actual)
  13.      {
  14.       if(actual%cont==0)
  15.         {
  16.         res5=res5*cont;
  17.            res3=res3+cont;
  18.         }
  19.         cont=cont+1;
  20.      }
  21.      if(res5%5==0)
  22.         a=a+1;
  23.      if(res3%3==0)
  24.         b=b+1;
  25.   if ((res5%5==0)&&(res3%3==0))
  26.         c=c+1;
  27.   }
  28.   printf("El producto de los divisores es multiplo de 5:\n%d\n",a);
  29.   printf("La suma de los divisores es multiplo de 3:\n%d\n",b);
  30.   printf("Cumplen ambas condiciones anteriores a la vez:\n%d\n",c);
  31.   return 0;
  32. }

Gracias por lo de iniciar res5 a 1 que ya me tenía loco. :3
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Pantallazos de ejercicios ejercicios 1 y 2 « 1 2 3 »
Ejercicios
soplo 25 98,440 Último mensaje 21 Marzo 2011, 21:15 pm
por hackvj
Ejercicios en C
Ejercicios
soplo 0 64,994 Último mensaje 2 Julio 2004, 00:28 am
por soplo
Ejercicios C++
Ejercicios
soplo 0 91,322 Último mensaje 5 Julio 2004, 06:08 am
por soplo
Ejercicios de ASP
Ejercicios
Cobac 0 18,102 Último mensaje 9 Julio 2004, 07:12 am
por Cobac
Ejercicios PHP
Ejercicios
Azielito 0 45,481 Último mensaje 17 Julio 2004, 10:53 am
por Azielito
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines