elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
29 Mayo 2012, 00:52  


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse)
| | |-+  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 1,659 veces)
Saberuneko


Desconectado Desconectado

Mensajes: 1.234


The Furry Geek


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

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
#include <stdio.h>
main()
{
char opcion;
int a=0,b=0,c=0,ap,bp,cp,x;
  printf("Introduzca un trayecto\n");
  opcion=getchar();
  printf("Introduzca cantidad\n");
scanf("%d",&x);
  while(opcion!='$')
  {
  switch(opcion)
  {
  case 'a':
      a=a+x;
       break;
     case 'b':
    b=b+x;
        break;
     case 'c':
  c=c+x;
        break;
     default:
      printf("Opcion erronea\n");
  }
        printf("Introduzca un trayecto\n");
opcion=getchar();
  printf("Introduzca cantidad\n");
scanf("%d",&x);
  }
  ap=a*6;
  bp=b*12;
  cp=c*18;
  printf("\tNºBILLETES\tTOTAL EUROS");
  printf("A\t%d\t%d",a,ap);
  printf("B\t%d\t%d",b,bp);
  printf("C\t%d\t%d",c,cp);
}

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
#include <stdio.h>
main()
{
int cont,actual,n,res5,res3;
  printf("Introduzca n\n");
  scanf("%d",&n);
  for(actual=1;actual<=n;actual++)
  {
  res5=0;
     res3=0;
     while(cont<=actual/2)
     {
      if(actual%cont==0)
        {
        res5=res5*cont;
           res3=res3+cont;
        }
     }
     if(res5%5==0)
     {
        printf("El producto de los divisores de %d es multiplo de 5\n",actual);
     }
     else
     {
        printf("El producto de los divisores de %d no es multiplo de 5\n",actual);
     }
     if(res3%3==0)
     {
        printf("La suma de los divisores de %d es multiplo de 3\n",actual);
     }
     else
     {
        printf("La suma de los divisores de %d no es multiplo de 3\n",actual);
  }
     if ((res5%5==0)&&(res3%3==0))
     {
        printf("Cumplen ambas condiciones anteriores a la vez\n");
     }
     else
     {
        printf("No cumplen ambas condiciones anteriores a la vez\n\n");
     }
  }
}

Gracias por adelantado y un saludo, miau!


En línea

MIAU! <3
Shell Root


Desconectado Desconectado

Mensajes: 2.456


Alex Jurado


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

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
#include <stdio.h>
 
int main(){
 
 char sOption;
 int sCant = 0;
 int a = 0; int b = 0; int c = 0;
 int aT = 0; int bT = 0; int cT = 0;
 
 while(sOption != '$'){
   printf("Introduzca un trayecto:\n");
   scanf("%c", &sOption);
   printf("Introduzca cantidad:\n");
   scanf("%d", &sCant);
   switch(sOption){
     case 'a':
       a = a + sCant;
       break;
     case 'b':
       b = b + sCant;
       break;
     case 'c':
       c = c + sCant;
       break;
     default:
       printf("Error.\n");
  }
 }
 aT = a * 6;
 bT = b * 12;
 cT = c * 18;
 
 printf("\tNºBILLETES\tTOTAL EUROS\n");
 printf("A\t%d\t\t%d\n", a, aT);
 printf("B\t%d\t\t%d\n", b, bT);
 printf("C\t%d\t\t%d\n", c, cT);
 
 return 0;
}

Resultado,
Código
alex@alex:~/Escritorio$ gcc PoC.c
alex@alex:~/Escritorio$ ./a.out
Introduzca un trayecto:
a
Introduzca cantidad:
3
 
$
 
NºBILLETES TOTAL EUROS
A 3 18
B 0 0
C 0 0


En línea

---
diskontrol

Desconectado Desconectado

Mensajes: 60


RAWR!


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

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: 1.234


The Furry Geek


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

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

Código
#include <stdio.h>
main()
{
char opcion;
int a=0,b=0,c=0,ap,bp,cp,x;
  printf("Introduzca un trayecto\n");
  scanf("%c",&opcion);
  while (opcion!='a'&& opcion!='b'&& opcion!='c' && opcion!='$')
  {
     printf("Opcion erronea\n");
     printf("Introduzca un trayecto\n");
     scanf("%c",&opcion);
  }
  while(opcion!='$')
  {
     printf("Introduzca cantidad\n");
  scanf("%d",&x);
     getchar();
  switch(opcion)
  {
  case 'a':
      a=a+x;
       break;
     case 'b':
    b=b+x;
        break;
     case 'c':
  c=c+x;
        break;
     default:
      printf("Opcion erronea\n");
  }
     printf("Introduzca un trayecto\n");
     scanf("%c",&opcion);
     while (opcion!='a'&& opcion!='b'&& opcion!='c' && opcion!='$')
     {
      printf("Opcion erronea\n");
        printf("Introduzca un trayecto\n");
        scanf("%c",&opcion);
     }
  }
  ap=a*6;
  bp=b*12;
  cp=c*18;
  printf("\tN BILLETES\tTOTAL EUROS\n");
  printf("A:\t%d\t\t%d\n",a,ap);
  printf("B:\t%d\t\t%d\n",b,bp);
  printf("C:\t%d\t\t%d\n",c,cp);
return 0;
}

El otro:

Código
#include <stdio.h>
main()
{
int cont,actual,n,res5,res3,a=0,b=0,c=0;
  printf("Introduzca n\n");
  scanf("%d",&n);
  for(actual=2;actual<=n;actual++)
  {
  res5=1;
     res3=0;
     cont=2;
     while(cont<=actual)
     {
      if(actual%cont==0)
        {
        res5=res5*cont;
           res3=res3+cont;
        }
        cont=cont+1;
     }
     if(res5%5==0)
        a=a+1;
     if(res3%3==0)
        b=b+1;
  if ((res5%5==0)&&(res3%3==0))
        c=c+1;
  }
  printf("El producto de los divisores es multiplo de 5:\n%d\n",a);
  printf("La suma de los divisores es multiplo de 3:\n%d\n",b);
  printf("Cumplen ambas condiciones anteriores a la vez:\n%d\n",c);
  return 0;
}

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

MIAU! <3
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 »
Ejercicios
soplo 25 73,130 Último mensaje 21 Marzo 2011, 21:15
por hackvj
Ejercicios en C
Ejercicios
soplo 0 50,902 Último mensaje 2 Julio 2004, 00:28
por soplo
Ejercicios C++
Ejercicios
soplo 0 78,710 Último mensaje 5 Julio 2004, 06:08
por soplo
Ejercicios de ASP
Ejercicios
Cobac 0 11,223 Último mensaje 9 Julio 2004, 07:12
por Cobac
Ejercicios PHP
Ejercicios
Azielito 0 37,060 Último mensaje 17 Julio 2004, 10:53
por Azielito
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines