Olimpiada Oaxaqueña de Informática
  • Bienvenido a la Olimpiada Oaxaqueña de Informática
  • Temario
    • Introducción a la Programación
      • Definición de computadora
      • Definición de Sistema Operativo
      • Definición de lenguaje de programación
      • Definición de compilador
      • Sistema Binario y Hexadecimal
      • Operaciones AND, OR, NOT, XOR
      • Definición y ejemplo de algoritmos
      • Representación gráfica de un algoritmo
      • Qué es un pseudocódigo
        • Estructura base y Variables
        • Condicionales y ciclos
      • Configuración e instalación de compilador de C y C++
    • Lenguajes de Programación C y C++
      • Presentación de C y C++ como lenguajes de programación
      • Estructura de un programa en C++
        • Ejemplos de códigos en C++
      • Tipos de datos y variables
      • Entrada y salida de datos STDIN SDTOUT
      • Estructuras de Control y Repetición
      • Introducción a estructuras de datos: arreglos
    • Algoritmos de ordenamiento
      • Bubble Sort
    • Estructuras de datos
      • Pilas (Stack)
    • Paradigmas de Solución de Problemas
    • Gráfos
    • Matemáticas
    • Procesamiento de Cadenas
  • OOI 2019
    • Cursos online
      • Clase 1
      • Clase 2
      • Clase 3
      • Clase 4
      • Clase 5
      • Clase 6
      • Clase 7
      • Clase 8
      • Clase 9
      • Clase 10
      • Clase 11
      • Clase 12
      • Clase 13
      • Clase recursión introductorio
  • OOI 2020
    • Instrucciones para nuevos miembros
    • Cursos introductorios
      • Clase 1
      • Clase 2
      • Clase 3
      • Clase 4
      • Clase 5
      • Clase 6
      • Clase 7
      • Clase 8
      • Clase 9
      • Clase 10
      • Clase 11
      • Clase 12
      • Clase 13
      • Clase 14
      • Clase 15
      • Clase 16
      • Clase 17
      • Clase 18
      • Clase 19
      • Clase 20
      • Clase 21
      • Clase 22
    • Cursos avanzados
      • Temario
      • Sesión 1
      • Sesión 2
      • Sesión 3-4
      • Sesión 5
      • Sesión 6
      • Sesión 7
      • Sesión 8
      • Sesión 9-10
      • Sesión 11
      • Sesión 12
      • Sesión 13
      • Sesión 14
      • Sesión 15
      • Sesión 16
      • Sesión 17
      • Sesión 18
      • Sesión 19
      • Sesión 20
      • Sesión 21
      • Sesión 22
    • Cursos matemáticas discretas
      • Sesión 1
      • Sesión 2
  • OOI 2021
    • Fase 4. Semana 1
  • Misceláneos
    • Complejidad de un algoritmo
    • Tutorial instalación VS Code, compilador y debugger para C++
Powered by GitBook
On this page
  • Solución de Tarea
  • Ejercicio de Clase
  • Solución
  • Problema de Tarea
  1. OOI 2019
  2. Cursos online

Clase 9

PreviousClase 8NextClase 10

Last updated 6 years ago

Temas: Revisión de tareas y práctica.

Solución de Tarea

Tarea: La descripción de la tarea la puedes encontrar en la

Solución

/*
    Encontrar cuántas horas minutos y segundos hay 
    de diferencia hay entre dos horas dadas.

    Entrada:

    3 enteros H1, M1, S1 representando las horas, minutos y segundos
    de la primer hora.
    3 enteros H2, M2, S2 representando las horas, minutos y segundos
    de la segunda hora.

    Salida:

    Tres enteros indicando las horas, minutos y segundos de diferencia
    entre las dos horas
*/

#include <stdio.h>

int main(int argc, char const *argv[]) {
    int h1, m1, s1;
    int h2, m2, s2;

    int segsTotales1 = 0;
    int segsTotales2 = 0;

    int resultado = 0;

    scanf("%d %d %d", &h1, &m1, &s1);
    scanf("%d %d %d", &h2, &m2, &s2);

    segsTotales1 = h1 * 3600 + m1 * 60 + s1;
    segsTotales2 = h2 * 3600 + m2 * 60 + s2;

    resultado = segsTotales1 - segsTotales2;
    if (resultado < 0) {
        resultado *= -1;
    }

    int hr, mr, sr;

    hr = resultado / 3600;
    resultado = resultado % 3600;
    mr = resultado / 60;
    sr = resultado % 60;

    printf("%d %d %d\n", hr, mr, sr);

    return 0;
}

Nota: Recuerda pasar el código a C++ y entregarlo como tarea.

Ejercicio de Clase

TEXT es un lenguaje para formateo de tipografías inventado por Donald Knuth. Toma archivos dónde se especifican las instrucciones para formatear el texto y produce un hermoso documento.

Normalmente se usan las " (comillas dobles) para indicar citas. Algunos teclados usandos en otros lugares del mundo no tienen este símbolo, pero tiene la comilla simple izquierda (`) y la comilla simple derecha ('). Así que TEX permite usar dos veces las comillas simple izquierda y dos veces la comilla simple derecha para simular el comportamiento de las comillas dobles.

Tu tarea consiste en formatear un documento que erróneamente tiene comillas dobles en vez de usar el estandar de TEXT. Por ejemplo, si el documento fuente tiene el siguiente contenido:

"Ser o no ser," dijo el bardo, "esa es la cuestión"

El texto correcto debe ser:

``Ser o no ser,'' dijo el bardo, ``esa es la cuestión''

ENTRADA:

La entrada consiste varias lineas de texto conteniendo en total un número par de comillas dobles. La entrada termina con fin de archivo.

SALIDA:

Imprime el mismo texto de entrada pero remplazando las comillas dobles por las usadas por TEXT.

Ejemplo de entrada

"To be or not to be," quoth the Bard, "that
is the question".
The programming contestant replied: "I must disagree.
To `C' or not to `C', that is The Question!"

Ejemplo de salida

``To be or not to be,'' quoth the Bard, ``that
is the question''.
The programming contestant replied: ``I must disagree.
To `C' or not to `C', that is The Question!''

Solución

#include <stdio.h>

int main(int argc, char const *argv[]) {
    char caracter;
    int contador = 0;
    
    while(scanf("%c", &caracter) != EOF) {
        if (caracter == '"') {
            contador ++;
            if ((contador % 2) == 0) {
                // SI es el contador es par
                // imprimimos las comillas simples derechas
                printf("''");
            } else {
                // SI es el contador es impar
                // imprimimos las comillas simples izquierdas
                printf("``");
            }
        } else {
            printf("%c", caracter);
        }
    }

    return 0;
}

Problema de Tarea

Escribe un programa que invierta las letras de cada palabra que se te dé en la entrada preservarndo el orden de cada palabra

ENTRADA

La entrada consiste en varias lineas y varias palabras, las palabras están formadas por caracteres continguos e imprimibles separadas por un espacios. Deberás leer hasta fin de archivo.

SALIDA

La salida deben ser las mismas lineas y las palabras que en la entrada, es decir, debes respetar el orden las lineas y las palabras. Sin embargo las letras de cada palabra deben estar invertidas.

Ejemplo de entrada

I  love  you.
You  love  me.
We're  a  happy  family.

Ejemplo de salida

I  evol  .uoy
uoY  evol  .em
er'eW  a  yppah  .ylimaf

Problema Original
Problema original
clase 8