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
  1. OOI 2020
  2. Cursos introductorios

Clase 20

Clase del 4 de febrero de 2020

PreviousClase 19NextClase 21

Last updated 5 years ago

Temas

Resolución de un problema:

// Dado un conjunto de numeros
// Tu tarea es presentarlos de tal forma que los valores queden en forma de zig zag
// o, mejor dicho que el arreglo contenga numeros crecientes y decrecientes.
// a1 >= a2 <= a3 >= a4 <= a5.....
// Ejemplo:
// Dado [1, 2, 3, 4]
// La respuesta seria: [2, 1, 4, 3]
// Tambien es valido:  [4, 1, 3, 2]
// Ejemplo 2:
// [6, 8, 1, 4, 3, 2, 5, 7]
// [3, 1, 4, 2, 7, 5, 8, 6]
// 3 > 1 < 4 > 2 < 7 > 5 < 8 > 6

TAREA:

numeros_zig_zag.cpp
// Dado un conjunto de numeros
// Tu tarea es presentarlos de tal forma que los valores queden en forma de zig zag
// o, mejor dicho que el arreglo contenga numeros crecientes y decrecientes.
// a1 >= a2 <= a3 >= a4 <= a5.....
// Ejemplo:
// Dado [1, 2, 3, 4]
// La respuesta seria: [2, 1, 4, 3]
// Tambien es valido:  [4, 1, 3, 2]
// Ejemplo 2:
// [6, 8, 1, 4, 3, 2, 5, 7]
// [3, 1, 4, 2, 7, 5, 8, 6]
// 3 > 1 < 4 > 2 < 7 > 5 < 8 > 6

// Solucion:

// 1 <= 2 <= 3 <= 4 <= 5 <= 6 <= 7 <= 8
// 2 >= 1 <= 4 >= 3 <= 6 >= 5 <= 8 >= 7
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    // Leer cantidad de datos
    int N;
    cin >> N;
    // Declarar un vector de tamanio N para almacenar los numeros
    vector<int> numeros(N);
    // Leer los numeros
    for (int i = 0; i < N; i++) {
        cin >> numeros[i];
    }
    // Ordenar los numeros de menor a mayor
    sort(numeros.begin(), numeros.end());
    // Intercambiar las parejas de numeros consecutivas
    for (int i = 0; i < N; i += 2) {
        // Hacer el cambio solo si aun no nos hemos salido del arreglo
        if (i + 1 < N) {
            // Intercambia los valores de las variables
            swap(numeros[i], numeros[i + 1]);
        }
    }
    for (int i = 0; i < N; i++) {
        cout << numeros[i] << " ";
    }

    return 0;
}






VIDEO:

https://classroom.google.com/c/NDMwODQ5NTE4MjFa/a/NTEwNzQ0MjI1MzVa/details
https://youtu.be/jZmqlGV11Ks