domingo, 9 de enero de 2022

Ejercicio 10

 //Programa que rellena y muestra una matriz dinámica.


#include<iostream>

#include<cstdlib>//para new y delete


using namespace std;


void pedirDatos();

void mostrarMatriz();


int **pmatriz,nFilas,nCol;


int main(){

pedirDatos();

mostrarMatriz();

//Se libera la memoria utilizada en la matriz.

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

delete[] pmatriz[i];

}

delete[] pmatriz;

system("pause");

return 0;

}


void pedirDatos(){

cout<<"\nDigite el numero de filas: "; cin>>nFilas;

cout<<"Digite el numero de columnas: "; cin>>nCol;

pmatriz = new int*[nFilas]; 

//Reservar memoria para las filas de la matriz.

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

pmatriz[i] = new int[nCol]; 

//Reservar memoria para las columnas de la matriz.

}

cout<<"\nDigitando los elementos de la matriz: \n";

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

for(int j=0; j<nCol; j++){

cout<<"Digite un numero["<<i+1<<"]["<<j+1<<"]: ";

cin>>*(*(pmatriz+i)+j); 

//guardar en puntero a posiciones [i][j].

}

}

}


void mostrarMatriz() {

cout<<"\n";

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

for (int j=0; j<nCol; j++) {

cout<<*(*(pmatriz+i)+j)<<" ";

// Se muestran los elementos guardaddos en la matriz.

}

cout<<"\n";

}

cout<<"\n\n";

}

Ejercicio 9

 //Programa que rellena y muestra un arreglo dinámico.


#include<iostream>

#include<cstdlib>//para new y delete.


using namespace std;


void pedirDatos();

void mostrarArreglo();


int *parreglo,nElementos;


int main(){

pedirDatos();

mostrarArreglo();

//Se libera la memoria utilizada en el arreglo.

delete[] parreglo;

system("pause");

return 0;

}


void pedirDatos(){

cout<<"\nDigite el numero de elementos del arreglo: "; cin>>nElementos;

parreglo = new int[nElementos]; 

//Reservar memoria para el arreglo.

cout<<"\nDigitando los elementos del arreglo: \n";

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

cout<<"Digite un numero["<<i+1<<"]: "; cin>>*(parreglo+i); 

//guardar en puntero al arreglo y se corre a los siguientes elementos el puntero.

}

}


void mostrarArreglo() {

cout<<"\n";

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

cout<<parreglo[i]<<" ";

// Se muestran los elementos guardaddos en el arreglo.

}

cout<<"\n\n";

}

Ejercicio 8

 /*Programa que pide un arreglo de caracteres al usuario, e indica cuantas 

veces aparece la vocal a,e,i,o,u; en el.*/


#include<iostream>

#include<cstring>//para usar strupr.


using namespace std;


void PedirDatos();

void ContarVocales(char *);


char palabra[30];


int main(){

PedirDatos();//Llamada a la funcion para pedir la palabra.

ContarVocales(palabra); //Llamada a la funcion para contar vocales de la cadena.

system("pause");

return 0;

}


void PedirDatos(){

cout<<"introduzca una palabra: ";

cin.getline(palabra,30,'\n');

strupr(palabra);//pasar la palabra a mayuscula.

}


void ContarVocales(char *palabra){

int contA=0,contE=0,contI=0,contO=0,contU=0;

while(*palabra){//mientras palabra sea diferente de nulo '\0' para poder contar.

switch(*palabra){

case 'A': contA++;break;

case 'E': contE++;break;

case 'I': contI++;break;

case 'O': contO++;break;

case 'U': contU++;break;

}

palabra++;

//Se corre el puntero una posicion para contar el siguiente caracter del arreglo.

}

//Se imprime el conteo de cada vocal.

cout<<"\nNumero de vocales A: "<<contA<<endl;

cout<<"Numero de vocales E: "<<contE<<endl;

cout<<"Numero de vocales I: "<<contI<<endl;

cout<<"Numero de vocales O: "<<contO<<endl;

cout<<"Numero de vocales U: "<<contU<<endl<<endl;

}

Ejercicio 7

 //Pedir nombre al usuario y devolver el número de vocales que hay.


#include<iostream>

#include<cstring>//para usar strupr


using namespace std;


void pedirDatos();

int contarVocales(char *);


char nombreUsuario[30];


int main(){

pedirDatos();

cout<<"\nNumero de vocales en el nombre: "<<contarVocales(nombreUsuario)<<endl<<endl;

system("pause");

return 0;

}


void pedirDatos(){

cout<<"\nIntroduzca su nombre: ";cin.getline(nombreUsuario,30,'\n');

//Se pide el nombre y se guarda en la variable global.

strupr(nombreUsuario);//Se Pasa el nombre a mayuscula.

}


int contarVocales(char *nombre){

int cont = 0;

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

switch(*nombre){

case 'A': 

case 'E':

case 'I':

case 'O':

case 'U': cont++;//Se suman las vocales encontradas.

}

nombre++;

//Se corre el puntero para la siguiente posicion del arreglo.

}

return cont;

}

Ejercicio 6

 #include <iostream>


using namespace std;


int main () {

int nroelementos,numeros[200],*pnumeros,menor=999999999;

//Se inicializan el arreglo, el puntero y las variables.

cout<<"\nIntroduzca el numero de elementos del arreglo: "; cin>>nroelementos;

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

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

}

pnumeros = numeros;

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

if (*pnumeros < menor) {//se realiza la condicional usando el puntero.

menor= *pnumeros;

}

pnumeros++;//Se corre el puntero una posición en el arreglo de numeros.

}

cout<<"\nEl numero menor es: "<<menor<<endl<<endl;

system("pause");

return 0;

}

Ejercicio 5

 /*programa que pide 10 numeros al usuario

 y dice cuales son pares con punteros*/


#include <iostream>


using namespace std;


int main () {

int anumeros[10],*pnumeros;//Se inicializan el arreglo y el puntero.

for (int i=0;i<10;i++) {//Se piden los datos al usuario.

cout<<"\n"<<i+1<<". Introduzca un numero: "; cin>>anumeros[i];

}

pnumeros = anumeros;//Se asigna el puntero a la posición "0" del arreglo.

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

if (*pnumeros%2==0) {//Se comprueban los numeros pares.

cout<<"\nEl numero "<<*pnumeros<<" es par y su direccion es: "<<pnumeros<<endl;

}

pnumeros++;

//Se corre el puntero una posición en el arreglo de numeros.

}

cout<<"\n";

system("pause");

return 0;

}

Ejercicio 4

 /*Programa que muestra si un número es primo o no; con punteros y 

además indicar en que posicion de memoria se guarda el número.*/


#include <iostream>


using namespace std;


int main () {

int num,*direcnum,cont=0;//se inicializa el puntero.

cout<<"\nPor favor introduzca un numero: "; cin>>num;

direcnum = &num;//se le asigna el puntero la direccion de num.

for(int i=1; i<=*direcnum; i++) {

if (*direcnum%i==0){//se realiza la condicional usando el puntero.

cont++;

}

}

if (cont>2) {

cout<<"\nEl numero: "<<*direcnum<<" no es primo y su direccion es: "<<direcnum<<endl<<endl;

//se muestra el puntero el cual guarda el dato y la direccion de num.

}

else {

cout<<"\nEl numero: "<<*direcnum<<" es primo y su direccion es: "<<direcnum<<endl<<endl;

//se muestra el puntero el cual guarda el dato y la direccion de num.

}

system("pause");

return 0;

}

sábado, 8 de enero de 2022

Ejercicio 3

/*Programa que calcula si un numero es o no es par*/ 

#include <iostream>


using namespace std;


int main () {

int num,*direcnum; // Se inicializan la varibles y el puntero.

cout<<"\nPrograma que calcula si un numero es o no es par.";

cout<<"\n\nPor favor introduzca un numero: "; cin>>num; /*se pide un numero al usuario.*/

direcnum = &num; /* Se asigna la dirección de la variable "num" a la variable "direcnum".*/

if (*direcnum%2==0) {

/* Se toma el dato que hay en la dirección de la variable "direcnum" 

usando el operador de indirección "*" y se realiza la comparación.*/

cout<<"\nEl numero "<<num<<" es par y su direccion de memoria es: "<<direcnum<<endl<<endl;

}

else {

/* Se toma el dato que hay en la dirección de la variable "direcnum" 

usando el operador de indirección "*" y se realiza la comparación.*/

cout<<"\nEl numero "<<num<<" es impar y su direccion de memoria es: "<<direcnum<<endl<<endl;

}

system("pause");

return 0;

}

Ejercicio 2

#include <iostream>


using namespace std;


void sumar (float num1, float num2, float *psum) {

// Se inicializa el puntero con la direccion de la variable "suma".

*psum= num1 + num2;

/*Se asigna el resultado de la suma a la direccion de la variable "suma" en la función main.*/

}


int main () {

float num1,num2,suma=0;

cout<<"\nSuma de 2 numeros con punteros. \n\n";

cout<<"Por favor introduzca el 1er numero: "; cin>>num1;

cout<<"\nPor favor introduzca el 2do numero: "; cin>>num2;

sumar (num1,num2,&suma);

/*Se llama a la función entregando los argumentos de los numeros y la direccion de la variable "suma".*/

cout<<"\n\nEl resultado es: "<<suma<<"\n\n";

/* Se muestra la variable "suma" y no mostrara el valor "0" debido 

a que se cambio el dato que esta almacenaba por medio del puntero*/

system("pause");

return 0;

}

Ejercicio 1

//Programa que muestra el uso del operador de dirección "&" y el de indireccion "*".


#include <iostream>


using namespace std;


int main () {

int num,*pnum; // Se inicializan la variable y el puntero.

cout<<"\nPor favor introduzca un numero: ";cin>>num;// Se pide un numero al usuario.

pnum = &num;// Se asigna la dirección de "num" a la variable que hará de puntero.

cout<<"\nDato que muestra el operador de indireccion: "<<*pnum<<endl;

cout<<"Direccion de la variable (num) con el puntero: "<<pnum<<endl;

cout<<"Dato de la variable (num): "<<num<<endl;

cout<<"Direccion de la variable (num) con el operdor de direccion: "<<&num<<endl<<endl;

system("pause");

return 0;

}

Ejercicio 10

 //Programa que rellena y muestra una matriz dinámica. #include<iostream> #include<cstdlib>//para new y delete using namespace s...