[ Foro de C++ ]
Tengo el siguiente código:
#include <stdio.h>
#include <ctype.h>
#define MIDA 7
void Crear_Taula(int taula[MIDA]);
void Corregir_Taula(int taula[MIDA]);
int main(){
int T[MIDA];
Crear_Taula(T);
Corregir_Taula(T);
}
//S'encarrega de crear la taula
void Crear_Taula(int taula[MIDA]){
printf("Introdueix els 7 salts d'una escala.\n");
for(int i=0; i<MIDA; ++i){
scanf("%d", &taula[i]);
}
}
//S'assegura de que la taula compleixi tots els requisits
void Corregir_Taula(int taula[MIDA]){
int suma = 0;
int x = 1;
for(int i=0; i<MIDA && x == 1; ++i){
suma += taula[i];
int isdigit(taula[i]);
if (isdigit == 0){
printf("Només pots introduir números.\n");
x = 0;
}
else if (taula[i]<1){
printf("Els salts entre notes han de ser positius.\n");
x = 0;
}
}
if (suma != 12 && x == 1){
printf("Els salts han de sumar 12 semitons.\n");
printf("Els que has posat sumen %d.\n", suma);
x = 0;
}
else {
x = 1;
}
while(x == 0){
Crear_Taula(taula);
Corregir_Taula(taula);
}
}
Lo que quiero saber es como hacer para saber si el usuario ha introducido en la tabla todo números o también otros caracteres. Necesito saberlo porque si es así he de hacer que le saque un mensaje y lo tenga que volver a escribir, esto lo he intentado con la estructura "if(!isdigit)" y con la que esta en el programa que he enviado. No se si el problema es que declaro la tabla como int y no como char, aunque también probé cambiándola por char y aún así no daba con la solución, si alguien me puede ayudar se lo agradecería un montón
Tu uso de "isdigit" es incorrecto. La siguiente línea suena a que es algo que vas a definir tú:
int isdigit(taula[i]);
Pero ya existe en el sistema, si que deberías usarlo directamente dentro del "if", así:
if (isdigit(taula[i])) ...
Aún así, recuerda que "isdigit" espera un único carácter del 0 al 9, que se haya leído como carácter. Si es un número mayor, no se comportará bien, y si lees como entero, tampoco.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)