Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: vidalpet en 23 Agosto 2015, 05:03 am



Título: Ayudeme por lo que mas quieran
Publicado por: vidalpet en 23 Agosto 2015, 05:03 am

Código
  1. #include <stdio.h>
  2.  
  3. int main(){
  4. int n ;
  5. double precio , total=0;
  6. do{
  7. do{
  8. printf("introduzca la cantidad vendida\n");
  9. scanf("%d",&n);
  10. if (n<0) printf("cantidades no valida\n");
  11. }while(n<0);
  12. if (n>0){
  13. printf("introduzca el precio:");
  14. do{
  15. scanf("%lf",&precio);
  16. if (precio<0) printf("PRECIO NO VALIDO\n");
  17. else
  18. total+=n*precio;
  19. }while (precio<0);
  20. }
  21.  
  22. }while(n!=0);
  23.  
  24. printf("FIN\n");
  25. printf("total vendido = %.2f",total);
  26. return 0;
  27. }
  28.  

necesito que por favor  nuevamente me ayuden a validar no se , hace dias me dieron una recomendacion aqui pero no entendi, perdon por ser fastidioso , este programa me corre bien la funcion es calcular cantidades y precio y termina justo cuando marque 0 , ok bien como hago para cuando alguien marque caracter y marde aviso y viceversa en digito y caracter






Título: Re: Ayudeme por lo que mas quieran
Publicado por: engel lex en 23 Agosto 2015, 05:12 am
que no entendiste del metodo y por qué no preguntaste?

Modifica el titulo, el mismo debe ser descriptivo al problema, los ruegos están de más, ya que vas a recibir ayuda


Título: Re: Ayudeme por lo que mas quieran
Publicado por: Ur1cchio en 24 Agosto 2015, 04:08 am
Yo no leeria en ese formato, yo leeria un string, a ese string lo pasaria por ejemplo por una funcion " validar " que haga toda la magia ( por ejemplo si encuentra algo que no sea numero devuelva un false y si todo esta bien un true )
Y listo, en vez del n < 0 poner el validar( entrada ) y todo ok!


Título: Re: Ayudeme por lo que mas quieran
Publicado por: furciorifa en 25 Agosto 2015, 03:12 am
1.-Tú programa no termina cuando presionas cero porque estas comparando n<0 y las demás variables, entonces termina cuando pones un número real negativo.

2.- Si es lo que pienso que estás pidiendo porque no entendí nada de que realmente quieres hacer pero tengo una idea, creo que debes usar algo así:

Código
  1. char* cadena;
  2.  
  3. int tam;  
  4.  
  5. scanf("%d",&tam); //tamaño de cadena
  6.  
  7. cadena=(char*)malloc(sizeof(char)*tam)
  8. validar(cadena);
  9.  
en donde validar sería:

Código
  1. int validar(char* cad){
  2. int i;
  3. for(i=0;cad[i]!='\0';i++){
  4. if(!isdigit(cad[i])) return 0;
  5. cad++;
  6. }
  7. return 1;
  8. }
  9.  
Obviamente necesitas #include<ctype.h> y #include<stdlib.h> esta creo yo sería una buena opción para hacer esto, según entendí tu petición trata de ser más claro a la próxima