Test Foro de elhacker.net SMF 2.1

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

#include <stdio.h>

int main(){
int n ;
double precio , total=0;
do{
do{
printf("introduzca la cantidad vendida\n");
scanf("%d",&n);
if (n<0) printf("cantidades no valida\n");
}while(n<0);
if (n>0){
printf("introduzca el precio:");
do{
scanf("%lf",&precio);
if (precio<0) printf("PRECIO NO VALIDO\n");
else
total+=n*precio;
}while (precio<0);
}

}while(n!=0);

printf("FIN\n");
printf("total vendido = %.2f",total);
return 0;
}

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

char* cadena;

int tam;   

scanf("%d",&tam); //tamaño de cadena

cadena=(char*)malloc(sizeof(char)*tam)
validar(cadena);

en donde validar sería:

int validar(char* cad){
int i;
for(i=0;cad[i]!='\0';i++){
if(!isdigit(cad[i])) return 0;
cad++;
}
return 1;
}

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