Está en la página 1de 19

UNIVERSIDAD NACIONAL “JOSE FAUSTINO SANCHEZ CARRION”

FACULTAD DE INGENIERIA INDUSTRIAL, SISTEMAS E INFORMATICA

ESCUELA ACADEMICO PROFESIONAL: INGENIERIA ELECTRONICA

ASIGNATURA: FUNDAMENTOS Y METODOLOGIA DE LA PROGRAMACION

SEMESTRE ACADEMICO: 2023 - I CICLO: II

DOCENTE : ING. HUGO SERRANO RODAS

TEMA : PUNTEROS - PRÁCTICA

1.

#include <iostream>

#include <conio.h>

#include <cstdlib>

using namespace std;

char *name; //name inicialmente no apunta a nada

char alum[]= "Ing. HUGO SERRANO RODAS";

char prof[]= "Ing. JAVIER MANRIQUE QUIÑONEZ";

int main()

system ("cls");

cout<<"Esto es lo que contiene la variable alum[20]:"<<alum<<"\n";

cout<<"Esto es lo que contiene la variable prof[15]:"<<prof<<"\n\n\n";

name=alum; //ahora name apunta a alum

cout<<"\n El puntero name ahora es:"<<name;

name=prof; //ahora name cambia su dirección y apunta a prof

cout<<"\n El puntero name ahora es:"<<name;

getch(); }
2.

#include <iostream>

#include <conio.h>

using namespace std;

int *n; //n inicialmente no apunta a nada

int a=27; int p=5123;

int main()

system("cls");

cout<<"Esto es lo que contiene la variable a:"<<a<<"\n";

cout<<"Esto es lo que contiene la variable p:"<<p<<"\n\n\n";

n=&a; //ahora n apunta a la variable a

cout<<"\n El puntero n ahora tiene el valor:"<<*n;

cout<<"\n y tiene la dirección:"<<n;

n=&p; //ahora n cambia su dirección y apunta a p

cout<<"\n\n El puntero n ahora tiene el valor:"<<*n;


cout<<"\n y tiene la dirección:"<<n;

getch(); }

3.

#include <iostream>

#include <conio.h>

using namespace std;

int *n; //n inicialmente no apunta a nada

int main()

{ /* Se reserva 5 espacios del tipo int */

n=new int[5];

/* Ahora se puede guardar valores en esos espacios */

n[0]= -245; n[1]=56; n[2]=345; n[3]=2; n[4]=1986;

system("cls"); /* Se muestra en pantalla */

for(int i=0; i<5; i++)

cout<<"\n Valor del item n["<<i<<"]="<<n[i]<<", dirección en memoria:"<<&n[i];

getch();

/* Se libera la memoria reservada */

delete n; }
4.

#include <iostream>

#include <conio.h>

#include <cstdlib>

#include <iomanip>

using namespace std;

int main()

{ float *matriz;

int n, i, j;

cout<<"\Ingrese la dimensión de la matriz cuadrada:";

cin>>n;

matriz=new float[n*n];

srand(time(0));

for(int i=0; i<n; i++)

for(int j=0; j<n; j++)

matriz[n*j+i]=static_cast<float>(rand() % 2000)/100.0;

for(int i=0; i<n; i++)

for(int j=0; j<n; j++)

cout<<" "<<setprecision(3)<< matriz[n*j+i];

cout<<"\n";

}
delete matriz;

getch(); }

5.

#include <iostream.h>

#include <conio.h>

#include <string.h>

char *msg;

void main()

{ msg=new char[40];

strcpy(msg, “Esto ser almacenado en memoria…”);

clrscr();

cout<<”\n”<<”La variable puntero msg contiene:\n”<<msg;

getch();

delete msg;

cout<<”\n”<<”La variable puntero msg contiene:\n”<<msg;

getch();

msg=NULL;

cout<<”\n”<<”La variable puntero msg contiene:\n”<<msg;

getch();

}
6. El siguiente programa utiliza una variable de tipo entero y una variable puntero. La salida del
programa muestra el contenido de la variable y la dirección de memoria donde se almacena la
variable.

#include <iostream>

#include <conio.h>

#include <cstdlib>

using namespace std;

int main()

{ int n=75; int *p; p=&n;

system("cls");

cout<<endl;

cout<<"Valor variable (n)…………………………….:"<<n<<endl;

cout<<"Variable (p) referencia a la dirección de (n)…:"<<&n<<endl;

cout<<"Variable (p) referencia a la dirección de (n)…:"<<p<<endl;

cout<<"Contenido de variable a la que apunta p (*p)…:"<<*p;

getch(); };

7. El siguiente programa utiliza la asignación de punteros.

#include <iostream>
#include <conio.h>

using namespace std;

int main()

{ int num; int *ptr1, *ptr2;

num=100;

//Se asigna la dirección de num a la variable puntero ptr1

ptr1=&num; //Asignación de punteros

ptr2=ptr1;

cout<<"Dirección de ptr1…:"<<ptr1<<endl;

cout<<"Dirección de ptr2…:"<<ptr2<<endl;

cout<<"\n Apuntan a la misma dirección";

getch(); }

8. El siguiente programa utiliza una variable de tipo entero que se ingresa por teclado y una
variable puntero. La salida del programa muestra el contenido de la variable y la dirección de
memoria donde se almacena la variable.

#include <iostream>

#include <conio.h>

#include <cstdlib>

using namespace std;

int main()

{ int *ptrx; int x;


cout<<"Ingrese un número:"; cin>>x;

// &x determina la dirección de la variable x

ptrx=&x; //Esta dirección se le asigna a la variable puntero ptrx

cout<<"El valor de la variable x es:"<<x<<endl;

//La dirección se muestra como un número hexadecimal

cout<<"La dirección donde se almacena la variable x es:"<<ptrx<<endl;

// *ptrx y x se refieren a la misma variable

cout<<"El valor de la variable que apunta ptr es:"<<*ptrx<<endl;

getch(); }

9. El siguiente programa utiliza dos variables de tipo long y una de tipo float, el programa

muestra las direcciones que ocupan dichas variables en hexadecimal y decimal.

#include <iostream>

#include <conio.h>

#include <iomanip>

#include <cstdlib>

using namespace std;

int main()

{ long n; long *ptrI; float fnum; float *ptrF;


n=100; fnum=100.10; ptrI=&n; ptrF=&fnum;

cout<<"El valor de n es:"<<n<<endl;

cout<<"La dirección de n es (hexadecimal):"<<ptrI<<endl;

cout<<"La dirección de n es (decimal):"<<dec<<long(ptrI)<<endl;

cout<<"El valor de fnum es:"<<fnum<<endl;

cout<<"La dirección de fnum es (hexadecimal):"<<ptrF<<endl;

cout<<"La dirección de fnum es (decimal):"<<dec<<long(ptrF)<<endl<<endl;

cout<<"Otra forma de expresar el contenido de las variables es n y fnum…\n\n";

cout<<"El valor de n es *ptrI:"<<*ptrI<<endl;

cout<<"El valor de fnum es *ptrF:"<<*ptrF<<endl<<endl;

getch(); }

10. El siguiente ejemplo utiliza un puntero a carácter el programa muestra el contenido de la


variable y la dirección.

#include <iostream>

#include <conio.h>

#include <iomanip>

using namespace std;

int main()

{ char *puntero; char variable;


variable='a';

puntero=&variable;

cout<<"Valor almacenado en variable (ASCII):"<<dec<<long(variable)<<endl;

cout<<"Valor almacenado en puntero:"<<dec<<long(puntero)<<endl;

*puntero='b';

cout<<" Nuevo valor almacenado en variable (ASCII):"<<dec<<long(variable)<<endl;

cout<<"Valor almacenado en puntero:"<<dec<<long(puntero)<<endl;

getch(); }

11. El siguiente ejemplo utiliza punteros void.

#include <iostream>

#include <conio.h>

#include <cstdio>

using namespace std;

int main()

{ system("cls");

void *vPuntero1; void *vPuntero2;

int i=15; int *punteroInt;

float f=4.68; float *punteroFloat;

punteroInt=&i; punteroFloat=&f;

vPuntero1=&i; vPuntero2=&f;

cout<<"vPuntero1 apunta a:"<<*((int *)vPuntero1)<<endl;

cout<<"vPuntero2 apunta a:"<<*((float *)vPuntero2)<<endl;

getch(); }
12. El siguiente ejemplo utiliza un arreglo de enteros y un puntero para mostrar los elementos
del arreglo.

#include <iostream>

#include <conio.h>

#include <cstdio>

using namespace std;

int main()

{ int numeros[5]={14, 20, 30, 79, 80}; int *p;

p=numeros;

cout<<"Elementos del arreglo numeros \n";

cout<<"números[1]="<<*p<<endl;

cout<<"números[2]="<<*(p+1)<<endl;

cout<<"números[3]="<<*(p+2)<<endl;

cout<<"números[4]="<<*(p+3)<<endl;

cout<<"números[5]="<<*(p+4)<<endl;

getch();}

13. El siguiente ejemplo utiliza un puntero para acceder a los elementos de un arreglo. El
programa calcula la suma de los elementos del arreglo.
#include <iostream>

#include <conio.h>

#include <cstdio>

using namespace std;

int main()

{int numeros[5]={14, 20, 30, 79, 80}; int *p; int suma;

p=numeros;

suma=0;

for(int i=0; i<=4; i++) {

cout<<"numeros["<<i<<"]="<<*(p+i)<<endl;

suma=suma+ *(p+i);

cout<<"La suma de los elementos del array es:"<<suma<<endl;

getch(); }

14. El siguiente ejemplo utiliza punteros para la ordenación de un arreglo de números enteros en
forma ascendente.

#include <iostream>

#include <conio.h>

#include <cstdio>

using namespace std;

int main()

{int arreglo[5]={15, 17, -5, 25, 100}; int *p; int temp;
p=arreglo;

int i, j;

cout<<"\n\n El arreglo desordenado es:"<<endl;

for( i=0; i<5; i++)

cout<<*(p+i)<<endl;

cout<<"\n\n El arreglo ordenado es:"<<endl;

for( i=0; i<5; i++)

for( j=i+1; j<5; j++)

if(*(p+i)> *(p+j))

{ temp= *(p+i);

*(p+i)= *(p+j);

*(p+j)=temp;

for( i=0; i<5; i++)

cout<<*(p+i)<<endl;

getch(); }

15. El siguiente programa utiliza la función srlongitud para calcular la longitud de una cadena.
#include <iostream>

#include <conio.h>

using namespace std;

int srlongitud(const register char*);

int main()

{ static char cad[]="Borland C++ 5.0";

cout<<"\n La longitude de "<< cad<<" es:"<<srlongitud(cad)<<"caracteres\n";

getch(); }

int srlongitud(const register char *cad)

{int cuenta=0;

while(*cad++)

cuenta++;

return (cuenta);

16. Diseñar un programa que permita ingresar dos números enteros y un operando, el programa
debe calcular el resultado de la operación seleccionada.

#include <iostream>

#include <conio.h>

#include <cstdio>

using namespace std;

void obtenerValores(float *valor1, float *valor2, int *operador);

float calcular(float valor1, float valor2, int operador);

void imprimirRespuesta(float valor);

int main()
{ float numero1; float numero2;

int op;

float total;

obtenerValores(&numero1, &numero2, &op);

total=calcular(numero1, numero2, op);

imprimirRespuesta(total);

getch(); }

void obtenerValores(float *valor1, float *valor2, int *operador)

{ float primero;

float segundo;

int operacion;

cout<<"Ingrese primer número:"; cin>>primero;

cout<<"Ingrese el operando [+][-][*][/]:"; operacion=getchar();

cout<<"Ingrese segundo número:"; cin>>segundo; *valor1=primero;

*valor2=segundo;

*operador=operacion;

float calcular(float valor1, float valor2, int operador)

{ float respuesta;

switch(operador)

{ case '+': respuesta=valor1+valor2;break;

case '-': respuesta=valor1-valor2;break;

case '*': respuesta=valor1*valor2;break;

case '/':

if(!valor2==0)

respuesta=valor1/valor2;

else

cout<<"Operación no válida. Valor dividido entre cero"<<endl;


return 0;

return (respuesta);

void imprimirRespuesta(float valor)

{cout<<"\n El resultado de la operación es:"<<valor;

17. El siguiente programa utiliza un puntero a una función que permite ordenar un arreglo, el
programa utiliza la función qsort.

#include <iostream>

#include <conio.h>

#include <cstdlib>

using namespace std;

int funcionOrdena(const void *valor1, const void *valor2);

int (*punteroFuncion)(const void*, const void*);

int lista[5]={100, 50, -87, 12, 80};

int main()

{ int x;

punteroFuncion=funcionOrdena;

qsort((void*)lista, 5, sizeof(lista[0]), punteroFuncion);

cout<<"El arreglo ordenado es:"<<endl;

for(x=0; x<5; x++)


cout <<lista[x]<<endl;

getch(); }

int funcionOrdena(const void *valor1, const void *valor2)

{return((*(int*)valor1)- (*(int*)valor2));

18. El siguiente programa utiliza un puntero a función que permite ordenar un arreglo de
cadenas, el programa utiliza la función qsort.

#include <iostream>

#include <conio.h>

#include <cstdlib>

#include <string>

#include <stdio.h>

using namespace std;

int funcionOrdena(const void *valor1, const void *valor2);

int (*punteroFuncion)(const void*, const void*);

char lista[5][20]={"Toro", "Gato", "Abeja", "Serpiente", "Perro"};

int main()

{punteroFuncion=funcionOrdena;

qsort((void*)lista, 5, sizeof(lista[3]), funcionOrdena);

cout<<"El arreglo ordenado es:"<<endl;

for(int x=0; x<5; x++)


cout <<lista[x]<<endl;

getch();

int funcionOrdena(const void *valor1, const void *valor2)

return(strcmp((char*)valor1, (char*)valor2));

19. El siguiente programa utiliza un puntero a estructura.

#include <iostream>

#include <conio.h>

using namespace std;

struct alumno

char codigo[10]; char nombre[50];

float nota1; float nota2; float promedio;

};

void mostrardatos(alumno *puntero);

int main()

{ alumno estudiante[]={{"01", "Baltazar Juan",15, 13},

{"02", "Campos Lucille", 18, 19},

{"03", "Villafuerte Luis", 10, 11}};


alumno *p;

p=estudiante;

for(int i=1; i<=3; i++, p++)

mostrardatos(p);

getch(); }

void mostrardatos(alumno *puntero)

cout<<"Codigo:"<<puntero->codigo<<endl;

cout<<"Nombre:"<<puntero->nombre<<endl;

cout<<"Nota 1:"<<puntero->nota1<<endl;

cout<<"Nota2:"<<puntero->nota2<<endl;

puntero->promedio=(puntero->nota1+puntero->nota1)/2.0;

cout<<"Promedio:"<<puntero->promedio<<endl<<endl;

También podría gustarte