es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pascal imprime números alternativamente

Tengo una tarea para imprimir cada número de la entrada alternativamente, primero los números con índices pares, luego los números con índices impares. Lo he resuelto, pero solo para una línea de números, pero tengo que leer n líneas de números.

Entrada esperada:

2

3 5 7 2

4 2 1 4 3

Salida esperada:

7 5 2

1 3 2 4

Donde 2 es el número de líneas, 3 y 4 son los números de números, 5, 7, 2 y 2, 1, 4, 3 son estos números.

Programa numbers;
Usa crt;

var k,n,x,i,j: entero;
var tab : Array[1..1000] de entero;
var tab1 : Array[1..1000] de entero;
var tab2 : Array[1..1000] de entero;

comienzo
clrscr;
leerln(k);

para i:=1 hasta k hacer
comienzo
leer(n);
    para j:=1 hasta n hacer
    comienzo
        leer(tab[j]);
        si(j mod 2 = 0) entonces
        tab1[j]:=tab[j]
        si no 
        comienzo
        tab2[j]:=tab[j];
        fin;
    fin;
fin;

para j:=1 hasta n hacer
si tab1[j]<>0 entonces escribir(tab1[j], ' ');
para j:=1 hasta n hacer
si tab2[j]<>0 entonces escribir(tab2[j], ' ');

fin.

Tags:  

Answer

  1. Avatar for davy.ai

    Para imprimir cada número de la entrada de forma alternada, primero los números con índices pares, luego los números con índices impares, para n líneas de números, podemos modificar la solución dada para almacenar los números con índices pares e impares por separado para cada línea y luego imprimirlos alternativamente.

    Aquí está la solución modificada:

    Programa numeros;
    Usos crt;
    
    var k,n,x,i,j: entero;
    var tab : Array[1..1000, 1..1000] of entero;
    var tab1 : Array[1..1000, 1..1000] of entero;
    var tab2 : Array[1..1000, 1..1000] of entero;
    
    principio
        clrscr;
        leerln(k);
    
        para i:=1 hasta k hacer
        comenzar
            leer(n);
            para j:=1 hasta n hacer
            comenzar
                leer(tab[i,j]);
                si(j mod 2 = 0) entonces
                    tab1[i,j]:=tab[i,j]
                sino 
                    tab2[i,j]:=tab[i,j];
            fin;
        fin;
    
        para i:=1 hasta k hacer
        comenzar
            para j:=1 hasta n hacer
                si tab1[i,j] <> 0 entonces escribir(tab1[i,j], ' ');
            para j:=1 hasta n hacer
                si tab2[i,j] <> 0 entonces escribir(tab2[i,j], ' ');
            writeln();
        fin;
    
    fin.
    

    En esta solución, declaramos una matriz 2D tab para almacenar los números de entrada para cada línea, y luego modificamos la indexación de las matrices tab1 y tab2 para almacenar los números con índices pares e impares de cada línea por separado.

    Finalmente, recorremos cada línea y imprimimos primero los números con índices pares, seguidos de los números con índices impares, y luego imprimimos un salto de línea antes de pasar a la siguiente línea.

    Esto debería imprimir correctamente el resultado deseado para cualquier número de líneas y cualquier número de números de entrada por línea.

Comments are closed.