aeds2/tps/gabarito/tp01/TP01-Is-C/Is.c

92 lines
2.2 KiB
C

/**
* @author: Thiago de Campos Ribeiro Nolasco
*/
// Biblioteca utilizada:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define true 1;
#define false 0;
// Prototipação:
int isFim(char s[]);
const char* isVogal(char s[]);
const char* isConsoante(char s[]);
const char* isInt(char s[]);
const char* isFloat(char s[]);
int main(void){
// data declaration
char str[1000], returned[3], result[16];
int pos = 0;
// CAN BE USED INSTED OF SCANF("%[^\n]"...):
/*fgets(str, 1000, stdin);
setbuf(stdin, NULL);
if(str[strlen(str) - 1] == '\n'){
str[strlen(str) - 1] = '\0';
}*/
scanf("%[^\n]", str);
getchar();
while(!(isFim(str))){
printf("%s %s %s %s\n", isVogal(str), isConsoante(str), isInt(str), isFloat(str));
scanf("%[^\n]", str);
getchar();
}
// Return without errors
return 0;
}// ending main
// Checks if the received string is equals to "FIM"
int isFim(char s[]){
return (strlen(s) == 3 && s[0] == 'F' && s[1] == 'I' && s[2] == 'M');
}// ending isFim
// Checks if the received string has only vowels
const char* isVogal(char s[]){
for(int i = 0; i < strlen(s); i++){
if((s[i] != 65) && (s[i] != 69) && (s[i] != 73) && (s[i] != 79) && (s[i] != 85) && (s[i] != 97) && (s[i] != 101) && (s[i] != 105) && (s[i] != 111) && (s[i] != 117)){
return "NAO";
}
}
return "SIM";
}// ending isVogal
// Checks if the received string has
const char* isConsoante(char s[]){
for(int i = 0; i < strlen(s); i++){
if((((s[i] == 65) || (s[i] == 69) || (s[i]) == 85) || (s[i] == 97) || (s[i] == 101) || (s[i] == 105) || (s[i] == 111) || (s[i] == 117)) || ((s[i] < 65 || s[i] > 90) && (s[i] < 97 || s[i] > 112))){
return "NAO";
}
}
return "SIM";
}// ending isConsoante
// Checks if the received string has only integers
const char* isInt(char s[]){
for(int i = 0; i < strlen(s); i++){
if(s[i] < 48 || s[i] > 57) return "NAO";
}
return "SIM";
}
const char* isFloat(char s[]){
int count = 0, countChars = 0;
for(int i = 0; i < strlen(s); i++){
if(s[i] == 44 || s[i] == 46 || s[i] == 59) count++;
if(s[i] >= 48 && s[i] <= 57) countChars++;
}
if((count == 0 || count == 1) && countChars == strlen(s) - count) return "SIM";
return "NAO";
}