Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: vidalpet en 31 Octubre 2015, 20:05 PM

Título: Ayudeme problema con validacion corre perfecto
Publicado por: vidalpet en 31 Octubre 2015, 20:05 PM
#include <stdio.h>
#include <ctype.h>
int main(){
int  v1=0, v2=0, v3=0, nulo=0, i=0, cant;
char dato;
int votos;

printf("numero de cedula\n");
    scanf("%c",&dato);

if(isdigit(dato)){
printf("Bienvenido\n");

printf("ingresa la cantidad de votos a contar\n");
scanf("%d",&cant);


while(i<cant){

printf("voto\n");
scanf("%d",&votos);

switch (votos){





case 1:
  v1++;
break;

case 2:
v2++;
break;

case 3:
v3++;
break;

default:
nulo++;
break;
}

i++;
}








printf("maduro %d\n",v1);
printf("diosdado %d\n",v2);
printf("leopoldo %d\n",v3);
printf("nulo %d\n",nulo);

if(v1>v2 &&v1>v3){
printf("ganoo maduro\n");
}else{
if(v2>v1 && v1>v3){
printf("diosdado\n");
}else{
if(v3>v1 && v3>v2){
printf("leopoldo ganoo\n");
}else{

}

}
}

}
else{
printf("ERROR marque su numero de cedula en valores numericos\n");
}
 

return 0;
}




tengo una duda ya estaba desesperado :( quise estudiar la funciion isdigit  pero no me salia :( despues de mas de 3 horas que m salio :( me correo pero no hace nada :( la variabel cant deberia de decir cuantas personas votaron , otra cosa necesito consejo de ustedes como aprendiendo a programar ? un metodo ? xd sufro me gusta pero sufro
Título: Re: Ayudeme problema con validacion corre perfecto
Publicado por: vidalpet en 1 Noviembre 2015, 01:22 AM
:( lei sobre esa funcion de la libreria ctype pero necesito ayuda
Título: Re: Ayudeme problema con validacion corre perfecto
Publicado por: class_OpenGL en 1 Noviembre 2015, 03:33 AM
Aprender a programar es complicado, pues aunque sepas la teoría, siempre necesitas un montón de práctica para coger hábitos. Mi consejo es que practiques mucho, busques ejercicios de buena calidad, o que tu mismo inventes tus propios ejercicios (te aconsejo lo último). Respecto a la duda sobre el código, no veo dónde está el problema... He compilado y ejecutado el programa y he obtenido la siguiente salida:

numero de cedula
5
Bienvenido
ingresa la cantidad de votos a contar
5
voto
2
voto
4
voto
6
voto
2
voto
3
maduro 0
diosdado 2
leopoldo 1
nulo 2


¿No debería ser así?

Otro ejemplo para que veas que isdigit funciona:
numero de cedula
c
ERROR marque su numero de cedula en valores numericos


Lo que pasa es que tu código no contempla empates
Título: Re: Ayudeme problema con validacion corre perfecto
Publicado por: vidalpet en 1 Noviembre 2015, 03:45 AM
corre  bien pero que pasa si el usuario  su numero de cedula es 20131811 , normalmente la cedula no son unidades , son millones ejemplo 20131811 
Título: Re: Ayudeme problema con validacion corre perfecto
Publicado por: class_OpenGL en 1 Noviembre 2015, 08:24 AM
Lo que hace 'scanf("%c",&dato);' es leer el primer carácter del buffer de entrada. Cuando introduces un número como 1923542345, lo que introduces es una cadena de caracteres, por lo que de esa cadena tomará el 1 y el resto se quedará "como basura" (que puedes limpiar con fflush(stdin);). La solución más factible que veo es que pidas un entero, y que compruebes si está entre uno y diez.
Título: Re: Ayudeme problema con validacion corre perfecto
Publicado por: furciorifa en 3 Noviembre 2015, 01:57 AM
Usa fgets para recibir la cadena amigo esa es tu falla, scanf y gets son muy malos para cadenas.
Título: Re: Ayudeme problema con validacion corre perfecto
Publicado por: class_OpenGL en 3 Noviembre 2015, 03:14 AM
El no quiere recibir una cadena... quiere recibir un carácter. Scanf no es malo para los string, solamente tienes que tener cuidado de que no recoge la línea entera, sino una palabra (las palabras están delimitadas por espacios)