Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - ivancea96

#2311
En vez de una clase, sería más comodo hacer solo una función:
Código (cpp) [Seleccionar]
bool toBase(string in, uint8_t initialBase, string &out, uint8_t finalBase);

Luego basta tirar false si alguna base se sale del rango [2,36]
#2312
istream::get() coge solo un caracter del buffer de entrada.

Si introduces " a", cin.get() cogerá primero ' ' y luego 'a'.


Código (cpp) [Seleccionar]
case ' ':
break;


Ese case hará break al switch, con lo que el bucle pedirá nueva letra ('a').
#2313
Con todo el respeto, de los códigos que se han aportado hasta ahora, ninguno tiene que ver con el post original.

El post original son métodos que convierten una string a un número, sin usar funciones de otras librerías con esa habilidad.

Al menos, proponed códigos que conviertan una cadena de caracteres en un entero :/

Edito:

Código (cpp) [Seleccionar]
#include <iostream>
#include <cmath>
#include <stdexcept>

using namespace std;

bool lessOrEqual(string a, string b){
    if(a.size()<b.size()) return true;
    if(a.size()>b.size()) return false;
    if(a==b) return true;
    for(int i=0; i<a.size(); i++)
        if(a[i]<b[i]) return true;
        else if(a[i]>b[i]) return false;
    return true;
}

int toInt(string str){
    bool sign = str[0] == '-';

    for(int i=sign; i<str.size(); i++)
        if(str[i]<'0' || str[i]>'9')
            throw invalid_argument("Not numeric character found");

    size_t len = str.size()-sign;
    if(sign)
        str.erase(0,1);

    if(sign){
        if(!lessOrEqual(str, "2147483648"))
            throw out_of_range("Limits: [-2147483648, 2147483647]");
    }else
        if(!lessOrEqual(str, "2147483647"))
            throw out_of_range("Limits: [-2147483648, 2147483647]");

    int temp = 0;
    for(int i=str.size()-1; i>=0; i--)
        temp += (str[i]-'0')*pow(10, str.size()-1-i);
    if(sign)
        temp *= -1;
    return temp;
}

int main(){
    int number;
    while(1){
        cout << "Enter a number: ";
        string temp;
        getline(cin,temp);
        bool good = true;
        try{
            number = toInt(temp);
            break;
        }catch(exception& e){
            endl(cerr << "Exception: " << e.what());
            endl(cout << "Invalid input.");
        }
    }
    cout << "The number is: " << number;
}
#2314
En primer lugar, estás accediendo en la linea 11 a rev[ len ]. Al comienzo, len es igual al tamaño de rev, por lo que ese acceso no es correcto. El for tampoco está correctamente condicionado. No es len>0, es len>=0, pues existe el índice 0. En C y C++ los índices empiezan por 0 (cosa que haces bien con la variable i).
A parte, no deberías trabajar con 2 variables, principalmente porque una va a ser siempre calculable teniendo la otra (y porque no condicionas en ningún momento la variable 'i')

Luego el tema del +5, pues ya no se a qué viene.
#2315
¿Y estás seguro de que se llega a llamar a esa función?
#2316
Una vez encontrada la palabra, basta separar la frase por puntos. O por saltos de linea, como quieras hacerlo.
#2317
La ventana negra es la consola.
Si hubo un error, y viendo que usas memoria dinámica, intuyo que es por un acceso a memoria mal practicado.

Como dato, estás usando librerias de C y de C++ a la vez. Si les quitas el .h y le pones una 'c' al comienzo, la mayoria serán de C++. ("stdio.h" -> "cstdio")

Mete el código en etiquetas GeSHi.
#2318
Programación C/C++ / Re:
17 Mayo 2015, 11:35 AM
Un renglón supongo que te refieres a un salto de linea. Eso es el caracter '\n'.
Para leer linea a linea, basta detectar ese caracter mientras lees.
#2319
400 lineas para convertir un número de string a int es excesivo ·_·

Luego, obviando el uso abusivo de if-else, ten en cuenta que estás comparando strings de 1 caracter. Es más, llamas a una variable string "caracter". Puedes y deberías usar el tipo char.

PD: También existe la función stoi de la librería string (stoi, stoul, stof, ...)
#2320
No entiendo cuál es el problema. No entiendo qué es lo que quieres hacer. ¿Escribir cadenas de caracteres en un archivo?