C++ Básicoc++entrada-salidacincoutbásico
Entrada y Salida de Datos
Aprende a leer datos de entrada y mostrar resultados usando cin y cout en C++
OOI Oaxaca9 de febrero de 20265 min read
Entrada estándar (stdin) y Salida estándar (stdout)
En programación competitiva, los programas:
- Leen datos de la entrada estándar (stdin)
- Escriben resultados a la salida estándar (stdout)
Salida con cout
cout (character output) muestra datos en pantalla:
#include <iostream>
using namespace std;
int main() {
cout << "Hola, mundo!" << endl;
return 0;
}
Imprimir diferentes tipos
int edad = 15;
double altura = 1.75;
char grado = 'A';
string nombre = "Juan";
cout << "Nombre: " << nombre << endl;
cout << "Edad: " << edad << endl;
cout << "Altura: " << altura << endl;
cout << "Grado: " << grado << endl;
Concatenar salidas
int a = 5, b = 3;
cout << a << " + " << b << " = " << (a + b) << endl;
// Salida: 5 + 3 = 8
Salto de línea
cout << "Línea 1" << endl; // endl hace flush del buffer
cout << "Línea 2" << '\n'; // \n es más rápido
cout << "Línea 3\n"; // Dentro del string
Entrada con cin
cin (character input) lee datos del teclado:
#include <iostream>
using namespace std;
int main() {
int numero;
cout << "Ingresa un número: ";
cin >> numero;
cout << "Ingresaste: " << numero << endl;
return 0;
}
Leer múltiples valores
int a, b, c;
// En líneas separadas o en la misma línea
cin >> a >> b >> c;
// Equivalente a:
// cin >> a;
// cin >> b;
// cin >> c;
Entrada:
10 20 30
o
10
20
30
Leer diferentes tipos
int edad;
double peso;
string nombre;
cin >> nombre >> edad >> peso;
Entrada:
Juan 15 65.5
Leer líneas completas
cin >> se detiene en espacios. Para leer líneas completas:
string linea;
getline(cin, linea);
cout << "Leíste: " << linea << endl;
Entrada:
Hola mundo cruel
Salida:
Leíste: Hola mundo cruel
Formato de entrada en competencias
Caso único
int n;
cin >> n;
// procesar n
Múltiples casos con cantidad conocida
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
// procesar n
}
Leer hasta fin de archivo (EOF)
int n;
while (cin >> n) {
// procesar n
}
Leer arreglos
int n;
cin >> n;
vector<int> arr(n);
for (int i = 0; i < n; i++) {
cin >> arr[i];
}
// O más elegante:
for (int& x : arr) {
cin >> x;
}
Optimización de I/O
Para programas con mucha entrada/salida:
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
// Tu código aquí
return 0;
}
¡Importante! Después de esto, no mezcles cin/cout con scanf/printf.
Precisión de decimales
#include <iomanip>
double pi = 3.14159265358979;
cout << pi << endl; // 3.14159
cout << fixed << setprecision(2) << pi << endl; // 3.14
cout << fixed << setprecision(10) << pi << endl; // 3.1415926536
Ejemplo completo: Promedio de calificaciones
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin >> n;
double suma = 0;
for (int i = 0; i < n; i++) {
double calif;
cin >> calif;
suma += calif;
}
double promedio = suma / n;
cout << fixed << setprecision(2) << promedio << endl;
return 0;
}
Entrada:
5
90 85 78 92 88
Salida:
86.60
Errores comunes
1. No leer todos los datos
// Si la entrada es "5 10"
int a;
cin >> a;
// ¡Olvidaste leer el segundo número!
2. Mezclar getline con cin
int n;
string linea;
cin >> n;
getline(cin, linea); // ¡Lee una línea vacía!
// Solución: limpiar el buffer
cin >> n;
cin.ignore(); // Ignora el salto de línea
getline(cin, linea);
3. Tipos incorrectos
int x;
cin >> x;
// Si el usuario ingresa "abc", x queda en estado inválido
Ejercicios de práctica
Ejercicio 1
Lee dos números y muestra su suma, resta, multiplicación y división.
Ver solución
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a >> b;
cout << a << " + " << b << " = " << (a + b) << endl;
cout << a << " - " << b << " = " << (a - b) << endl;
cout << a << " * " << b << " = " << (a * b) << endl;
cout << a << " / " << b << " = " << (a / b) << endl;
return 0;
}
Ejercicio 2
Lee n números y muestra el mayor y el menor.
Ver solución
#include <iostream>
#include <climits>
using namespace std;
int main() {
int n;
cin >> n;
int mayor = INT_MIN;
int menor = INT_MAX;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
if (x > mayor) mayor = x;
if (x < menor) menor = x;
}
cout << "Mayor: " << mayor << endl;
cout << "Menor: " << menor << endl;
return 0;
}
Siguiente paso
Aprende sobre Operadores Aritméticos para realizar cálculos matemáticos.
