C/Visual C - Codigo en C++ para imprimir libros

 
Vista:
Imágen de perfil de Sthayssy
Val: 5
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Codigo en C++ para imprimir libros

Publicado por Sthayssy (1 intervención) el 21/04/2020 01:26:17
Saludos a los programadores; mi nombre es Sthayssy Prado Saenz; queria pedir un favor; no soy muy buena programando; por ello quisiera que me ayuden con un código para obtener lo siguiente:
Deseo imprimir varios libros de mas de 400 páginas cada uno; pero 8 paginas por hoja (Es decir 4 en cara anversa y 4 en cara reversa); pero que al cortar la hoja A4 (Que esta en estado vertical) del medio osea horizontal; juntando las partes superior e inferior se vuelva un libro (Un folleto igual al que se puede imprimir en formato pdf pero la mitad de tamaño). Estuve analizando datos o caracteristicas que se necesitará para la codificación respectiva y concluyo que:

I. El nro de páginas siempre debe ser múltiplo de 8, para de esta manera saber cuantas hojas se usará en total al imprimir. Veamos con ejemplos pequeños y despues generalizamos:
1. Cuando el libro tiene 8 páginas (Nro de páginas entre 8: 8÷8=1 hoja); para imprimir; el orden seria el siguiente:
Cara anversa: 8, 1, 6, 3 -> "1°hoja" (copiar al cuadro de elección de páginas a imprimir)
Cara reversa: 2, 7, 4, 5 -> "1° hoja" (copiar al cuadro de elección de páginas a imprimir).

2. Cuando el libro tiene 16 páginas (Nro de páginas entre 8: 16÷8=2 hojas); para imprimir; el orden seria el siguiente:
Cara anversa: 16, 1, 14, 3 -> "1°hoja"
12, 5, 10, 7 -> "2°hoja" (copiar al cuadro de elección de páginas a imprimir)
Cara reversa: 2, 15, 4, 13 -> "1°hoja"
6, 11, 8, 9 -> "2°hoja" (copiar al cuadro de elección de páginas a imprimir) .
.
.
.
n. Cuando el libro tiene x páginas (Nro de páginas entre 8: x÷8=y hojas); para imprimir; el orden seria el siguiente:
Cara anversa: x, 1, x-2, 3 -> "1°hoja"
x-4, 5, x-6, 7 -> "2°hoja"
., ., ., . -> ".° hoja"
., ., ., . -> ".° hoja"
., ., ., . -> ".° hoja"
(x-4y+4), (4y-3), (x-4y+2), (4y-1)->"y° hoja" (copiar al cuadro de elección de páginas a imprimir)
Cara reversa: 2, x-1, 4, x-3 -> "1°hoja"
6, x-5, 8, x-7 -> "2°hoja"
., ., ., . -> ".° hoja"
., ., ., . -> ".° hoja"
., ., ., . -> ".° hoja"
(4y-2), (x-4y+3), (4y), (x-4y+1)->"y° hoja" (copiar al cuadro de elección de páginas a imprimir).

De los análisis (1), (2), ... ,(n) se puede deducir:

a)En todos los casos anverso y reverso: La suma de la primera y segunda página, de la tercera y cuarta página, de la quinta y sexta página, asi sucesivamente; será igual al nro de páginas total aumentado en una unidad.

i).(8+1=6+3=8+1)-> Anv; (2+7=4+5=8+1) Rev
ii).(16+1=14+3=12+5=10+7=16+1) -> Anv; (2+15=4+13=6+11=8+9=16+1) -> Rev.
iii).(x+1=x-2+3=x-4+5=x-6+7=...=(x-4y+4)+(4y-3)=(x-4y+2)+(4y-1)=x+1) -> Anv.
(2+(x-1))=4+(x-3)=6+(x-5)=8+(x-7)=...=(4y-2)+(x-4y+3)=(4y)+(x-4y+1)=x+1) -> Rev.

b)Nótese que en la página anversa; desde la primera página, hacia la tercera, quinta, asi sucesivamente (páginas impares) disminuyen a razón de 2 unidades; mientras que en la página reversa desde la primera página, hacia la tercera, quinta, asi sucesivamente (páginas impares) aumentan a razón de 2 unidades.

c)En el caso de la página anversa; desde la segunda página, hacia la cuarta, sexta, asi sucesivamente (páginas pares) aumentan a razón de 2 unidades; mientras que en la página reversa desde la segunda página, hacia la cuarta, sexta, asi sucesivamente (páginas pares) disminuyen a razón de 2 unidades.

d)Al comparar la primera, tercera página de la primera fila con la primera, tercera página de la segunda fila, y con la primera, tercera página de la tercera fila y asi sucesivamente se observa que disminuyen a razón de 4 unidades en la página anversa; y de igual forma en la segunda, cuarta página de la primera fila con la segunda, cuarta página de la segunda fila, y con la segunda, cuarta página de la tercera fila y asi sucesivamente se observa que disminuyen a razón de 4 unidades en la página reversa.

e)Al comparar la segunda, cuarta página de la primera fila con la segunda, cuarta página de la segunda fila, y con la segunda, cuarta página de la tercera fila y asi sucesivamente se observa que aumentan a razón de 4 unidades en la página anversa y de igual forma en la primera, tercera página de la primera fila con la primera, tercera página de la segunda fila, y con la primera, tercera página de la tercera fila y asi sucesivamente se observa que aumentan a razón de 4 unidades en la página reversa.

II. En el caso de que el nro de páginas no sea múltiplo de 8, se debe de considerar sumar la cantidad necesaria de páginas para que sea múltiplo de 8 y de esta manera saber cuantas hojas se usará en total al imprimir. Consideremos los siguientes casos para generalizar:
1. Cuando el libro tiene un nro de páginas múltiplo de 8°+1; se sumará 7 páginas para convertirlo en 8°+8 = 8°.
2. Cuando el libro tiene un nro de páginas múltiplo de 8°+2; se sumará 6 páginas para convertirlo en 8°+8 = 8°.
3. Cuando el libro tiene un nro de páginas múltiplo de 8°+3; se sumará 5 páginas para convertirlo en 8°+8 = 8°.
4. Cuando el libro tiene un nro de páginas múltiplo de 8°+4; se sumará 4 páginas para convertirlo en 8°+8 = 8°.
5. Cuando el libro tiene un nro de páginas múltiplo de 8°+5; se sumará 3 páginas para convertirlo en 8°+8 = 8°.
6. Cuando el libro tiene un nro de páginas múltiplo de 8°+6; se sumará 2 páginas para convertirlo en 8°+8 = 8°.
7. Cuando el libro tiene un nro de páginas múltiplo de 8°+7; se sumará 1 páginas para convertirlo en 8°+8 = 8°.

Por lo tanto si: nro de páginas es: 8°+r; se le sumará (8-r) páginas para que nro de páginas sea 8°.

III. El objetivo del código es que me arroje los valores (separados por comas) los cuales se copiará al recuadro de la impresora para primero imprimir las páginas anversas y luego girar las hojas e imprimir las páginas reversas y posteriormente realizar el corte a tamaño A5 y formar un pequeño folleto. Para que se entienda más se mostrara un ejemplo; cómo debe quedar (Consideremos un libro de 24 páginas).

Nro de pag: 24 -》24÷8=3 (hojas); del cual para imprimir; el orden seria el siguiente:

Página anversa: 24, 1, 22, 3 -> "1°hoja"
20, 5, 18, 7 -> "2°hoja"
16, 9, 4, 11 -> "3°hoja"

Página reversa: 2, 23, 4, 21 -> "1°hoja"
6, 19, 8, 17 -> "2°hoja"
10, 15, 12, 13 -> "3°hoja"

Luego el código debe mostrarme un mensaje similar o parecido a: Las páginas a imprimir de la cara anversa son: 24, 1, 22, 3, 20, 5, 18, 7, 16, 9, 4, 11. (Separados por comas)

Y en otro mensaje mostrarme: Las páginas a imprimir de la cara reversa son (Separados por comas):
2, 23, 4, 21, 6, 19, 8, 17, 10, 15, 12, 13

Nota: Mi planteamiento es el siguiente:

a) Ingresar el nro de páginas del libro.
b) Comprobar si el nro de páginas es múltiplo de 8; si es asi proceder con el procedimiento usando una sentencia para obtener las páginas solicitadas. Y si no es múltiplo de 8; sumar la cantidad de páginas necesarias para que lo sea.
c) Para el procedimiento considero usar la sentencia repetiviva Para (for) en la impresión de las páginas y un acumulador para el almacenamiento.

Porvafor si alguien pudiera ayudarme envíeme a mi correo electrónico: [email protected]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
-2
Responder