Dado un array de números enteros y un objetivo de búsqueda entero, devuelve índices de los dos números de manera que se sumen al objetivo.
Puede suponer que cada entrada tendría exactamente una solución y no puede usar el mismo elemento dos veces.
Puede devolver la respuesta en cualquier orden.
Ayudenme porfavor en C++
Respuestas a la pregunta
Respuesta:
#include <iostream>
#include <string>
#include <cctype>
#include <cstdlib>
using namespace std;
bool esEntero(string);
int main() {
string linea;
int numero;
bool repite = true;
do {
cout << "\nIngrese un valor entero: ";
getline(cin, linea);
if (esEntero(linea)) {
repite = false;
} else {
cout << "No has ingresado un valor entero. Intentalo nuevamente" << endl;
}
} while (repite);
numero = atoi(linea.c_str());
cout << "El numero ingresado fue: " << numero << endl;
cin.get();
return 0;
}
bool esEntero(string linea) {
bool esEntero = true;
int longitud = linea.size();
if (longitud == 0) {
esEntero = false;
} else if (longitud == 1 && !isdigit(linea[0])) {
esEntero = false;
} else {
int indice = 0;
if (linea[0] == '+' || linea[0] == '-') {
indice = 1;
} else {
indice = 0;
}
while (indice < longitud) {
if (!isdigit(linea[indice])) {
esEntero = false;
break;
}
indice++;
}
}
return esEntero;
}
Explicación:
Aqui el codigo fuente para ingresar solo numeros enteros con signo o sin signo, y te los ira sumando o restando ocupamos la funcion isdigit para verificar que sea un digito y no algun otro caracter.