66. C++ || Punteros
En esta nueva sección veremos un tema que para muchos representa un gran dolor de cabeza, y con esto me refiero a los punteros en C++. Sin embargo, no nos vamos a apegar a esta mala tradición. No veo la necesidad de decir que los punteros son difíciles de aprender; difícil es que el estudiante estudie y se esfuerce.
Nos adentraremos a fondo en este apartado ya que es muy importante a la hora de programar en C++, y de hecho, este concepto es quien aporta toda la eficiencia que proporciona el lenguaje. Si no existiera la presencia de los punteros en un programa, tal vez no sería tan potente como el programador desearía.
A pesar de no ver el estudio de los punteros como una tarea muy complicada, vamos a entender de dónde nace esto, es decir, el problema a la hora de la enseñanza, es que en todas partes se encuentra el mismo concepto, no importa que sea en un libro, vídeos, en clases o por medio de otra persona, casi siempre dirán lo mismo. Esta práctica al parecer no da mucho resultados, porque si así no lo fuera, no existiría esa idea sobre que entender los punteros es muy difícil. Por eso trataré de crear un contenido más fresco de cara al estudiante. Los tiempos cambian y es sólo la educación la que se queda estancada en mejorar el proceso de aprendizaje. Quizá no han notado la importancia de transmitir los conocimientos de otra manera, y siempre lo han hecho igual; qué mal eso pienso yo.
A lo largo del contenido, que será largo, trataré de explicar este tema desde otro punto de vista, uno que sea totalmente nuevo que sirva para algunos, que de verdad ayude y que sea fácil de comprender porque esa es la verdad; los punteros no generan dificultades...
Tú como lector, me encantaría que me apoyaras en esto que trato de hacer: Buscar una mejor manera de explicar las cosas. Y que tras cada entrada que publique, sea comentada por ti, sugiriendo una mejor forma de decir las cosas. Sin más palabrerías, veamos qué vamos a aprender ahora.
- ¿Qué son las referencia y direcciones?
- Concepto claro de los punteros.
- Declaración e inicialización de punteros.
- Indirección de punteros.
- Punteros NULL y void.
- Puntero a puntero.
- Punteros y arrays.
- Arrays de punteros.
- Ventajas de los punteros.
- Punteros de cadenas.
- Aritmética de punteros.
- Punteros constantes frente a punteros a constantes.
- Punteros como argumentos de funciones.
- Punteros a funciones.
- Punteros a estructuras.
Y que la cantidad de contenidos no asuste a nadie, todo es cuestión de hacer un esfuerzo para ser mejor.
calcule el valor de la siguiente suma 1+2+3+4+...+n
ResponderEliminar#include
Eliminarusing namespace std;
int main () {
int n, suma = 0;
cin >> n;
int i = 1;
while (i<=n){
suma = suma + i;
++i;
}
cout << suma << endl;
}
falta el despues del #include
Eliminares que no sale pero despues del #include tienes que poner < iostream > todo junto, sin espacios
EliminarNo entiendo el que son las referencias y direcciones y lo demas que menciono en la pagina donde lo encuentro ?? por favor me puedan responder lo mas pronto posible.
ResponderEliminarImplementar un algoritmo que imprima el elemento que se repite mas
ResponderEliminarveces en un vector de enteros, de la siguiente forma:
• El programa debe llenar el vector con 50 valores random, entre 1 y
49
• Luego se debe contar las veces que aparece cada elemento y generar
un vector de valores y otro de frecuencias
• Se debe borrar el elemento que se repite mas veces y el que se repite
menos veces del vector original
• Finalmente, calcular la suma de los elementos pares del vector
original luego del borrado, y la suma de los elementos impares luego
del borrrado
pueden ayudarme
ResponderEliminarHi Anónimo.. interesante problema, haber te ayudo a lo mas difícil, algo tarde jajaja
EliminarEste comentario ha sido eliminado por el autor.
Eliminar#include
Eliminar#include
#include
#include
using std::cout; using std::cin;
using std::endl; using std::string;
#define T 20
#define RANGO T
#define MITAD T/2
bool Valida_nun(int vec[], int pos_j , int &t);
/* SOLO CAMBIAD T PARA TAMAÑO DEL VECTOR Y RANGO PARA SU RANGO:: RANGO-1*/
// std::vector , "es mas sencillo".
// tomad en cuenta que por vector de tam 50 tiene un aprox. de casi 1000 iteraciones
//RECORDAD SIEMPRE LIBERAR MEMORIA
// ESTETICAMENTE NO ESTA BONITO
int main() {
srand(time(0x0)); // time
const int TAM = (T / 3) + MITAD;
auto vector = new int[T]; // creacion dinamica del vector entero
auto frecuencia = new int[TAM+1]{}; // creacion de vector frecuencia.. si es 50 , 25 es suficiente
auto valores = new int[TAM+1]{}; // creacion de vector valores.. igual que frecuencia
for (int n = 0; n < T; n++)
Eliminarvector[n] = 1 + rand() % (T-1); // llenando de 1 -> 49 aleatoriamente por for
int conteo(0) ,a(0);
int i, j;
int tot = 0;
for ( j = 0; j < T; j++)
{
if (!Valida_nun(vector, j,tot)) { // si no se encuentra el num nuevamente en vector,agregalo.
valores[conteo++] = vector[j];
}
else
continue;
for ( i = j; i < T; i++)
if (vector[j] == vector[i]) { // hacer el conteo en frecuencia de la misma posicion
frecuencia[a] += 1;
// tot++;
}
a++;
}
a = 0;
cout << "Valores Frecuencia" << endl;
while (valores[a])
{
cout << valores[a]<<" "< new int[50]
delete[] frecuencia; // igual que arriba
delete[] valores; // igual
cout<< endl;
return EXIT_SUCCESS;
}
bool Valida_nun(int vec[], int pos_j , int &t) {
for (int i = 0; i < pos_j; i++) {
//t = t+1;
if (vec[i] == vec[pos_j])
return true;
}
return false;
}
noto que algunas cosas no se copian.. ni modo
Eliminar