Entrada y salida estándar, cin/scanf, cout/printf, ejercicios
//Leer una linea completa
string a;
getline(cin,a);
//Leer una palabra hasta un espacio
string b;
cin>>b;
//Leer un entero
int a;
cin>>a;
scanf("%d",&a);
//Ejemplo leer horas 10:55:55
int horas, minutos, segundos;
scanf("%d:%d:%d",&horas,&minutos,&segundos);
printf("Texto sin salto de linea");
cout<<"Texto sin salto de linea";
printf("Salto de linea\n");
cout<<"Salto de linea\n";
cout<<"Salto de linea"<<endl;
int numero = 10;
printf("%d\n",numero);
double pi = 3.141592654;
printf("%.4f\n", pi); //3.1416
Enunciado: Escribir un programa que escriba tantos "Hola mundo." como nos pidan.
Entradas: La entrada consta de una única línea que contiene un número n, 0 ≤ n ≤ 5, que indica cuántos mensajes hay que emitir.
Salidas: Cada mensaje a escribir aparecerá en una única línea y será la cadena "Hola mundo.".
Entradas | Salidas |
3 | Hola mundo. Hola mundo. Hola mundo. |
#include <bits/stdc++.h>
using namespace std;
int main() {
int cases; cin>>cases;
while(cases--)
{
cout<<"Hola mundo.\n";
}
return 0;
}
Enunciado: Dados dos numeros a y b, retornar a+b.
Entradas: Un numero n indicando el número de casos de prueba. Luego n lineas con dos enteros a y b separados por espacios.
Salidas: Para cada caso imprimir una linea con a+b
Entradas | Salidas |
3 1 2 5 9 10 14 |
3 14 24 |
#include <bits/stdc++.h>
using namespace std;
int main(){
int cases,a,b; scanf("%d",&cases);
while(cases--){
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
}
return 0;
}
Un solo caso de prueba.
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
Primero se indica cuantos casos de prueba se evaluaran, y posteriormente se indica cada caso.
int cases,a,b; scanf("%d",&cases);
while(cases--){
scanf("%d %d",&a,&b);
printf("%d\n",a+b);
}
Se evaluan varios casos de prueba, pero no se indica cuantos. El programa debe leer mientras aun queden datos por evaluar.
int a,b;
while(scanf("%d %d",&a,&b)==2){ //Si fuera un número 1, dos 2, tres 3
printf("%d\n",a+b);
}
Se evaluan varios casos de prueba, pero no se indica cuantos. El programa debe leer mientras aun queden datos por evaluar.
string palabra;
while(cin>>palabra){
cout<<palabra;
}
Se evaluan varios casos de prueba, pero no se indica cuantos. El programa debe leer mientras aun queden datos por evaluar.
string linea;
while(getline(cin,linea)){
cout<<linea;
}
Existen problemas con lecturas particulares donde gracias a scanf son muy fáciles de realizar.
int horas,minutos,segundos;
//11:30:15
scanf("%d:%d:%d",&horas,&minutos,&segundos);
Existen problemas con lecturas particulares donde gracias a scanf son muy fáciles de realizar.
char letras[3];
int numeros;
//5555CPP
scanf("%d%s",&numeros,letras);
#include <bits/stdc++.h>
using namespace std;
//inline int getchar_unlocked() { return getchar(); }
inline void fastInput(int &n){
char ch;
int sign = 1;
while(ch = getchar_unlocked(), isspace(ch)) {
};
n = 0;
if(ch == '-') sign = -1;
else n = ch - '0';
while(ch = getchar_unlocked(), isdigit(ch))
n = (n << 3) + (n << 1) + ch - '0';
n *= sign;
}
int main(){
int n; fastInput(n);
return 0;
}
int x = 3;
printf("%02d",x); //Salida 03 útil para formatos horarios
double x = 31415.9265; //Imprimir ciertos decimales
printf("%.3lf", x); //31415.927
x = 31415.9265;
printf("%.3lf", x); //31415.926
x = 31415.9265;
printf("%.3lf", x); //31415.927
NOTA: En un problema, estos cambios no deben suponer la diferencia entre TLE y AC. Esto se usa si se quiere bajar el tiempo de un problema con AC.
Leer fichero de entrada: freopen("PATH","r",stdin);
Sacar a fichero (útil en algunos jueces que tiene casos de pruebas largos para probar, como los que se pueden encontrar en udebug)
Sacar a fichero: freopen("PATH","w",stdout);
De esta manera con scanf/cin y printf/cout podemos leer los casos de prueba e imprimir a fichero
¿Qué lado de la calle?
Acepta el Reto - 217... Una vez hecho eso, las viviendas que quedan al lado izquierdo (respecto al punto inicial) reciben números impares consecutivos, y las que quedan al lado derecho números pares consecutivos. ...
Input: El programa recibirá, por la entrada estándar, un conjunto de casos de prueba, cada uno en una línea. Cada caso de prueba estará compuesto de un número de vivienda. Se garantiza que nunca será mayor que 1.000. El último caso, que no deberá procesarse, será el número 0.
Output: Para cada caso de prueba el programa escribirá "IZQUIERDA" (sin las comillas) si la vivienda está situada a la izquierda de la calle, y "DERECHA" si está a la derecha.
Input | Output |
---|---|
3 10 41 0 |
IZQUIERDA DERECHA IZQUIERDA |
#include <bits/stdc++.h>
using namespace std;
int main(){
int numero;
while(scanf("%d",&numero)==1 && numero!=0){
if(numero%2==0) printf("DERECHA\n");
else printf("IZQUIERDA\n");
}
return 0;
}