Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "consistencia.h"
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <locale.h>
- #include <ctype.h>
- int recebeInteiro(){
- setlocale(LC_ALL,"");
- char buffer[32];
- int i = 0;
- int alpha = -1;
- //enquanto a variável alpha for diferente de zero repita:
- do{
- //declaração da variável que será usada como verificadora de condição
- int verificador = 0;
- //armazene o valor digitado em uma string
- scanf("%s",buffer);
- //percorra todos os caracteres da string, e realize em cada posição os seguintes comandos
- for(i = 0; i < strlen(buffer); i++){
- //se o caracter da posição atual for uma letra entre 'a' e 'z' ou entre 'A' e 'Z'
- if(isalpha(buffer[i])!=0){
- //informe ao usuário que deve digitar apenas números
- printf("Digite apenas números: ");
- //a variável verificadora recebe o valor 1
- verificador = 1;
- //senão, se o caracter da posição atual for um caracter especial(nao esta entre a e z, e nao esta entre 0 e 9)
- }else if(!isalnum(buffer[i])){
- //se o caracter da posição atual não for uma virgula
- if(buffer[i] != ','){
- //informe ao usuario que deve digitar numeros sem caracter especial
- printf("Digite números sem caracteres especiais : ");
- //a variável verificadora recebe o valor 1
- verificador = 1;
- //se for uma vírgula
- }else{
- //informe ao usuario que digite um número inteiro
- printf("Digite um número inteiro : ");
- //a variável verificadora recebe o valor 1
- verificador = 1;
- }
- }
- }
- //se a variável verificador estiver com o valor zero
- if(verificador == 0)
- //variável alpha recebe valor zero
- alpha = 0;
- //condição da estrutura de repetição
- }while(alpha != 0);
- //retorne o valor da string porém convertido para um inteiro
- return atoi(buffer);
- }
- //a função recebeFloat segue a mesma lógica da recebeInteiro, a diferença é que não precisamos verificar se o número
- //não é um inteiro pois ela ja espera receber um número com casas decimais
- float recebeFloat(){
- setlocale(LC_ALL,"");
- char buffer[32];
- int i = 0;
- int alpha = -1;
- do{
- int verificador = 0;
- scanf("%s",buffer);
- for(i = 0; i < strlen(buffer); i++){
- if(isalpha(buffer[i])!=0){
- printf("Digite apenas números: ");
- verificador = 1;
- }else if(!isalnum(buffer[i])){
- if(buffer[i] != ','){
- printf("Digite números sem caracteres especiais : ");
- verificador = 1;
- }
- }
- }
- if(verificador == 0)
- alpha = 0;
- }while(alpha != 0);
- //retorne o valor de buffer convertido para float
- return atof(buffer);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement