12.2 Tarea - 18160313

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 20

EJERCICIOS PROPUESTOS CON PUNTEROS

Diaz Fuentes Nicoll Estefany 18160313

1. Escriba una función que dado un número, lo modifique invirtiendo sus


dígitos

#include <iostream>
#include <conio.h>
using namespace std;
int main(){
int numero, *num;
int numero_invertido, *num_invertido;
numero_invertido = 0;
cout<<"\n\t INVIERTIENDO UN NUMERO"<<endl;
cout<<"\n Digite el numero: "; cin>>numero;
num = &numero;
int r;
while(*num>0) {
r = *num%10;
*num = *num/10;
numero_invertido = numero_invertido*10 + r;
}
num_invertido = &numero_invertido;
cout<<"\n El numero invertido es : "<<*num_invertido;
cout<<endl;
getch();
return 0; }
2. Escriba una función que dada una matriz de NxN, permita conocer si la
diagonal está llena de valores diferentes de 0 y si ese es el caso, calcule la
suma de los mismos.

#include <iostream>
#include <conio.h>
using namespace std;
int main(){
int matriz[10][10];
int *puntero[10];
int n, suma=0,*sum;
cout<<"\n\t\t SUMA DE LA DIAGONAL IZQUIERDA DE UNA MATRIZ
"<<endl;
cout<<"\n Ingrese el orden de la matriz: ";
cin>>n; cout<<endl;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<" Elemento ["<<i<<"]["<<j<<"]: ";
cin>>matriz[i][j]; }
}
cout<<"\n\tLa matriz es: "<<endl;
cout<<endl;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
cout<<"\t\t"<<matriz[i][j]; }
cout<<endl; }
puntero[0] = &matriz[0][0];
puntero[1] = &matriz[1][0];
puntero[2] = &matriz[2][0];
puntero[3] = &matriz[3][0];
puntero[4] = &matriz[4][0];
puntero[5] = &matriz[5][0];
puntero[6] = &matriz[6][0];
puntero[7] = &matriz[7][0];
puntero[8] = &matriz[8][0];
puntero[9] = &matriz[9][0];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==j){
if(*puntero[i]!=0){
suma = suma + *puntero[i]; }
}
*puntero[i]++; }
} sum = &suma;
if(*sum == 0){
cout<<"\n La suyma es cero";
}else{
cout<<"\n Hay valores diferentes de cero y la suma es: "<<*sum; }
cout<<endl;
getch();
return 0; }
3. Escriba una función que dado un arreglo, retorne otro nuevo solo con los
elementos pares

#include <iostream>
#include <conio.h>
using namespace std;
int main(){
int n, numeros[50];
int pares[50];
int *puntero1;
int *puntero;
cout<<"\n\t\t VALORES PARES"<<endl;
cout<<"\n Ingrese cuantos elementos tendra el arreglo: ";
cin>>n;
for(int i=0;i<5;i++){
cout<<"\n Elemento ["<<i<<"]: "; cin>>numeros[i];
}
puntero = &numeros[0];
int j=0;
for(int i=0;i<n;i++){
if(*puntero%2==0){
pares[j]=*puntero;
j++;
}
*puntero++;
}
puntero1 = &pares[0];
cout<<"\n Los elementos pares son: \n";

for(int i=0;i<j;i++){
cout<<"\n Elemento ["<<i<<"]: "<<*puntero1<<endl;
*puntero1++;
}
cout<<endl;
getch();
return 0; }

4. Escriba una función recursiva que dada dos cadenas, permita conocer si
ambas son iguales.

#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
int comparar(char *puntero1, char *puntero2,int i){
if(*puntero1!=*puntero2){
i = 0;
}else{
*puntero1++;
*puntero2++;
i = i + comparar(puntero1,puntero2,i++);
}
return i;
}
int main(){
char palabra1[30];
char palabra2[30];
char *puntero1, *puntero2;
cout<<"\n\t\tCOMPARANDO PALABRAS"<<endl;
cout<<"\n Ingrese palabra 1 = "; gets(palabra1);
cout<<"\n Ingrese palabra 2 = "; gets(palabra2);
puntero1 = &palabra1[0];
puntero2 = &palabra2[0];
int numero = comparar(puntero1,puntero2,1);
if(numero == 0){
cout<<"\n\tNo son iguales";
}else{
cout<<"\n\tSon iguales";
}
getch();
return 0; }

5. Escriba una función recursiva que busque un elemento en un arreglo

#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
int busqueda(int *puntero,int numero){
if(*puntero!=numero){
if(*puntero==NULL){
return 1;
}
else {
*puntero++;
return busqueda(puntero,numero);
}
}
else return 0;
}
int main(){
int n, num;
int arreglo[50];
int *puntero;
cout<<"\n\t\t BUSCAR UN NUMERO EN UN ARREGLO"<<endl;
cout<<"\n Cuantos numeros tiene el arreglo: ";
cin>>n;
for(int i=0;i<n;i++){
cout<<" \nElemento ["<<i<<"]: "; cin>>arreglo[i];
}
cout<<"\n Ingrese numero a buscar = "; cin>>num;
puntero = &arreglo[0];
if(busqueda(puntero,num)==0){
cout<<"\n\tEl numero si esta contenido";
}else{
cout<<"\n\tNo esta contenido";
}
cout<<endl;
getch();
return 0; }
6. Escriba una función recursiva que determine si una palabra es o no un
palíndromo, sin usar string y usando aritmética de punteros

#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;
int palindromo(char *puntero1,char *puntero2) {
if(*puntero1==*puntero2){
if(*puntero1 == NULL){
return 1;
}else{
*puntero1++;
*puntero2--;
return palindromo(puntero1,puntero2);
}
}
return 0;
}
int main(){
char palabra1[30];
char *puntero1,*puntero2;
cout<<"\n\t\t DETERMINAR UN PALINDROMO"<<endl;
cout<<"\n Ingrese la cadena: ";
gets(palabra1);
int lon1 = strlen(palabra1);
puntero1 = &palabra1[0];
puntero2 = &palabra1[lon1-1];
if(palindromo(puntero1,puntero2)==0){
cout<<"\n\tNo es palindromo";
}else{
cout<<"\n\tEs palindromo";
}
cout<<endl;
getch();
return 0; }

7. Defina una estructura para representar un término en un polinomio.


Ejemplo: 3x5. Cree una función MultiplicarEscalar que dado un término lo
modifica multiplicándolo por un valor entero.

8. Defina una estructura para representar a un polinomio

1. Conjunto de n términos

#include <stdio.h>
# include <stdlib.h>
#include <iostream>
#include<math.h>
using namespace std;
float *lee( int *);
int main ( ) {
float *pol;
int i,n;
cout<<"\n\t\tPOLINOMIO DE CUALQUIER GRADO\n"<<endl;
pol= lee(&n);
cout<<"\n El polinomio ordenado creciente y completo queda:\n\n";
cout<<" "<<pol[0];
for(i=1;i<=n;i++) {
cout<<" + "<<pol[i]<<" x^"<<i;
}
cout<<"\n\n";
system("PAUSE"); }
float *lee( int *A ) {
int i=0, N,num,aux=0,sum=0;
float *p, C,D;
do {
cout<<"\n Ingrese grado del polinomo: ";
cin>>N;
}
while (N<0 && N>10);
p = (float*) malloc((N+1) * sizeof (float));
if( p == NULL ) {
cout<<" Espacio de memoria insuficiente\n";
exit(1);
}
cout<<"\n Ingrese termino independiente: ";
cin>>D;
fflush(stdin);
*(p+i)=D;
for( i=1;i<=N;i++ ) {
cout<<"\n Ingrese coeficiente "<<i<<" : ";
cin>>C;
fflush(stdin);
*(p+i) = C;
}
*A=N;
return (p); }

b. Escriba una función Evaluar para que dado un polinomio de n términos y


un valor entero, retorne el valor entero resultante de la evaluación del
polinomio.

#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include<math.h>
using namespace std;
float *lee( int *);
int main ( ) {
float *pol;
int i,n;
cout<<"\n\t\tPOLINOMIO DE CUALQUIER GRADO\n"<<endl;
pol= lee(&n);
cout<<"\n El polinomio ordenado creciente y completo queda:\n\n";
cout<<" "<<pol[0];
for(i=1;i<=n;i++) {
cout<<" + "<<pol[i]<<" x^"<<i;
}
cout<<"\n\n";
system("PAUSE"); }

float *lee( int *A ) {


int i=0, N,num,aux=0,sum=0;
float *p, C,D;
do {
cout<<"\n Ingrese grado del polinomo: ";
cin>>N;
}
while (N<0 && N>10);
p = (float*) malloc((N+1) * sizeof (float));
if( p == NULL ) {
cout<<" Espacio de memoria insuficiente\n";
exit(1);
}
cout<<"\n Ingrese termino independiente: ";
cin>>D;
fflush(stdin);
*(p+i)=D;
for( i=1;i<=N;i++ ) {
cout<<"\n Ingrese coeficiente "<<i<<" : ";
cin>>C;
fflush(stdin);
*(p+i) = C;
}
*A=N;
cout<<"\n Ingrese el número a evaluar en el polinomio: ";
cin>>num;
for(int i=1;i<=N;i++){
aux=*(p+i)*(pow(num,i));
sum=sum+aux;
}
sum=sum+D;
cout<<"\n El entero resultante es de: "<<sum<<endl;
return (p); }

c. Que llene un arreglo con los 100 primeros números enteros y los muestre en
pantalla en orden descendente. 

#include <iostream>

#include <conio.h>

using namespace std;

int main(){

int num[100],*n, i=0;


cout<<"\t\t\t PRIMEROS 100 NUMEROS ENTEROS "<<endl<<endl;

for(int i=1; i<=100; i++) {

num[i]=i;

n=num;

cout<<"Los numeros en forma descendente se expresan: "<<endl<<endl;

for (int i=100; i>=1; i--) {

cout<<"\t"<<*(n+i);

return 0; }

d. Que llene un arreglo con los números primos comprendidos entre 1 y 100 y
los muestre en pantalla en orden ascendente. 
#include <conio.h>
#include <stdlib.h>
#include<iostream>
using namespace std;
int main( ) {
int x,cont,z,i,tabla[100];
int *dir;
cout<<"\n\t\t NUMEROS PRIMOS ASCENDENTES\n"<<endl;
i=0;
for (x=1;x<=100;x++) {
cont=0;
for (z=1;z<=x;z++) {
if (x%z==0) {
cont++; }
}
if (cont==2 || z==1 || z==0) {
tabla[i]=x; i++; }
}
for (x=0;x<i;x++) {
dir=&tabla[x];
cout<<"\t"<<*dir; }
getch ();
return 0; }

e. Que lea 10 números del teclado, los almacene en un arreglo y muestre la


suma, resta, multiplicación y división de todos. 
#include <iostream>
#include <conio.h>
using namespace std;
int main() {
double suma=0, resta=0, mult=1, div=1;
int i, num[10],*puntero;
cout<<"\t\t ARITMETICA DE 10 NUMEROS"<<endl<<endl;
for (i=0; i<10; i++) {
cout<<" Ingrese el numero "<<i+1<<": ";
cin>>num[i]; }
puntero = num;
suma=*puntero;
resta=*puntero;
mult=*puntero;
div=*puntero;
for (i=1; i<10; i++) {
suma=suma + *(puntero+i);
resta=resta - *(puntero+i);
mult=mult * *(puntero+i);
if (*puntero!=0) {
div=div / *(puntero+i); }
else {
cout<<"El 0 sera omitido en la division"<<endl;
}}
cout<<endl;
cout<<"\t\t\t SOLUCION: "<<endl<<endl;
cout<<"La suma es: "<<suma<<endl;
cout<<"La resta es : "<<resta<<endl;
cout<<"La multiplicacion es : "<<mult<<endl;
cout<<"La division es : "<<div<<endl;
return 0; }
f. Que lea n números por teclado, los almacene en un arreglo y los ordene de
forma ascendente. 

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
void mostrar( int *p, int n) ;
int main ( ) {
int *p,n,i;
cout<<" \n\t\t LECTURA DE FORMA ASCENDENTE\n"<<endl;
cout<<" Ingrese la cantidad de datos del arreglo: ";
cin>>n;
p = (int*) malloc(n*sizeof(int));
if (p==NULL) {
cout<<" No hay memoria"<<endl;
exit(1);
}
else {
for(i=0 ; i<n ; i++) {
cout<<" Ingrese el dato "<<i+1<<" de arreglo: ";
cin>>p[i];
}
mostrar(p,n);
free (p);
system ("pause");
}
}
void mostrar( int *p, int n) {
int i,j,aux;
for (i=0; i<=n; i++) {
for (j=i; j<=n; j++) {
if (p[j] < p[i]) {
aux=p[j];
p[j]=p[i];
p[i]=aux;
}
}
} cout<<endl;
cout<<"Los numeros en forma ascendente son: "<<endl<<endl;
for (i=1; i<=n; i++) {
cout<<" \t "<<*(p+i);
}
cout<<endl; }

g. Que lea 10 números del teclado, 5 para un arreglo y 5 para otro arreglo
distinto. Mostrar los 10 números en pantalla mediante un solo arreglo 

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main() {
int *punt1;
int *punt2,*punt3;
int mat1[5], mat2[5], mat3[10];
cout<<"\t\t UNION DE ARREGLOS"<<endl<<endl;
for( int i=0; i<5; i++) {
cout<<"Escriba el "<<i+1<<" numero: ";
cin>>mat1[i];
}
punt1=mat1;
cout<<endl;
for( int i=0; i<5; i++) {
cout<<"Escriba el "<<i+1<<" numero: ";
cin>>mat2[i]; }
punt2=mat2;
for(int i=0; i<5; i++) {
mat3[i]=*punt1++; }
for(int i=0; i<5; i++) {
mat3[5+i]=*punt2++; }
punt3=mat3;
cout<<endl;
cout<<"El arreglo es de: "<<endl<<endl;
for(int i=0; i<10; i++) {
cout<<"\t"<<*punt3++; }
cout<<endl;
return 0; }
h. Que lea 5 números del teclado, los copie a otro arreglo multiplicado por 2 y
muestre el segundo arreglo. 
#include <iostream>
#include <stdlib.h>
#include <conio.h>
using namespace std;
int main() {
int *punt2;
int mat1[5], mat2[5];
cout<<"\n\t\tARREGLOS X2"<<endl<<endl;
for( int i=0; i<5; i++) {
cout<<" Escriba el "<<i+1<<" numero: ";
cin>>mat1[i];
}
cout<<"\n Los numeros multiplicados x2 son: "<<endl;
for (int i=0; i<5; i++) {
mat2[i]=mat1[i]*2;
punt2=mat2;
cout<<"\t"<<*(punt2+i)<<" "<<endl;
}
getch( );
return 0; }

También podría gustarte