Introducción a C++
Todo lo que aprenderás sobre C++
¿Qué es programar y por qué aprender C++?
Conceptos Generales de C++
La Historia de C++ y sus diferencias con C
Preparando el entorno de trabajo
Instalando Codeblocks
Pasos para instalar en mac
Ejecutando nuestro primer programa
¿Qué son las librerías STD? - Portada del Proyecto
Manejo de memoria
¿Qué es la memoria y tipos de datos?
Alojando variables en memoria
¿Cómo usar operadores?
¿Qué son los apuntadores?
Reto: Escribir un programa que calcule áreas.
Entrada de datos y funciones
¿Cómo introducir datos a nuestro programa?
¿Cómo usar condicionales?
Usando condicionales
¿Cómo encapsular código en funciones ?
¿Qué son los parámetros y como usarlos?
Reto: Juego narrativo implementando condicionales y entrada de datos.
Loops y arreglos
¿Qué son los arreglos?
¿Qué son los Loops?
Programando Loops
Loops , arreglos y arreglos bidimensionales
Dibujando el mapa de nuestro juego con arreglos
Manipulando mi jugador con inputs en arreglos unidimensionales
Arreglos bidimensionales
Reto: Moviendo a mi personaje en mi arreglo bidimensional
Lectura de Archivos
Creando y leyendo un archivo externo
Leyendo archivos externos
Reto: En el mapa, crear punto de inicio y salida del jugador
Programación Orientada a Objetos
¿Qué es POO?
Definiendo una clase y creando sus instancias
Encapsulación
Abstracción
Herencia
Propiedades de clase en herencia
Polimorfismo
Finalizando nuestro proyecto
Creación de personaje y archivo de encabezado
Moviendo mi personaje con entrada de datos
Mapa
Interacción entre el personaje y el mapa
Paredes
Optimizando trazado de mapa
Colisiones
Creando nuestra portada de juego
Tesoro y victoria
Conclusiones
Proyecto final
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Los arreglos bidimensionales nos ayudan a crear listas de filas y columnas. Podemos crearlos así como los arreglos normales pero debemos añadir un nuevo conjunto de corchetes y la cantidad de elementos en él para definir los espacios no solo de las filas sino también de las columnas.
Por ejemplo:
int ids[3][5] =
{
{ 0, 1, 2, 3, 4 },
{ 0, 1, 2, 3, 4 },
{ 0, 1, 2, 3, 4 }
};
Recuerda que también podemos crear arreglos tridimensionales o de todas las dimensiones que quieras pero solo acostumbramos a llegar a dos o máximo 3.
Aportes 39
Preguntas 4
En este resultado observamos las posiciones que ocupa cada número.
Tal vez esto ayude a entender un poco más cómo funcionan los arreglos bidimensionales. 😄
using namespace std;
int main()
{
int ids [5][3] =
{
{11,22,23},
{17,52,53},
{18,82,38},
{16,62,83},
{14,92,93},
};
for(int i = 0; i < 5; i++)
{
for(int p = 0; p < 3; p++)
{
cout << " Fila "<< i <<" Columna "<< p << " = " << ids[i][p]<< ",";
}
cout << endl;
}
return 0;
}
Mi aporte
Es un codigo para hacer 2 tipos de recorridos de un arreglo
<code>
#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
using namespace std;
int main(){
int mat [100][100];
int f = 0, c = 0;
cout << "Ingrese los siguientes datos :"<<endl;
cout << "Numero de filas :"<<endl;
cin >> f;
cout << "Numero de columnas :"<<endl;
cin >> c;
if (f!=c){
cout << "La matriz no es cuadrada :"<<endl;
return 0;
}
else
cout << "Ingrese los nueve valores "<<endl;
for (int j = 0; j < f ; j++){
for (int i = 0; i < c ; i ++ ){
cout << "Ingrese el valor de la fila No. "<< j + 1 <<" y la columna "<< i + 1 << " valores "<<endl;
cin >> mat [j][i] ;
}
}
cout << "La matriz original es: "<< endl;
for (int j = 0; j < f ; j++){
for (int i = 0; i < c ; i++ ){
cout << mat [j][i]<<" ";
}
cout << " "<< endl;
}
cout << " "<< endl;
cout << "El recorrido en espiral vertical es: "<< endl;
for ( int j = 0 ; j < f ; j++){
if (j % 2 == 0){
for (int i = 0; i < c; i++){
cout << mat[j][i]<<" ";
}
}
else {
for (int i = c - 1; i > -1 ; i--){
cout << mat[j][i]<<" ";
}
}
}
cout << " "<< endl;
cout << "El recorrido en espiral horizontal es: "<< endl;
for ( int i = 0 ; i < c ; i++){
if (i % 2 == 0){
for (int j = 0; j < f; j++){
cout << mat[j][i]<<" ";
}
}
else {
for (int j = c - 1; j > -1 ; j--){
cout << mat[j][i] <<" ";
}
}
}
return 0;
}
int main()
{
string bio[5][6] =
{
{ "P","L","A","T","Z","I",} ,
{ "P","L","A","T","Z","I",} ,
{ "P","L","A","T","Z","I",} ,
{ "P","L","A","T","Z","I",} ,
{ "P","L","A","T","Z","I",}
};
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 6; j++)
{
cout << bio[i][j]<< ",";
}
cout << endl;
}
return 0;```
No hay un ciclo mejor que otro pero SI acostumbramos a usar ciclos diferentes en casos diferentes para aprovechar mejor su sintaxis.
Por ejemplo, el ciclo for
resulta más cómodo cuando sabemos la cantidad de información sobre la cual que queremos iterar. En cambio, el ciclo while
lo usamos en casos donde una condición más específica debe cambiar (como un game over).
#include <iostream>
using namespace std;
int main()
{
int tridimensional[2][2][2]=
{
{{1,2},{3,4}},
{{5,6},{7,8}}
};
for(int i = 0; i < 2; i++)
{
for(int j = 0; j < 2; j++)
{
cout << "[ ";
for(int k = 0; k < 2; k++)
{
cout << tridimensional[i][j][k];
cout << " ";
}
cout << "]";
}
cout << endl;
}
return 0;
}
Excelente clase
siempre hay que inicializar a cero los indices de las matrices o asignarles un valor? porque intenté mostrar con for una matriz vacía y me imprimió una andanada de cifras extrañas.
*Mis apuntes sobre: “Loops, arreglos y arreglos bidimensionales”:
Les comparto el primer código, donde se recorrió con un for un arreglo unidimensional.
Ejemplo 1:
#include <iostream>
using namespace std;
int main()
{
string names[5]={"Asterix","Obelix","Idiafix","Panoramix","Asurenceturix"};
for(int i=0;i<5;i++)
{
cout<<names[i]<<endl;
}
cout<<endl<<endl;
int index=0;
while(index<5)
{
cout<<names[index]<<endl;
index++;
}
return 0;
}
Ejemplo 2:
#include <iostream>
using namespace std;
int main()
{
int ids[5][5]=
{
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
};
for(int i=0;i<5;i++)
{
for(int j=0;j<5;j++)
{
cout<<ids[i][j];
}
cout<<endl;
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int id[5][3] =
{
{0,1,2},
{0,1,2},
{0,1,2},
{0,1,2},
{0,1,2}
};
for (int i = 0; i < 5; i++)
{
for (int f = 0; f < 3; f++)
{
cout << id[i][f] << " ";
}
cout << endl;
}
}
Para los arreglos o arrays de dos dimensiones hay que recordar que primero se establece el número de filas y luego el de las columnas.
arreglo[filas][columnas]
<#include <iostream>
using namespace std;
int main()
{
cout << "Bidimensionales" << endl;
//string Names[5] = {"Asterix","Obelix","Idiafix","Panoramix","Asurenceturix");
/*for(int i = 0; i < 5; i++)
{
cout << Names [i] << endl;
}*/
/*int i = 0;
while(i < 5)
{
cout << Names[i] << endl;
i++;
}*/
int ids[5][5] =
{
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
};
for(int i = 0; i < 5; i++)
{
for(int y = 0; y < 5; y++)
{
cout << ids[i][y];
}
cout << endl;
}
return 0;
}>
#include <iostream>
using namespace std;
int main()
{
int index = 5;
string nombres[index] = {"Asterix","Obelix","Ideafix","Panoramix","Asunrenceturix"};
for (int i = 0; i < index ; i++)
{
cout << i+1 << " " << nombres[i] << endl;
}
}
int ids[5][3];
5 indica la cantidad de filas, 3 indica la cantidad de columnas.
interesante
este es mi aporte, así podemos agregar datos en la consola a los arreglos bidimensionales
int main(int argc, char const *argv[])
{
int ids[3][5];
int index = 0;
do
{
cout << "ingresa los numero que quieras. quedan: " << 15 - index << endl;
cin >> ids[0][index];
index++;
} while (index != 15);
cout << "estos son los numeros:" << endl;
index = 0;
do
{
cout << "los numeros son: " << ids[0][index] << endl;
index++;
} while (index != 15);
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int direccion [5][5] =
{
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
};
for (int i=0; i<5;i++)
{
for(int p=0;p<5;p++)
{
cout<<direccion [p][i];
}
cout<<endl;
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{ /*Arreglo bidimensional
Multiples arreglos de 1 dimension
en este caso, 5 arreglos de 3 posiciones*/
int ids[5][3] = {
{0,3,5},
{5,7,6},
{8,1,3},
{4,1,9},
{7,3,5}
};
for(int i = 0; i < 5; i++)
{
cout << "\n";
for(int j = 0; j < 3; j++)
{
cout << ids[i][j] << " ";
}
}
}```
#include <iostream>
using namespace std;
int main() {
int ids[5][5] = {
{ 0, 1, 2, 3, 4 },
{ 0, 1, 2, 3, 4 },
{ 0, 1, 2, 3, 4 },
{ 0, 1, 2, 3, 4 },
{ 0, 1, 2, 3, 4 },
};
for ( int i = 0; i < 5; i++ ) {
for ( int j = 0; j < 5; j++ ) {
cout <<ids[i][j] << ", ";
}
cout << endl;
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int ids[5][5]=
{
{0,1,2,3,4},
{0,1,2,3,4},
{0,1,2,3,4},
{0,1,2,3,4},
{0,1,2,3,4}
};
for (int i=0;i<5;i++)
{
for (int y=0;y<5;y++)
{
cout<< ids[i][y];
}
cout<< endl;
}
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int ids[5][5] =
{
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0},
{0,0,0,0,0}
};
for(int i = 0; i < 5; i++)
{
for(int p = 0; p < 5; p++)
{
cout << ids[i][p];
}
cout << endl;
}```
return 0;
}
#include <iostream>
using namespace std;
int main()
{
int diArreglo[4][4]=
{
(0, 0, 0, 0),
(0, 0, 0, 0),
(0, 0, 0, 0),
(0, 0, 0, 0),
};
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
cout<<diArreglo[i][j];
}
cout<<endl;
}
return 0;
}
Arreglo bidimensional: Es lo mismo que una matriz, vamos a crear filas y columnas, al momento de tener que interactuar con alguna de sus posiciones tendremos que hacerlo deacuerdo a su coordenada, como por ejemplo:
lo que esta resaltado de amarillo en el arreglo bidimensional
Estos bucles con 2 arrays son mas difíciles de entender y manejar
Gracias
No es muy claro en la clase, pero el primer número al declarar la matriz corresponde a las filas, y el segundo a las columnas.
Matriz Identidad
#include <iostream>
using namespace std;
int main()
{
int ids[3][3] =
{
{ 1,0,0},
{ 0,1,0},
{ 0,0,1},
};
for(int i = 0; i < 3; i++)
{
for(int j = 0; j < 3; j++)
{
cout << ids[i][j];
}
cout << endl;
}
return 0;
}
algo que escribi para simular candy crush jaja
#include <iostream>
#include <time.h>
using namespace std;
int main() {
srand(time(NULL));
int matriz[10][10];
char objects[14] = {'~','`','@','!','#','$','%','^','&','*','(','|','+','='};
char gameObjects[10][10];
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
gameObjects[i][j] = objects[1+(rand()% + 14)];
}
}
cout<<endl<<endl;
for(int i = 0; i < 10; i++){
for(int j = 0; j < 10; j++){
cout<<gameObjects[i][j]<<" ";
}
cout<<endl<<endl;
}
return 0;
}
Me fue un poco complejo entenderlo al principio, pero hacere este ejemplo me ayudo.
#include <iostream>
using namespace std;
int main()
{
int Examples[3][2] =
{
{1,2},
{3,4},
{5,6}
};
cout << Examples[1][0] << endl;
}```
Me encanto esta clase, por que no hay más cursos con este profesor?
Se logra el mismo resultado, al poner dentro del parametro del arreglo la suma de index con index++ pero al poner index = index + 1 el IDE me manda a un pedazo de código completamente diferente.
Alguien sabé ¿Por qué?
#include <iostream>
using namespace std;
int main()
{
string Names[5] = {"Asterrix", "Obelix", "Panoramix", "Asurenceturix", "Idiafix" };
int index = 0;
while (index < 5)
{
cout << Names[index++] << endl;
}
}
gran página para entender c++
Para encontrar el length de un array puedes usar uno de los siguientes dos metodos:
# include <iostream>
using namespace std; // Esto sirve para utilizar cout y cin
int main()
{
string Names[5] = {"Asterix","Obelix","Idiafix","Panoramix","Asurenceturix"};
// Method 1
int len1 = sizeof(Names)/sizeof(Names[0]);
cout << "The length of the array is: " << len1 << endl;
// Method 2
int len2 = *(&Names + 1) - Names;
cout << "The length of the array is: " << len2 << endl;
for (int i = 0; i < len1; i++)
{
cout << Names[i] << endl;
}
return 0;
}
https://www.tutorialspoint.com/how-do-i-find-the-length-of-an-array-in-c-cplusplus
Amigos, les dejo en el siguiente enlace mi ejemplo de arreglos bidimensionales interactivos
https://platzi.com/tutoriales/1545-c-plus-plus/9173-arreglo-bidimensional-interactivo/
Código para imprimir arreglos bidimensionales
#include <iostream>
using namespace std;
int main(){
int i, j;
int ids[5][3] = {
{0,1,2},
{3,4,5},
{6,7,8},
{9,10,11},
{12,13,14}
};
for(i = 0; i < 5; i++){
for(j = 0; j < 3; j++){
cout << ids[i][j] << endl;
}
}
return 0;
}
#include<iostream>
#include<conio.h>
#include <cmath>
using namespace std;
int main() {
cout << "Bienvenido" << endl;
int direccion[3][5] =
{
{ 3, 3, 3, 3, 3},
{ 3, 3, 3, 3, 3},
{ 3, 3, 3, 3, 3}
};
for (int f = 0; f < 3; f++)
{
for (int c = 0; c < 5; c++)
{
cout << direccion[f][c];
}
cout << endl;
}
getch();
return 0;
}
Gran clase!
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.