Advertisement
Guest User

Untitled

a guest
Mar 26th, 2017
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.56 KB | None | 0 0
  1. #include "consistencia.h"
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <string.h>
  5. #include <locale.h>
  6. #include <ctype.h>
  7.  
  8. int recebeInteiro(){
  9. setlocale(LC_ALL,"");
  10. char buffer[32];
  11. int i = 0;
  12. int alpha = -1;
  13. //enquanto a variável alpha for diferente de zero repita:
  14. do{
  15. //declaração da variável que será usada como verificadora de condição
  16. int verificador = 0;
  17. //armazene o valor digitado em uma string
  18. scanf("%s",buffer);
  19. //percorra todos os caracteres da string, e realize em cada posição os seguintes comandos
  20. for(i = 0; i < strlen(buffer); i++){
  21. //se o caracter da posição atual for uma letra entre 'a' e 'z' ou entre 'A' e 'Z'
  22. if(isalpha(buffer[i])!=0){
  23. //informe ao usuário que deve digitar apenas números
  24. printf("Digite apenas números: ");
  25. //a variável verificadora recebe o valor 1
  26. verificador = 1;
  27. //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)
  28. }else if(!isalnum(buffer[i])){
  29. //se o caracter da posição atual não for uma virgula
  30. if(buffer[i] != ','){
  31. //informe ao usuario que deve digitar numeros sem caracter especial
  32. printf("Digite números sem caracteres especiais : ");
  33. //a variável verificadora recebe o valor 1
  34. verificador = 1;
  35. //se for uma vírgula
  36. }else{
  37. //informe ao usuario que digite um número inteiro
  38. printf("Digite um número inteiro : ");
  39. //a variável verificadora recebe o valor 1
  40. verificador = 1;
  41. }
  42. }
  43.  
  44.  
  45. }
  46. //se a variável verificador estiver com o valor zero
  47. if(verificador == 0)
  48. //variável alpha recebe valor zero
  49. alpha = 0;
  50. //condição da estrutura de repetição
  51. }while(alpha != 0);
  52. //retorne o valor da string porém convertido para um inteiro
  53. return atoi(buffer);
  54. }
  55.  
  56. //a função recebeFloat segue a mesma lógica da recebeInteiro, a diferença é que não precisamos verificar se o número
  57. //não é um inteiro pois ela ja espera receber um número com casas decimais
  58. float recebeFloat(){
  59. setlocale(LC_ALL,"");
  60. char buffer[32];
  61. int i = 0;
  62. int alpha = -1;
  63.  
  64. do{
  65. int verificador = 0;
  66. scanf("%s",buffer);
  67.  
  68. for(i = 0; i < strlen(buffer); i++){
  69.  
  70. if(isalpha(buffer[i])!=0){
  71. printf("Digite apenas números: ");
  72. verificador = 1;
  73. }else if(!isalnum(buffer[i])){
  74. if(buffer[i] != ','){
  75. printf("Digite números sem caracteres especiais : ");
  76. verificador = 1;
  77. }
  78. }
  79. }
  80. if(verificador == 0)
  81. alpha = 0;
  82. }while(alpha != 0);
  83. //retorne o valor de buffer convertido para float
  84. return atof(buffer);
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement