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

#21
Cita de: amchacon en 24 Febrero 2014, 21:53 PM
Código (cpp) [Seleccionar]
if (x != -1){
}

¿Para que es ese if? :huh:
La verdad, no lo se, solo supuse que como el anterior if filtra los mayores de 1 y menores de 5, pense que cuando metiera -1 del centinerla me mandaria al cuerno pero no lo he probado sin el.

Por cierto, el codigo de arriba no es el final, lo tuve que copiar mal o al pegarlo algo falló.
es este

/*Programa del libro, Tema 4
* ejercicio 4.19, pagina 123
* Programa de calculos de ventas usando switch*/

#include <stdio.h>

int main()
{
float a = 2.98;
float b = 4.50;
float c = 9.98;
float d = 4.49;
float e = 6.87;
int n = 0;
int x = 0;
float total;
float a1,b1,c1,d1,e1;
float a2,b2,c2,d2,e2;
a2=b2=c2=d2=e2= 0;
do{
printf("Ingrese el codigo de producto (-1 para salir): ");
scanf("%d", &x);
if (x >= 1 && x <= 5){
printf("Ingrese las unidades vendidas: ");
scanf("%d", &n);
}
switch (x){
case 1:
a1 = a*n;
a2 += a1;
break;
case 2:
b1 = b*n;
b2 += b1;
break;
case 3:
c1 = c*n;
c2 += c1;
break;
case 4:
d1 = d*n;
d2 += d1;
break;
case 5:
e1 = e*n;
e2 += e1;
break;
case -1:
break;
case '\n':
case '\t':
case ' ':
break;
default:
printf("Introdujo un codigo erroneo\n");
break;
} /*fin de switch*/
} /*fin de do*/
while (x != -1); /*condicion de do*/

total = a2+b2+c2+d2+e2;
printf("\nEl total vendido es %f \n", total);
return 0;

}



Sin esta linea, como comento en el comentario de arriba, el resultado a veces no es correcto

a2=b2=c2=d2=e2= 0;

Probare a comentar el if que me dices, haber que hace.

Lo edito sobre la marcha, funciona igual sin el if que comenta amchacon
#22
Yo tambien te recomendaria Manjaro, es muy amigable y a la vez completa, con systemd y pacman.

Ademas tambien tienes el repositorio yaourt que te puede salvar de mas de un dolor de cabeza  ;D

Ahora soy archero, pero he pasado por ubuntu muy velozmente y estuve en debian varios años y manjaro me parece la mejor opcion. Ademas llevan muchos escritorios para adelante asi que no te faltaran opciones.

Un saludo
#23
Bueno, aqui os vengo con el codigo final creo, almenos me funciona como creo que debe ser.

Al final he inicializado las variables "x2" por que algunas pruebas me daban resultados erroneos, creo que ese podia ser el problema.

Seguire haciendole pruebas haber si falla.




/*Programa del libro, Tema 4
* ejercicio 4.19, pagina 123
* Programa de calculos de ventas usando switch*/

#include <stdio.h>

int main()
{
float a = 2.98;
float b = 4.50;
float c = 9.98;
float d = 4.49;
float e = 6.87;
int n = 0;
int x = 0;
float total;
float a1,b1,c1,d1,e1;
float a2,b2,c2,d2,e2;

do{
printf("Ingrese el codigo de producto (-1 para salir): ");
scanf("%d", &x);
if (x >= 1 && x <= 5){
printf("Ingrese las unidades vendidas: ");
scanf("%d", &n);
if (x != -1){
}
}
switch (x){
case 1:
a1 = a*n;
a2 += a1;
break;
case 2:
b1 = b*n;
b2 += b1;
break;
case 3:
c1 = c*n;
c2 += c1;
break;
case 4:
d1 = d*n;
d2 += d1;
break;
case 5:
e1 = e*n;
e2 += e1;
break;
case -1:
break;
case '\n':
case '\t':
case ' ':
break;
default:
printf("Introdujo un codigo erroneo\n");
break;
} /*fin de switch*/
} /*fin de do*/
while (x != -1); /*condicion de do*/

total = a2+b2+c2+d2+e2;
printf("\nEl total vendido es %f \n", total);
return 0;

}




Un saludo y muchas gracias por la ayuda  ;-)
#24
Solo vengo a por ayuda cuando ya no doy mas de mi, asi para la proxima me acuerdo  ;-)

Deja que me acabe el café y sigo liado con el, sale (si || si ||  le prendo fuego) xD .


Un saludo
#25
Programación C/C++ / Re: Problema con ejercicio
24 Febrero 2014, 17:08 PM
CitarLo que comentas es cierto, pero el fallo del bucle infinito no es ese. El fallo es que una vez entra en el bucle while no sale nunca. ¿Porque? Fácil, no actualiza la variable x.

Por cierto, el bucle while sobra.

Saludos

Si es verdad eso, había probado mil cosas ya y asi quedo  :rolleyes:

Solo me viene un ejemplo de codigo en el libro que estoy siguiendo y en el usan caracteres, no caí en que usaba las comillas por eso  >:(

Al final ha terminado asi :


/*Programa del libro, Tema 4
* ejercicio 4.19, pagina 123
* Programa de calculos de ventas usando switch*/

#include <stdio.h>

int main()
{
float a = 2.98;
float b = 4.50;
float c = 9.98;
float d = 4.49;
float e = 6.87;
int n;
int x = 0;
float total;
float a1,b1,c1,d1,e1;
float a2,b2,c2,d2,e2;

do{
printf("Ingrese el codigo de producto (-1 para salir): ");
scanf("%d", &x);
printf("Ingrese las unidades vendidas: ");
scanf("%d", &n);

if (x != -1){
switch (x){
case 1:
a1 = a*n;
a2 += a1;
break;
case 2:
b1 = b*n;
b2 += b1;
break;
case 3:
c1 = c*n;
c2 += c1;
break;
case 4:
d1 = d*n;
d2 += d1;
break;
case 5:
e1 = e*n;
e2 += e1;
break;
case '\n':
case '\t':
case ' ':
break;
default:
printf("Introdujo un codigo erroneo\n");
break;
} /*fin de switch*/
} /*fin if*/
} /*fin de do*/
while (x != -1); /*condicion de do*/

total = a2+b2+c2+d2+e2;
printf("El total vendido es %f \n", total);
return 0;

}


Ya solo me queda evitar que tras introducir -1 del valor centinela no me pida la cantidad de productos. Sigo al lio con el, al final aprendere y todo  ;D



Gracias a los dos por la ayuda

Un saludo
#26
Programación C/C++ / Re: Problema con ejercicio
24 Febrero 2014, 16:49 PM
Ok, voy a probar y vengo a contar
;D
#27
No me fije k usas c++ en vez de c   :-X
#28
Programación C/C++ / [C] Problema con ejercicio
24 Febrero 2014, 16:38 PM
Hola de nuevo
Sigo estudiando c en mis ratos libres y ya voy avanzando, pero estoy teniendo problemas con un ejercicio de los primeros que estoy haciendo con switch, no termino de ver que hago mal ( que seran muchas cosas  ;D )
El ejercicio es este:



Y lo que tengo hecho luego de mil pruebas es esto otro:

/*Programa del libro, Tema 4
* ejercicio 4.19, pagina 123
* Programa de calculos de ventas usando switch*/

#include <stdio.h>

int main()
{
float a = 2.98;
float b = 4.50;
float c = 9.98;
float d = 4.49;
float e = 6.87;
int n;
int x = 0;
float total;
float a1,b1,c1,d1,e1;
float a2,b2,c2,d2,e2;

do{
printf("Ingrese el codigo de producto (-1 para salir): ");
scanf("%d", &x);
printf("Ingrese las unidades vendidas: ");
scanf("%d", &n);

while (x != -1){
switch (x){
case '1':
a1 = a*n;
a2 += a1;
printf("Llega asta aki almenos"); /*chekeo*/
break;
case '2':
b1 = b*n;
b2 += b1;
break;
case '3':
c1 = c*n;
c2 += c1;
break;
case '4':
d1 = d*n;
d2 += d1;
break;
case '5':
e1 = e*n;
e2 += e1;
break;
case '\n':
case '\t':
case ' ':
break;
default:
printf("Introdujo un codigo erroneo\n");
break;
} /*fin de switch*/
} /*fin while interno*/
} /*fin de do*/
while (x != -1); /*condicion de do*/

total = a2+b2+c2+d2+e2;
printf("El total vendido es %f \n", total);
return 0;

}


Cuando lo ejecuto, hace un ciclo infinito en printf("Itrodujo un codigo erroneo"), tal como este



Como si el valor de x no coincidiera con ningun case. La verdad que ya estoy hecho un lio  :rolleyes:

Gracias por adelantado  ::)
#29
No se si te entendi bien, pero creo que lo que buscas es esto

instalas
mingw-w64-gcc

y luego para compilar

i686-w64-mingw32-gcc

lo que seria un ejemplo real

i686-w64-mingw32-gcc prueba.c -o prueba.exe

Espero que fueras eso lo que buscabas :)
#30
Cita de: ivancea96 en  2 Febrero 2014, 18:30 PM
Código (cpp) [Seleccionar]
}
if (contador/2 == 0){

Pusiste eso. Elige 1: O incrementas el contador despues de los 2 "if", o pones ELSE-IF.

Es que estaba mal, deberia haber sido


            if (contador%2 ==0){


Pero ya me percate en cuanto pude hecharlo a andar y ver el resultado

Gracias a los dos