Hace unos días en una carpeta de la facultad encontré una serie de ejercicios de programación para realizar y los voy a ir haciendo en el tiempo libre que disponga, si alguien quiere ir agregando cosas o aportar ideas para mejorarlo me lo dicen:
El primero era hacer la función atoi propia para convertir una cadena de texto a un numero entero..les pongo lo que hice..
Un saludo
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <limits.h>
#define longMaxInt 10
int strToInt(char* cad, int next, int multip);
int convertir(char* cad, int inf, int next, int multip);
int toInt(char caracter);
int main(int argc, char* argv[]) {
char cadena[longMaxInt];
int cadToNum=0;
// Leer la cadena
printf("Ingresa la cadena: ");
// Convertir a entero
cadToNum
= strToInt
(cadena
, strlen(cadena
)-1, 1);
// Imprimir resultado
if (cadToNum <= INT_MAX) {
printf("Numero Convertido : %d\n", cadToNum
); } else {
printf("El numero esta fuera del rango de enteros\n"); }
}
/* Recibe una cadena y retorna el entero correspondiente */
int strToInt(char* cad, int next, int multip) {
if(cad[0] == '-') {
return 0 - convertir(cad, 1, next, multip);
}
return convertir(cad, 0, next, multip);
}
int convertir(char* cad, int inf, int next, int multip) {
if(next < inf) {
return 0;
}
return convertir(cad, inf, next-1, multip*10) + toInt(cad[next])*multip;
}
/* Recibe un caracter y retorna el numero */
int toInt(char caracter) {
switch(caracter) {
case '0':
return 0;
case '1':
return 1;
case '2':
return 2;
case '3':
return 3;
case '4':
return 4;
case '5':
return 5;
case '6':
return 6;
case '7':
return 7;
case '8':
return 8;
case '9':
return 9;
}
}