Thursday, May 23, 2013

ASCTOINT 1.2 (Now with range checking,bad input rejection, and negitive numbers!)

#include <iostream>
#include <cstdlib>
#define MAX 99

int asctoint(char*);
int pow(int,int);

using namespace std;

int main(){
    char ghost[MAX];
    int alter=0;
    int p=0;
    cin >> ghost;
    alter=asctoint(ghost);
    cout << alter;
    cin >> p;
    return 0;
}
int asctoint(char* a){
    int grab[MAX];
    bool flip=false;
    int i=0,j=0;
    int num=0;
    int toast=0;
    if(a[0]=='-'){
        flip=true;
        i++;
    }
    for(i;a[i];i++,num++){
        if(a[i]>47&&a[i]<58)grab[i]=a[i]-48;
        else return 0;
    }
    if(flip){
        j++;
    }
    if(num>10)return 0;
    for(j;num>0;j++,num--){
        toast+=pow(grab[j],num);
    }
    if(flip)toast*=-1;
    return toast;
}
int pow(int dig,int exp){
    int i=0;
    if(exp>1){
        for(i=0;i<exp-1;i++){
            dig*=10;
        }
    }
    return dig;
}

No comments:

Post a Comment