Está en la página 1de 12

Practica 5 de Programación

Utilizar parámetro de dirección en relación con referencia (operador &)


1. Código
/*Ejercicio 1: Escriba una función nombrada tiempo() que tenga un parámetro en
número
entero llamado totalSeg y tres parámetros de referencia enteros nombrados horas,
min
y seg. La función es convertir el número de segundos transmitido en un número
equivalente de horas, minutos y segundos.*/

#include<iostream>
#include<conio.h>
using namespace std;

void tiempo(int,int&,int&,int&);

int main(){
int totalSeg,horas,min,seg;

cout<<"Digita la cantidad de segundos: ";


cin>>totalSeg;

tiempo(totalSeg,horas,min,seg);

cout<<"\nHoras: "<<horas<<endl;
cout<<"Minutos: "<<min<<endl;
cout<<"Segundos: "<<seg<<endl;

getch();
return 0;
}

void tiempo(int totalSeg,int& horas,int& min,int& seg){


horas = totalSeg/3600;
totalSeg %= 3600;
min = totalSeg/60;
seg = totalSeg%60;
}
2. Código
/*Ejercicio 2: Escriba una función nombrada calc_años() que tenga un parámetro
entero que represente el número total de días desde la fecha 1/1/2000 y parámetros
de referencia nombrados año, mes y día. La función es calcular el año, mes y día
actual para el número dado de días que se le transmitan. Usando las referencias, la
función deberá alterar en forma directa los argumentos respectivos en la función
que llama. Para este problema suponga que cada año tiene 365 días y cada mes
tiene 30 días.*/

#include<iostream>
#include<conio.h>
using namespace std;

void calc_anios(int,int&,int&,int&);

int main(){
int totalDias,anio,mes,dia;

cout<<"Digite el numero total de dias transcurridos: ";


cin>>totalDias;

calc_anios(totalDias,anio,mes,dia);

cout<<"Fecha Actual: "<<dia+1<<"/"<<mes+1<<"/"<<anio+2000<<endl;

getch();
return 0;
}
void calc_anios(int totalDias,int& anio,int& mes,int& dia){
anio = totalDias/365;
totalDias %= 365;
mes = totalDias/30;
dia = totalDias%30;
}
Utilizar parámetro de dirección con relación a apuntadores o punteros (operador
de indirección *)
3. Código
/*Ejercicio 3: Pedir su nombre al usuario y devolver el número de vocales que hay.
NOTA: Recuerda que debes utilizar punteros . */

#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;

//Prototipo de Función
void pedirDatos();
int contarVocales(char *);

char nombreUsuario[30];

int main(){
pedirDatos();
cout<<"\nNumero de vocales en el nombre: "<<contarVocales(nombreUsuario);

getch();
return 0;
}

void pedirDatos(){
cout<<"Digite su nombre: ";
cin.getline(nombreUsuario,30,'\n');
strupr(nombreUsuario); //Pasar el nombre a mayuscula
}

int contarVocales(char *nombre){


int cont = 0;

while(*nombre){ //mientras nombre no sea nulo '\0'


switch(*nombre){
case 'A':
case 'E':
case 'I':
case 'O':
case 'U': cont++;
}
nombre++;
}

return cont;
}
4. Código
/* Rellenar un array de 10 números, posteriormente utilizando punteros
indicar cuales son números pares y su posicion en memoria. */

#include<iostream>
#include<conio.h>
using namespace std;

int main(){
int numeros[10], *dir_numeros;

for(int i=0;i<10;i++){//Pidiendo los números al usuario


cout<<i+1<<". Digite un numero: ";
cin>>numeros[i];
}

dir_numeros = numeros; //indicar al puntero que inicie en a[0]

for(int i=0;i<10;i++){
if(*dir_numeros%2==0){//Comprobar números pares
cout<<"Numero par: "<<*dir_numeros<<endl;
cout<<"Posicion: "<<dir_numeros<<endl;
}
dir_numeros++;
}

getch();
return 0;
}
Reservar, asignar memoria dinámica a un vector de reales, caracteres, cadena de
caracteres, mostrar los contenidos, visualizar las direcciones de memoria.
5. Código
#include <iostream>
/*
Reservar, asignar memoria dinámica a un vector de reales, caracteres, cadena de
caracteres, mostrar los contenidos, visualizar las direcciones de memoria. Tres
ejercicios.
*/
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
int n,i;
float *vector,*direccion;
cout<<"
==============================================="<<endl;
cout<<" ASIGNACION DINAMICA A UN VECTOR DE REALES
"<<endl;
cout<<"
==============================================="<<endl;

cout<<"Indique el numero de elementos: ";


cin>>n;

vector=new float[n]; //Reservar elementos


direccion=vector;

for(i=0;i<n;i++){
cout<<"\n v["<<i+1<<"]= ";
cin>>*vector; //asignar memoria al vector
vector++;
}

cout<<"===================================================
="<<endl;
cout<<" CONTENIDO // DIRECCION DE MEMORIA
"<<endl;

cout<<"===================================================
="<<endl;

for(i=0;i<n;i++){
cout<<"\n v["<<i+1<<"]="<<*direccion<<"\t\t"<<direccion<<endl;
//mostrar los contenidos y la visulalización de la dirección de memoria
direccion++;
}

system("PAUSE");
return EXIT_SUCCESS;
}

6. Código
#include <cstdlib>
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
int n,i;
char *vector,*direccion;
cout<<"
==================================================="<<endl;
cout<<" ASIGNACION DINAMICA A UN VECTOR DE
CARACTERES "<<endl;
cout<<"
==================================================="<<endl;

cout<<"Indique el numero de elementos: ";


cin>>n;

vector=new char[n]; //Reservar elementos


direccion=vector;

for(i=0;i<n;i++){
cout<<"\n v["<<i+1<<"]= ";
cin>>*vector; //asignar memoria al vector
vector++;
}

cout<<"===================================================
="<<endl;
cout<<" CONTENIDO // DIRECCION DE MEMORIA
"<<endl;
cout<<"===================================================
="<<endl;

for(i=0;i<n;i++){
cout<<"\n v["<<i+1<<"]="<<*direccion<<"\t\t Direccion:
"<<direccion<<endl; //mostrar los contenidos y la visulalización de la dirección
de memoria
direccion++;
}

system("PAUSE");
return EXIT_SUCCESS;
}
7. Código
#include <cstdlib>
#include <iostream>
#include <string.h>
using namespace std;
int main(int argc, char *argv[]){
int n,i, *longcadena;
string *cadena,*direccion;
cout<<"
=================================================="<<endl;
cout<<" ASIGNACION DINAMICA A UNA CADENA DE CARACTERES
"<<endl;
cout<<"
=================================================="<<endl;

cout<<"Indique el numero de elementos: ";


cin>>n;

cadena=new string[n]; //Reservar elementos


direccion=cadena;
for(i=0;i<n;i++){
cout<<"\n CADENA["<<i+1<<"]= ";
cin>>*cadena; //asignar memoria a la cadena
cadena++;

cout<<"===================================================="<
<endl;
cout<<" CONTENIDO // DIRECCION DE MEMORIA "<<endl;

cout<<"===================================================="<
<endl;

for(i=0;i<n;i++){
cout<<"\n CADENA["<<i+1<<"]="<<*direccion<<"\t\t"<<direccion<<endl;
//mostrar los contenidos y la visulalización de la dirección de memoria
direccion++;
}

system("PAUSE");
return EXIT_SUCCESS;
}

8. Código
/*Ejercicio 8 Determinar si un número es primo o no; con punteros y además
indicar en
que posicion de memoria se guardo el número.*/

#include<iostream>
#include<conio.h>
using namespace std;
int main(){
int numero,*dir_num,cont=0;

cout<<"Digite un numero: "; //Pedimos y guardamos el numero


cin>>numero;

dir_num = &numero; //Almacenamos su direccion

//Determinamos si es primo o no
for(int i=1;i<*dir_num;i++){
if(*dir_num%i == 0){
cont++;
}
}

if(cont>2){
cout<<"El numero "<<*dir_num<<" NO es primo"<<endl;
}
else{
cout<<"El numero "<<*dir_num<<" ES PRIMO"<<endl;
cout<<"Direccion: "<<dir_num<<endl; //Mostramos su direccion en
memoria
}

getch();
return 0;
}
9. Código
#include<iostream>
#include<conio.h>
using namespace std;

int main(){
int numeros[10], *dir_numeros;

for(int i=0;i<10;i++){//Pidiendo los números al usuario


cout<<i+1<<". Digite un numero: ";
cin>>numeros[i];
}

dir_numeros = numeros; //indicar al puntero que inicie en a[0]

for(int i=0;i<10;i++){
if(*dir_numeros%2==0){//Comprobar números pares
cout<<"Numero par: "<<*dir_numeros<<endl;
cout<<"Posicion: "<<dir_numeros<<endl;
}
dir_numeros++;
}

getch();
return 0;
}

También podría gustarte