domingo, 27 de noviembre de 2011

Lectura de Datos (Parte 1)

Hola nuevamente!

Para empezar, es recomendable hayan leído la anterior publicacicón.

Como mencioné, obtendremos los datos del archivo: in.txt o como deseen llamarlo.

int main() {
    freopen("in.txt", "rt", stdin);

    freopen("out.txt", "wt", stdout);    
    return 0;
}

La información que vayamos a imprimir aparecerá en el archivo: out.txt.

Ahora, lo importante es saber qué tipo de datos vamos a leer.

//-------
--------------------------------------------------------------------------------
Sí son puros enteros, la lectura será sencilla:

int d;
scanf("%d",&d);
printf("%d\n",d);


Como pueden apreciar, la lectura es sencilla, ya dependerá de como sea el input, que será puesto en el archivo in.txt.

Problema Ejemplo:

Input

La primera línea tendrá como dato el entero T, 1<=T<=100, que será el número de casos. Por cada caso de habrán dos líneas. La primera línea tendrá como dato el entero N, 1<=N<=100. La segunda línea del caso tendrá N enteros (i1, i2, ...., iN) -1000<=i<=1000.

Output
Por cada caso de prueba se imprimirá en una línea la suma de los N enteros dados como datos.

in.txt3
4
5 6 7 8
10
1 2 3 4 5 6 7 44 2 21
3
1 -1 3

out.txt
26
95
3

Solución

#include
int main() {
    freopen("in.txt", "rt", stdin);
    freopen("out.txt", "wt", stdout);

    int T;
    scanf("%d",&T);

    for(int I = 0; I < T; I++) {
    
    int N, suma = 0;
        scanf("%d",&N);

    
    for(int i = 0; i < N; i++) {
            int a;
            scanf("%d",&a);
            suma += a;
        }

    
    printf("%d\n",suma);
    }

    return 0;
}


Al momento de mandar el problema(este no es un problema de UVA) no se olviden de comentar o borrar las dos líneas de freopen();.

Como verán, la lectura de datos fue sencilla. Cabe recalcar que cree un for(...) inicial con la variable I(i mayúscula), ya que en cada caso de prueba es muy probable, como en este caso, usar uno o más de un for(...) y para mantener el estándar de usar for(int i = 0....) en cada caso, use la variable I(i mayúscula) en el primer for(...).

Un dato importante, y creo lo mencioné en el anterior post, pero lo recalco:

Al final de todos los casos de prueba, de imprimir toda la información que se pide, siempre, hasta ahora no he encontrado algo contrario, se imprime el caracter '\n'. En nuestro caso de ejemplo, siempre imprimimos el caracter luego de imprimir la suma total:

printf("%d\n",suma);


//---------------------------------------------------------------------------------------

Ya saben, sí tienen alguna duda o desean toque algún tema en especial, coméntenlo. En el posterior post hablaré de los datos de entrada reales(flotantes) y la lectura de caracteres. Así mismo, posteriormente mencionaré los límites de cada variable.

No hay comentarios:

Publicar un comentario