Format des sources

Dans la plupart des problèmes de ce site, on vous demande d'écrire un programme qui lit des données sur l'entrée standard, et affiche une solution en fonction de ces données, sur la sortie standard. Lire sur l'entrée standard revient à lire des données tapées au clavier, et écrire sur la sortie standard revient à écrire à l'écran. Vous devez donc utiliser les fonctions correspondantes de votre langage.

Vous trouverez ci-dessous, pour chaque langage, le code d'un programme qui lit un entier sur l'entrée standard puis écrit cet entier sur la sortie standard. Vous pouvez vous appuyer dessus pour écrire vos programmes.

C

#include <stdio.h>

int main()
{
   int valeur;
   scanf("%d", &valeur);
   printf("%d\n", valeur);
}

C++

En C++, vous pouvez effectuer les entrées et sorties de cette façon :

#include <iostream>
using namespace std;

int main()
{
   int valeur;
   cin >> valeur;
   cout << valeur << endl;
}

Par défaut, ces entrées-sorties sont malheureusement très lentes : jusqu'à 15 fois plus lentes que celles du C ; ainsi, il se peut que vous ne puissiez pas passer certains tests en les utilisant. Il est toutefois possible de les rendre bien plus rapides en faisant comme suit :

#include <iostream>
using namespace std;

int main()
{
   ios::sync_with_stdio(false);

   int valeur;
   cin >> valeur;
   cout << valeur << '\n';
}

donc détacher les entrées-sorties du C++ de celles du C, et ne pas utiliser le manipulateur endl, qui en fait vide le tampon de sortie, ce qui est inutile et prend beaucoup de temps.

Cela reste néanmoins plus lent que le système d'entrées-sorties du C (scanf/printf).

Pascal

program Solution;
var
   valeur: LongInt;
begin
   read(valeur);
   writeln(valeur);
end.

OCaml

Les deux premières lignes servent à avaler les espaces entre les nombres lors de la lecture de plusieurs nombres à la suite.

let read_int() = Scanf.scanf " %d" (fun x->x);;
let read_float() = Scanf.scanf " %f" (fun x->x);;

let valeur = read_int() in
print_int valeur;
print_newline();

(* Autre possibilité *)
Printf.printf "%d\n" valeur;

Pour travailler avec des nombres qui ne tiennent pas dans l'intervalle -1073741824 à 1073741823, il faut utilier le module Big_int ou le module Num (décrits dans la référence d'OCaml). Voici comment lire et afficher de tels nombres :

   (* avec Big_int *)
let read_big_int() = Scanf.scanf " %s" Big_int.big_int_of_string;;
let print_big_int x = Printf.printf "%s" (Big_int.string_of_big_int x);;
let grand_nombre = read_big_int() in
print_big_int grand_nombre;

   (* avec Num *)
let read_num() = Scanf.scanf " %s" Num.num_of_string;;
let print_num x = Printf.printf "%s" (Num.string_of_num x);;
let grand_nombre = read_num() in
print_num grand_nombre;

Java

import algorea.Scanner;

class Main {
   public static void main(String[] args) {
      Scanner entrée = new Scanner(System.in);
      int valeur = entrée.nextInt();
      System.out.println(valeur);
   }
}

JavaScool

void main()
{
   int valeur = readInt();
   println(valeur);
}

Python

valeur = int(input())
print(valeur)