Autor
|
Tema: Dos Ejercicios en C (Leído 6,034 veces)
|
Saberuneko
|
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: #include <stdio.h> main() { char opcion; int a=0,b=0,c=0,ap,bp,cp,x; printf("Introduzca un trayecto\n"); printf("Introduzca cantidad\n"); while(opcion!='$') { switch(opcion) { case 'a': a=a+x; break; case 'b': b=b+x; break; case 'c': c=c+x; break; default: } printf("Introduzca un trayecto\n"); printf("Introduzca cantidad\n"); } ap=a*6; bp=b*12; cp=c*18; printf("\tNºBILLETES\tTOTAL EUROS"); }
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 vezEsto 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: #include <stdio.h> main() { int cont,actual,n,res5,res3; 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
|
|
|
|
Shell Root
|
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... #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"); printf("Introduzca cantidad:\n"); switch(sOption){ case 'a': a = a + sCant; break; case 'b': b = b + sCant; break; case 'c': c = c + sCant; break; default: } } 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, 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
|
Te vendería mi talento por poder dormir tranquilo.
|
|
|
diskontrol
Desconectado
Mensajes: 89
RAWR!
|
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
|
Ahora tienen pinta de funcionar, así me han quedado: #include <stdio.h> main() { char opcion; int a=0,b=0,c=0,ap,bp,cp,x; printf("Introduzca un trayecto\n"); while (opcion!='a'&& opcion!='b'&& opcion!='c' && opcion!='$') { printf("Introduzca un trayecto\n"); } while(opcion!='$') { printf("Introduzca cantidad\n"); switch(opcion) { case 'a': a=a+x; break; case 'b': b=b+x; break; case 'c': c=c+x; break; default: } printf("Introduzca un trayecto\n"); while (opcion!='a'&& opcion!='b'&& opcion!='c' && opcion!='$') { printf("Introduzca un trayecto\n"); } } 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: #include <stdio.h> main() { int cont,actual,n,res5,res3,a=0,b=0,c=0; 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
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Pantallazos de ejercicios ejercicios 1 y 2
« 1 2 3 »
Ejercicios
|
soplo
|
25
|
98,508
|
21 Marzo 2011, 21:15 pm
por hackvj
|
|
|
Ejercicios en C
Ejercicios
|
soplo
|
0
|
65,005
|
2 Julio 2004, 00:28 am
por soplo
|
|
|
Ejercicios C++
Ejercicios
|
soplo
|
0
|
91,332
|
5 Julio 2004, 06:08 am
por soplo
|
|
|
Ejercicios de ASP
Ejercicios
|
Cobac
|
0
|
18,126
|
9 Julio 2004, 07:12 am
por Cobac
|
|
|
Ejercicios PHP
Ejercicios
|
Azielito
|
0
|
45,488
|
17 Julio 2004, 10:53 am
por Azielito
|
|