elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda, Uso de Do y While
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda, Uso de Do y While  (Leído 2,825 veces)
chewbaccaChaka

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Ayuda, Uso de Do y While
« en: 23 Marzo 2018, 03:58 am »

Buenas...
Tengo una duda, tengo un programa que pide calificaciones las que quiera ingresar el usuario, hasta esa parte no tengo ningun problema al igual que preguntarle si desea ingresar mas. dandole la opcion de terminar y arrojar reportes.
El problema esta en que no se como hacer que se valide la calif que ingresa y que si es un dato fuera de la validacion le vuelva a pedir los datos.
#include <stdio.h>
#include <stdlib.h>


Citar
int main()

{
int n,opcion,contador=0, suma=0;
float promedio,aprobados,reprobados;
      
   
do{
 {
   printf("Ingrese una calificacion \n");
   scanf("%d",&n);
   contador=contador+1;
   promedio=suma/contador;      
   printf("Presione 1 si desea continuar. Presione otro numero para salir");
   scanf("%d",&opcion);
   
      }   
   
} while (opcion==1);

printf("Saliste del programa porque presionaste otro numero \n");
printf("El porcentaje de alumnos aprobados es %f \n",aprobados);
printf("El porcentaje de alumnos reprobados es %f \n",reprobados);
printf("Ingresaste %d calificaciones \n",contador);
printf("El promedio del grupo es %f \n",promedio);
printf("El indicador del grupo es: %d \n (1:Positivo) (2:negativo)");
         

            
 return 0;
}
Código
  1.  


En línea

Kenji-chan

Desconectado Desconectado

Mensajes: 104


Ver Perfil
Re: Ayuda, Uso de Do y While
« Respuesta #1 en: 23 Marzo 2018, 18:58 pm »

lo que puedes hacer es tratarlo como cadenas de texto de ese modo podes verificar las siguientes condiciones:

1)si es un numero buscamos en todas las posiciones si esa coincidencia es un numero o no
Código
  1. char* calificaciones = "12a";
  2.  
  3. for(int i=0; i<3; i++){
  4.  if((int)calificaciones[i] > 47 && (int)calificaciones[i] < 58){
  5.    /*Calificaciones es un numero*/
  6.  }else{
  7.    /*Calificaciones no es un numero*/
  8.    break;
  9.  }
  10. }
  11.  
  12.  

2) si es un numero de coma flotante
Código
  1. char* calificaciones = "12.5";
  2.  
  3. for(int i=0; i<4; i++){
  4.  if(calificaciones[i] == '.'){
  5.    /*Calificaciones es un numero entero*/
  6.  }else{
  7.    /*Calificaciones no es un numero entero*/
  8.    break;
  9.  }
  10. }
  11.  

y por ultimo hacemos una función que lo convierta de texto a entero

Código
  1. int convertToInt(string num){
  2. int ret, aux;
  3.  
  4. ret = (int)num[num.size()-1] - 48;
  5. for(int i = num.size()-2, cont = 1; i>=0; i--, cont++){
  6. aux = ((int)num[i] - 48) * eleva10(cont);
  7. ret += aux;
  8. }
  9.  
  10. return ret;
  11. }
  12.  


« Última modificación: 23 Marzo 2018, 19:06 pm por Kenji-chan » En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Ayuda, Uso de Do y While
« Respuesta #2 en: 23 Marzo 2018, 22:03 pm »

En verdad scanf te dice si lo ha conseguido ya que devuelve el número de conversiones con éxito realizadas:
Código:
#include <stdio.h>

int main() {
    int n;

    if(scanf("%i", &n) == 0)
        puts("Error, no es un número");
    else
        printf("El número es %i", n);
}
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines