Vous êtes sur la page 1sur 8

PraLENC7

PRACTICA DIRIGIDA NRO 7 Borland C


Punteros
Objetivos
1) Uso de variables tipo puntero en funciones de pase por referencia., en estructuras,
en cadenas y funciones.
1.- Digita el sgte programa, grbalo como pd7_01 y determina cul es el resultado de su
ejecucin.
// pd7-01 Muestra la direccin y el valor de q -punte1
//#include<stdio.h>
#include<conio.h>
#include<iostream.h>
void main()
{
int a=10,*p,*q;
p=&a;
q=p;
cout<<"\n En la direccion "<<q<<" esta "<<*q;
getch();
}
2.- Digita el sgte programa, grbalo como pd7_02 y determina cul es el resultado de su
ejecucin.
//Empleo de los operadores & y *
//punte23.cpp
#include <iostream.h>
int main()
{
int a; //a es unentero
int *aPtr; // aPtr es un apuntador a un entero;
a=7;
aPtr = &a, //aPtr se establece a la direccion e a;
cout<<"La direccion de a es "<<&a
<<"\nEl valor de aPtr es "<<aPtr;
cout<<"\nEl valor de a es "<<a
<<"\nEl valor de *aPtr es "<<*aPtr;
cout<<"\n\nMostrando que * y & son inversos "
<<"entre si.\n&*aPtr = "<< &*aPtr
<<"\n*&aPtr = "<<*&aPtr<<endl;
return 0;
}

3.- Digita el sgte programa, grbalo como pd7-03 y determina cul es el resultado de su
ejecucin.

// :mostrar el uso de punteros- punte9


#include <iostream.h>
#include <conio.h>
main()
{
int i,j,k,m;
int *p;
j=3;
p=&j; //p almacena la direccion de j;
k=*p; //k recibe el valor almacenado en p, es decir 3
i=*p * j; // i=3*3
m=*p * *p; //m=3*3
cout<<" i= "<<i<<"\t"<<" j= "<<j<<"\t"<<" k= "<<k<<"\t"<<" m= "<<m;
getch();
return 0;
}
4.- Digita el sgte programa, grbalo como pd7_04 y determina cul es el resultado de su
ejecucin.
/*intercambia valores- punte3 */
#include<iostream.h>
#include<conio.h>
void swap(float *x, float *y);
main()
{float a,b;
cout<<"\ningrese valores de a y b:";
cin>>a>>b;
swap(&a,&b);
cout<<"\nvalores intercambiados de a y b: <<a<< <<b;
getch();
}
void swap(float *x, float *y)
{float z;
z=*x;
*x=*y;
*y=z;
}

II.- Arreglos

y Apuntadores

5.- Digita el sgte programa, grbalo como pd7-05 y determina cul es el resultado de su
ejecucin.

// demuestra que *(lista+1) y lista[1] representan el mismo valor- punte10


#include<iostream.h>
#include<conio.h>
main()
{
int lista[5];
int ind;
for (ind=0;ind<5;ind++)
{cout<<"\n Ingrese valor "<<ind+1<<":";
cin>>lista[ind]; }
//muestra
for (ind=0;ind<5;ind++)
cout<<"\n"<<*(lista+ind); // *(lista+1) y
// lista[1] representan el mismo valor
getch();
return 0;
}
6.- Digita el sgte programa, grbalo como pd7-06 y determina cul es el resultado de su
ejecucin.// escribir los valores de un array-usando punteros
#include <conio.h>
#include<iostream.h>
void main()
{
static int lista[]={24,30,15,45,34};
int ind;
for(ind=0;ind<5;ind++)
cout<<*(lista+ind)<<"\n";
getch();
}

7.- Digita el sgte programa, grbalo como pd7-07 y determina cul es el resultado de su
ejecucin.
//punte12 lista las direcciones y valores de un arreglo
#include <iostream.h>
#include <conio.h>
#define N 3

void main()
{
int *px,i;
int x[N];
clrscr();
for(i=0;i<N;i++) x[i]=i;
for(i=0;i<N;i++)
{
px=&x[i];
cout<<" elemento " <<i<<" : " <<px<<"\n" ;
}
getch();
}
8.- Digita el sgte programa, grbalo como pd7-08 y determina cul es el resultado de su
ejecucin.
// arreglos y apuntadores
// halla el menor de n numeros ingresados como variable tipo puntero
#include <iostream.h>
#include <conio.h>
#define M 30
void leer(int n, int *x);
int minimo(int n, int *x);
void main()
{
clrscr();
int x[M], j, n;
cout <<" Ingrese numero de elementos:";
cin >>n;
leer(n,x);
j=minimo(n,x);
cout<<"minimo es : "<<x[j]<<"\n";
getch();
}
void leer(int n,int *x)
{
register int i;
for(i=0;i<n;i++)
{cout<<"ingrese x["<<i<<"]=";
cin >>*x++;
}
}
int minimo(int n,int *x)
{
register int i;
int j=0,min;
min=*x++;
for(i=1;i<n;i++,*x++)

if(*x<min)
{min=*x;
j=i;
}
return j;
}
III.- Puntero a Estructuras
9.- Digita el sgte programa, grbalo como pd7-9 y determina cul es el resultado de su
ejecucin.
//punte25 planillas de trabajadores
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>
#define MAX 20
#define IPSS 0.12
#define AFP 0.12
#define SNP 0.12
#define HEXTRAS 0.25
struct EMPLEADO
{
char cNombre[20];
unsigned int iHoras_Traba;
unsigned int iHoras_Extra;
double fSueldo_Por_Hora;
double fSueldo_Basico;
double fHE;
double fDescuentos;
double fGratif;
double fSueldo_Bruto;
};
void leer(EMPLEADO *e);
void calcula(EMPLEADO *e);
void imprime(EMPLEADO e);
void main()
{
EMPLEADO e[MAX];
int iCuantos;
clrscr();
cout<<" Cuantos ? : ";
cin>>iCuantos;
if(iCuantos > MAX)
{

cout<<"No se puede ingresar mas de "<<MAX<<"Presione una tecla para


continuar...";
getch();
return;
}
for(int x=0;x<iCuantos;x++)
leer(&(e[x]));
for(x=0;x<iCuantos;x++)
calcula(&(e[x]));
cout<<"\n\t\t\t Planilla de Empleados";
cout<<"\n+--------------+-------------+-----------+-----------+------------+-----------+";
cout<<"\n| Nombre
| S. Basico | H.Extras | Gratif. | Descuentos | Total |";
cout<<"\n+--------------+-------------+-----------+-----------+------------+-----------+";
for(x=0;x<iCuantos;x++)
imprime(e[x]);
cout<<"\n+--------------+-------------+-----------+-----------+------------+-----------+\n";
getch();
}
void leer(EMPLEADO *e)
{
float fTempo;
clrscr();
cout<<"Ingrese Nombre del Empleado : ";
gets(e->cNombre);
cout<<"Ingrese Sueldo por Hora : ";
cin>>fTempo;
e->fSueldo_Por_Hora=fTempo;
cout<<"Ingrese Horas de Trabajo : ";
cin>>fTempo;
e->iHoras_Traba=fTempo;
cout<<"Ingrese Horas Extras
: ";
cin>>fTempo;
e->iHoras_Extra=fTempo;
cout<<"Ingrese Gratificacin
: ";
cin>>fTempo;
e->fGratif=fTempo;
}
void calcula(EMPLEADO *e)
{
e->fDescuentos=(e->fSueldo_Por_Hora * e->iHoras_Traba) * (IPSS+AFP+SNP);
e->fSueldo_Basico=(e->fSueldo_Por_Hora * e->iHoras_Traba);
e->fHE = HEXTRAS * e->iHoras_Extra;
e->fSueldo_Bruto = e->fSueldo_Basico + e->fHE;
}
void imprime(EMPLEADO e)

{
cout<<setiosflags(ios::left);
cout<<"\n"<<setw(15)<<e.cNombre<<"|"<<setw(13)<<e.fSueldo_Basico<<"|"
<<setw(11)<<e.fHE<<"|"<<setw(11)<<e.fGratif<<"|"<<setw(12)<<e.fDescuentos<<"|";
cout<<setw(10)<<(e.fSueldo_Bruto - e.fDescuentos)<<" |";
}

PRACTICA CALIFICADA DE L. PROCEDURAL NRO 7-PUNTEROS


1.- Escriba una funcin ordenar(a,b,c) con parmetros:
float *a,*b,*c;
que cuando se llame por ordenar (&x, &y,&z) resulten las variables x,y,z con sus valores
ordenados de menor a mayor. Grabar como pr7-1
2.- Escriba una funcin f(x,y) con parmetros:
int *x, *y;
tal que f(&m,&n) cambie los valores de m y n por los valores de m + n y m*n
respectivamente. Grabar como pr7-2
3.- Ingresar en un array unidimensional 10 datos enteros y luego mostrarlos usando array
de punteros. . Grabar como pr7-3

4.- Resolver el problema anterior, pero usando variables de tipo Static. . Grabar como
pr7-4
5.- Ingresar un array de 5 elementos de tipo static y luego mostrar sus direcciones en
memoria. Grabar como pr7-5
6.- Halla el mayor de tres nmeros ingresados como variable tipo puntero. Grabar como
pr7-6
7.- Mediante una funcin de punteros devuelva el nombre del mes dado el nmero del
mes. char *nombre(int mes). Grabar como pr7- 7
8.- Mediante una funcin de punteros devuelva el nombre del da dado el nmero del dia.
char *nombre(int dia). Grabar como pr7- 8
9.- Realizar un programa para multiplicar 2 matrices de m*n elementos cada uno. Hacer
uso de punteros. Grabar como pr7-9.
10.- Realice un programa que convierta letras minsculas a maysculas, por medio de un
puntero (envo una cadena de caracteres y recibo como parmetros un puntero).
Ejemplo:
void conversin (char * sPtr)
..
void main()
{
char cadena[ ] =caracteres y $32.98;
..
conversin( cadena);
cout<<\n la cadena convertida es:<<cadena;
..
}
..complete la funcin...

Vous aimerez peut-être aussi