Sunteți pe pagina 1din 7

Punteros

1. [001.txt]

Declara un entero valor1 con valor inicial 10


Declara un puntero punt1 que apunte al entero valor1
Asigna 20 al contenido de dicho puntero
Declara otro entero llamado valor2
Asignale el valor de valor1 más 100
Asigna a punt1 la dirección de valor2
Declara en una sola linea un entero valor3 y un puntero punt2
Haz que punt2 apunte a valor1
Si punt2 y punt1 apuntan al mismo sitio muestra un mensaje por pantalla
Si el contenido de ambos tiene el mismo valor muestra otro mensaje
Si punt2 esta apuntando a valor1 muestra un mensaje por pantalla
Si el contenido de punt1 es mayor que 10 súmale 1
Haz que punt1 sea un puntero nulo
Si punt1 no es nulo asignale la dirección de valor2
Si punt1 no es nulo y su contenido es mayor que 10 pon un mensaje

Solución:

#include <i o s t r e a m >


using namespace s t d ;
int main ( ) {
int v a l o r 1 = 1 0 ;
int ∗ punt1 = &v a l o r 1 ;
∗ punt1 = 2 0 ;
int v a l o r 2 ;
v a l o r 2 = v a l o r 1 +100;
punt1 = &v a l o r 2 ;
int v a l o r 3 , ∗ punt2 ;
punt2 = &v a l o r 1 ;
i f ( punt2 == punt1 )
c o u t << ”Apuntan a l mismo s i t i o ” ;
i f ( ∗ punt2 == ∗ punt1 )
c o u t << ” Contienen e l mismo v a l o r ” ;
i f ( punt2 == &v a l o r 1 )
c o u t << ” e s t a apuntando a v a l o r 1 ” ;
i f ( ∗ punt1 > 1 0 )
( ∗ punt1 )++;
punt1 = 0 ;
i f ( punt1 != 0 ) // o b i e n i f ( punt1 )
punt1 = &v a l o r 2 ;
i f ( ( punt1 != 0 ) && ( ∗ punt1 > 1 0 ) )
c o u t << ”No e s n u l o y su c o n t e n i d o e s mayor a 10 ” ;
}

2. [002.txt] Crea una función que recibe un array de enteros y su tamaño y que lo recorre mostrando los valores
por pantalla sin indexarlo (si usar corchetes)

Solución:

Página 1 de 7
Punteros

#include <i o s t r e a m >


using namespace s t d ;
void f ( int v a l o r e s [ ] , int s i z e ) {
f or ( int n=0; n<s i z e ; n++){
c o u t << ∗ ( v a l o r e s+n ) ;
}
}

3. [003.txt] Crea una función que recibe un puntero a entero que apunta al principio de un array de enteros y un
entero que indica el tamaño de dicho array. Haz que se sume 10 a cada uno de los valores sin indexarlo (sin usar
corchetes)

Solución:

void f ( int ∗ v a l o r e s , int s i z e ) {


f or ( int n=0; n<s i z e ; n++){
∗ ( v a l o r e s+n ) += 1 0 ;
}
}

4. [004.txt] Crea una función ejecutar que reciba un puntero a una función bool haceSol sin parámetros y dos
punteros a funciones void sin parámetros, vamosALaPlaya y nosQuedamosEnCasa. Si la primera función devuelve
true ejecuta la segunda, si no, la tercera.

Solución:

#include <i o s t r e a m >


using namespace s t d ;
bool h a c e S o l ( void ) ;
void vamosALaPlaya ( void ) ;
void nosQuedamosEnCasa ( void ) ;
void e j e c u t a r ( bool ( ∗ p r e g u n t a ) ( void ) , void ( ∗ c a s o V e r d a d e r o ) ( void ) , void ( ∗
c a s o F a l s o ) ( void ) ) ;
int main ( ) {
e j e c u t a r ( h a c e S o l , vamosALaPlaya , nosQuedamosEnCasa ) ;
}
bool h a c e S o l ( void ) {
return true ;
}
void nosQuedamosEnCasa ( ) {
c o u t << ” c a s a ” ;
}
void vamosALaPlaya ( ) {
c o u t << ” p l a y a ” ;
}
void e j e c u t a r ( bool ( ∗ p r e g u n t a ) ( void ) , void ( ∗ c a s o V e r d a d e r o ) ( void ) , void ( ∗
c a s o F a l s o ) ( void ) ) {
i f ( pregunta ( ) ) {
casoVerdadero ( ) ;
} else {
casoFalso () ;
}
}

Página 2 de 7
Punteros

5. [005.txt] Repite un mensaje en pantalla 100 veces con un bucle for

Solución:

#include <i o s t r e a m >


using namespace s t d ;
int main ( ) {
f or ( int n=0; n <100; n++)
c o u t << ” h o l a ” ;
}

6. [006.txt] Pide un entero por teclado con cin >> y repite mientras no se teclee 1000

Solución:

#include <i o s t r e a m >


using namespace s t d ;
int main ( ) {
int num = 0 ;
do{
c i n >> num ;
} while (num != 1 0 0 0 ) ;
}

7. [007.txt] Pide un char por teclado y repite mientras no sea una S o una s

Solución:

#include <i o s t r e a m >


using namespace s t d ;
int main ( ) {
char c ;
do{
c i n >> c ;
} while ( c != ’ S ’ && c != ’ s ’ ) ;
}

8. [008.txt] Cuenta desde 0 hasta 1000 mostrando el valor en pantalla pero termina de inmediato si el valor
multiplicado por 13 da 9685

Solución:

#include <i o s t r e a m >


using namespace s t d ;
int main ( ) {
f or ( int n=0; n <1000; n++){
i f ( n ∗ 13 == 9 6 8 5 )
break ;
c o u t << n ;
}
}

Página 3 de 7
Punteros

9. [009.txt] Crea una función llamada suma que devuelva la suma de 2 enteros

Solución:

int suma ( int a , int b ) {


return a+b ;
}

10. [010.txt] Crea una función incrementoPar que incremente un número y devuelva true si el valor resultante
es mayor que 10, o false en otro caso

Solución:

bool incrementoPar ( int &v a l o r ) {


v a l o r ++;
i f ( v alor > 10)
return true ;
else
return f a l s e ;
}

11. [011.txt] Crea una funcion calculo que reciba 3 parámetros enteros, con valor por defecto 10, y devuelva la
suma si es mayor a 100 o el doble de la suma si no lo es

Solución:

int c a l c u l o ( int a =10 , int b=10 , int c =10){


int r e t = a+b+c ;
i f ( r e t > 100)
return r e t ;
else
return r e t ∗ 2 ;
}

12. [012.txt] Crea una función asignar que reciba un puntero a entero y un entero. Haz que asigne al contenido
del entero el valor que guarda el entero

Solución:

void a s i g n a r ( int ∗ punt , int v a l o r ) {


∗ punt = v a l o r ;
}

13. [013.txt] Crea una funcion mostrar que reciba un array de enteros y su tamaño y muestre su contenido por
pantalla.

Solución:

Página 4 de 7
Punteros

#include <i o s t r e a m >


using namespace s t d ;

void mos tr ar ( int numeros [ ] , int s i z e ) {


f or ( int i = 0 ; i < s i z e ; i ++){
c o u t << numeros [ i ] ;
}
}

14. [014.txt] Crea una funcion sumar que reciba un puntero a entero y un número n indicando la cantidad de
enteros contiguos en memoria. Devuelve la suma de todos ellos

Solución:

int sumar ( int ∗ numeros , int s i z e ) {


int suma=0;
f or ( int i = 0 ; i < s i z e ; i ++){
// o b i e n suma += numeros [ i ] ;
suma += ∗ ( numeros + i ) ;
}
return suma ;
}

15. [015.txt] Declara un puntero a función que devuelve un int y que recibe un int

Solución:

int ( ∗ f ) ( int ) ;

16. [016.txt] Declara un puntero a un array de 10 funciones que devuelven un int y que reciben un int

Solución:

int ( ∗ f [ 1 0 ] ) ( int ) ;

17. [017.txt] Crea una función que reciba un puntero a una función void que reciba un int y ejecútala 10 veces
con los números del 1 al 10 como parámetro.

Solución:

void e j e c u t a r ( void ( ∗ f ) ( int p ) ) ;


void f u n c i o n ( int p ) {
// v a c i o
}
int main ( ) {
void ( ∗ f ) ( int e n t e r o ) ;
f = funcion ;
ejecutar ( f ) ;

Página 5 de 7
Punteros

}
void e j e c u t a r ( void ( ∗ p f ) ( int par ) ) {
f or ( int n=0; n<10; n++){
p f ( n+1) ;
}
}

18. [018.txt]
Declara un array a1 en el que quepan 10 enteros
Declara un array a2 en el que quepan 10 punteros a entero
Declara un array a3 para 10 chars
Declara un puntero a4 a caracter
Haz que a4 apunte al primer elemento de a3
Haz que a4 apunte al sexto elemento de a3
Con un bucle for llena el array a3 con los 10 números que van de 100 a 1000, contando de 100 en 100.
Coloca el valor 45 en la primera posición del array usando el puntero a4
Haz que a4 apunte a la siguiente posición del array;
Si el valor al que apunta a4 es mayor a ’M’muestra un mensaje en pantalla
Si el cuarto elemento del array a3 es distinto del quinto muestra un mensaje
Declara un puntero a char cad1 que apunte al contenido “Hola mundo”;
Declara un array de chars cad2 que contenga “Hola mundo”;
Declara un array de char cad3 que contenga 4 letras “X” y un fin de cadena
Muestra por pantalla cada letra de cad2 anteponiendole la palabra “Letra:”;
Declara un puntero a char que apunte a cad2 y haz lo mismo sin usar corchetes

Solución:

#include <i o s t r e a m >


using namespace s t d ;
int main ( ) {
int a1 [ 1 0 ] ;
int ∗ a2 [ 1 0 ] ;
char a3 [ 1 0 ] ;
char ∗ a4 ;
a4 = a3 ; // o b i e n a4 = &a3 [ 0 ] ;
a4 = &a3 [ 5 ] ;
f or ( int n=0; n<10; n++){
a3 [ n ] = 100 ∗ ( n+1) ;
}
∗ a4 = 4 5 ;
a4++;
i f ( ∗ a4 > ’M’ )
c o u t << ”mayor” ;
i f ( a3 [ 3 ] != a3 [ 4 ] )
c o u t << ”Es d i s t i n t o ” ;
const char ∗ cad1 = ” Hola mundo” ;
char cad2 [ ] = ” Hola mundo” ;
char cad3 [ ] = { ’X ’ , ’X ’ , ’X ’ , ’X ’ , ’ \0 ’ } ;
f or ( int i = 0 ; cad2 [ i ] != ’ \0 ’ ; i ++)

Página 6 de 7
Punteros

c o u t << ” L e t r a : ” << cad2 [ i ] ;


f or ( char ∗p = cad2 ; ∗p != ’ \0 ’ ; p++)
c o u t << ” L e t r a : ” << ∗p ;

19. [019.txt] Crea una funcion len que reciba un puntero a char y devuelva la longitud de la cadena a la que se
supone que esta apuntando

Solución:

int l e n ( char ∗ cad ) {


char ∗ i = cad ;
while ( ∗ i != ’ \0 ’ )
i ++;
return i − cad ;
}

20. [020.txt] Crea una función contiene que reciba una cadena y un char y te devuelva true si ese char está dentro
de la cadena

Solución:

bool c o n t i e n e ( char ∗ cad , char c ) {


char ∗ i = cad ;
bool e n c o n t r a d o = f a l s e ;
while ( ∗ i != ’ \0 ’ ) {
i f ( ∗ i == c )
return true ;
i ++;
}
return f a l s e ;
}

Página 7 de 7

S-ar putea să vă placă și