Principiante · entrada/salida

Saludar

Todo lo anterior imprimía texto fijo. Ahora la salida depende de lo que teclee el usuario — el momento en que un programa deja de ser un cartel y pasa a ser una herramienta.

En una fraseLee con <code>cin &gt;&gt; name</code> en un array de <code>char</code> y escribe <code>Hello, </code> seguido del nombre y un salto de línea.

El problema

Entrada: Una palabra de 1 a 20 letras latinas, sin espacios.

Salida: Una línea: Hello, NAME! — con coma y signo de exclamación, exactamente así.

Ejemplos:

EntradaSalida
AdaHello, Ada!
LinusHello, Linus!

El juez compara carácter a carácter. Una coma o un ! de menos es respuesta errónea aunque las palabras sean correctas.

Tu solución

main.cpp — tu solución
Entrada personalizada para «Ejecutar mi entrada»

La corrección corre en tu navegador contra pruebas ocultas. Un bucle infinito se corta a los 3 segundos — aun así, asegúrate de que todo bucle tenga salida. Tu código se guarda solo mientras escribes.

¿Atascado? Pistas

Pista 1 — cin lee dentro de una variable

cin >> name; espera un token separado por espacios y lo guarda. La flecha apunta hacia la variable — no hay que asignar nada después, la lectura es la asignación.

Pista 2 — Tres piezas, una línea

Construye la salida con tres piezas: el literal "Hello, ", la variable name y el literal "!". Encadénalas con << y cierra con endl. Imprimir name sin comillas funciona porque es un array de char, que cout sabe escribir como texto.

Pista 3 — ¿Por qué no int?

Porque un nombre es texto, no un número. En este motor el texto vive en un array de char — std::string no está disponible. Decláralo un poco mayor que la palabra más larga permitida (25 casillas para 20 letras, dejando sitio al cero final).

Solución (¡inténtalo primero!)
#include <iostream>
using namespace std;

int main() {
    char name[25];
    cin >> name;
    cout << "Hello, " << name << "!" << endl;
    return 0;
}

Ese es el ciclo completo de entrada/salida: lee un valor, úsalo, escribe un resultado. Todo lo demás en este sitio es este patrón con más aritmética en medio. Siguiente: toma dos números y escribe su suma en Suma de dos números.

Análisis profundo

Por qué funciona

El programa tiene exactamente las tres partes de todo programa: obtener entrada, transformarla (aquí: no), producir salida. cin >> name guarda el token; cout << "Hello, " << name << "!" arma la línea con literales y la variable. No hace falta nada más.

El coste

O(1) de tiempo y espacio — un token leído, una línea escrita, sin importar la longitud dentro del límite.

Dónde falla

  • Leer con cin >> name en un int — un nombre es texto, necesita un array de char (o un tipo cadena que este motor no tiene).
  • Olvidar la puntuación. El juez compara caracteres: Hello, Ada sin el ! es respuesta errónea.
  • Declarar un array demasiado pequeño. Veinte letras más el cero final necesitan al menos 21 casillas; 25 va cómodo.

Siguiente paso

Añade aritmética entre la lectura y la escritura: Suma de dos números.

Dos cosas para recordar

  • Tres partes: leer, transformar, escribir. Aquí la transformación está vacía.
  • cin >> x lee un token separado por espacios — la flecha apunta hacia la variable.
🐞 Esta versión falla: ábrela y pruébala

Imprime el nombre dos veces: falta el literal del saludo

#include <iostream>
using namespace std;

int main() {
    char name[25];
    cin >> name;
    cout << name << name << endl;   // bug: no greeting text
    return 0;
}