Sunteți pe pagina 1din 7

Punteros

Punteros

1. [001.txt]

Declara un entero valor1 con valor inicial 10Punteros 1. [001.txt] Declara un puntero punt1 que apunte al entero valor1 Asigna 20 al contenido

Declara un puntero punt1 que apunte al entero valor11. [001.txt] Declara un entero valor1 con valor inicial 10 Asigna 20 al contenido de dicho

Asigna 20 al contenido de dicho puntero10 Declara un puntero punt1 que apunte al entero valor1 Declara otro entero llamado valor2 Asignale

Declara otro entero llamado valor2al entero valor1 Asigna 20 al contenido de dicho puntero Asignale el valor de valor1 m´as

Asignale el valor de valor1 m´as 100de dicho puntero Declara otro entero llamado valor2 Asigna a punt1 la direcci´on de valor2 Declara

Asigna a punt1 la direcci´on de valor2entero llamado valor2 Asignale el valor de valor1 m´as 100 Declara en una sola linea un

Declara en una sola linea un entero valor3 y un puntero punt2de valor1 m´as 100 Asigna a punt1 la direcci´on de valor2 Haz que punt2 apunte a

Haz que punt2 apunte a valor1en una sola linea un entero valor3 y un puntero punt2 Si punt2 y punt1 apuntan

Si punt2 y punt1 apuntan al mismo sitio muestra un mensaje por pantallavalor3 y un puntero punt2 Haz que punt2 apunte a valor1 Si el contenido de ambos

punt1 apuntan al mismo sitio muestra un mensaje por pantalla Si el contenido de ambos tiene

Si el contenido de ambos tiene el mismo valor muestra otro mensajepunt1 apuntan al mismo sitio muestra un mensaje por pantalla Si punt2 esta apuntando a valor1

Si punt2 esta apuntando a valor1 muestra un mensaje por pantallacontenido de ambos tiene el mismo valor muestra otro mensaje Si el contenido de punt1 es

Si el contenido de punt1 es mayor que 10 s´umale 1esta apuntando a valor1 muestra un mensaje por pantalla Haz que punt1 sea un puntero nulo

Haz que punt1 sea un puntero nulopantalla Si el contenido de punt1 es mayor que 10 s´umale 1 Si punt1 no es

Si punt1 no es nulo asignale la direcci´on de valor2es mayor que 10 s´umale 1 Haz que punt1 sea un puntero nulo Si punt1 no

Si punt1 no es nulo y su contenido es mayor que 10 pon un mensajenulo Si punt1 no es nulo asignale la direcci´on de valor2 Soluci´on: #include < i o

Soluci´on:

#include < i o s t re am >

using namespace

int main ( )

{

s t d ;

int

int punt1 = punt1 = 2 0;

int

v al o r 2 = v al o r 1 +100;

punt1 = &v al o r 2 ; int v al o r 3 , punt2 ; punt2 = &v al o r 1 ; i f ( punt2 == punt1 ) c ou t << ”Apuntan

i ( punt2 == punt1 )

ou t << ” Contienen

i ( punt2 == &v al o r 1 )

v al o r 1 = 1 0;

&v al o r 1 ;

v al o r 2 ;

a l

mismo

s i t i o

;

e l

mismo

v al o r ” ;

f

f

c

c ou t << ” e s t a

punt1 > 1 0 )

i (

f

( punt1 )++; punt1 = 0 ;

apuntando a v al o r 1 ” ;

i ( punt1 != 0 )

f

//

o

bien

i f ( punt1 )

punt1 = &v al o r 2 ;

i ( ( punt1 != 0 ) && ( punt1 >

f

1 0 )

)

c ou t << ”No e s nul o y su c o n t e ni d o e s mayor a 10 ” ;

}

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

Punteros

Punteros

#include < i o s t re am >

using namespace

s t d

;

void f

for

(

( int v a l o r e s

int n=0;

[ ]

int s i z e ) {

, n< s i z e ; n++) {

 

c

ou t <<

( v a l o r e s+n ) ;

}

}

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

int s i z e ) { ; n++) { , ; , vamosALaPlaya ,
int s i z e ) {
; n++) {
,
;
, vamosALaPlaya , nosQuedamosEnCasa ) ;

Soluci´on:

void f ( int v al o r e s

}

for (

(

}

int

v a l o r e s+n ) += 1 0;

n=0; n< s i z e

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

Soluci´on:

#include < i o s t re am > using namespace s t d ;

bool

void

void

void

h a c e S ol ( void )

vamosALaPlaya ( void ) ; nosQuedamosEnCasa ( void ) ; e j e c u t a r ( bool ( p re gun t a ) ( void ) , void ( c a s oVe rd ade r o )

int

a s oF al s o ) ( void ) ) ; main ( ) {

c

e j e c u t a r

( h aceS ol

}

bool

h a c e S ol (

void ) {

return true ;

}

void nosQuedamosEnCasa ( ) {

c ou t << ” c a s a ” ;

}

void vamosALaPlaya ( ) {

c ou t << ” pl a y a ” ;

}

void e j e c u t a r (

bool ( p re gun t a ) ( void ) , void ( c a s oVe rd ade r o

c a s oF al s o ) ( void ) ) {

i

f (

p re gun t a ( ) ) {

c

a s oVe rd ade r o ( ) ;

}

e l s e

{

c

a s oF al s o ( ) ;

}

}

( void )

)

( void

, void (

) , void (

P´agina 2 de 7

Punteros

Punteros

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

Soluci´on:

#include < i o s t re am > using namespace s t d ;

int

main ( ) { ( int n=0; n < 100; n++) c ou t << ” h ol a ” ;

for

}

s t d ; 1 0 0 0 ) ; s t d ;
s t d ;
1 0 0 0 ) ;
s t d ;

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

Soluci´on:

#include < i o s t re am >

using namespace int main ( ) {

int

do {

num = 0 ;

ci n >> num;

} while (num !=

}

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

Soluci´on:

#include < i o s t re am >

using namespace

int main

( ) {

char c ;

do {

ci 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´on:

#include < i o s t re am >

using namespace

int main ( ) for ( int

s t d ;

{ n=0; n < 1000; n++) {

( n 13 == 9 6 8 5 )

i

break ; c ou t << n ;

f

}

}

P´agina 3 de 7

Punteros

Punteros

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

Soluci´on:

int suma ( int a , int b ) {

}

return

a+b ;

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

el valor resultante es mayor que 10, o false en otro caso Soluci´on: bool inc remen

Soluci´on:

bool inc remen toPa r ( int &v al o r ) { v al o r++;

i

f

(

v al o r > 1 0 )

return

true ;

e

l s e return

f a l s e ;

}

11. [011.txt] Crea una funcion calculo que reciba 3 par´ametros 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´on:

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 > 1 0 0 )

return

r e t

;

e

l s e return

r e t 2;

}

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

Soluci´on:

void a si g n a r (

int punt , int v al o r ) {

punt = v al o r ;

}

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

Punteros

Punteros

#include < i o s t re am > using namespace s t d ;

void mo s t r a r ( int

numeros [ ] , int s i z e ) {

for

( int i = 0 ;

i <

s i z e ;

i++) {

c ou t << numeros [ i ]

;

}

}

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

contiguos en memoria. Devuelve la suma de todos ellos Soluci´on: int sumar ( int int suma=0;
Soluci´on: int sumar ( int int suma=0; ∗ numeros , int s i z e
Soluci´on:
int sumar ( int
int suma=0;
∗ numeros ,
int s i z e ) {
for ( 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´on que devuelve un int y que recibe un int

Soluci´on:

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´on:

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

17. [017.txt] Crea una funci´on que reciba un puntero a una funci´on void que reciba un int y ejec´utala 10 veces con los n´umeros del 1 al 10 como par´ametro.

Soluci´on:

void

e j e c u t a r

( void

( f ) ( int p ) ) ;

void

f u n ci o n

(

int p )

{

// vacio

}

int main

( )

{

void (

f

) (

int e n t e r o

)

;

f = f u n ci o n

;

e j e c u t a r ( f )

;

P´agina 5 de 7

Punteros

Punteros
 

}

void e j e c u t a r ( void ( p f ) ( int par ) ) {

 

for (

int

n=0; n < 10; n++) {

 

p

f ( n+1) ;

 

}

}

18. [018.txt]

 

Declara un array a1 en el que quepan 10 enteros a1 en el que quepan 10 enteros

Declara un array a2 en el que quepan 10 punteros a entero a2 en el que quepan 10 punteros a entero

Declara un array a2 en el que quepan 10 punteros a entero Declara un array a3

Declara un array a3 para 10 chars a3 para 10 chars

Declara un puntero a4 a caracter a4 a caracter

Haz que a4 apunte al primer elemento de a3 a4 apunte al primer elemento de a3

Haz que a4 apunte al sexto elemento de a3 a4 apunte al sexto elemento de a3

Con un bucle for llena el array a3 con los 10 n´umeros que van de 100 a 1000, for llena el array a3 con los 10 n´umeros que van de 100 a 1000, contando de 100 en 100.

Coloca el valor 45 en la primera posici´on del array usando el puntero a4 a4

Haz que a4 apunte a la siguiente posici´on del array; a4 apunte a la siguiente posici´on del array;

Si el valor al que apunta a4 es mayor a ’M’muestra un mensaje en pantalla a4 es mayor a ’M’muestra un mensaje en pantalla

Si el cuarto elemento del array a3 es distinto del quinto muestra un mensaje a3 es distinto del quinto muestra un mensaje

Declara un puntero a char cad1 que apunte al contenido “Hola mundo”; cad1 que apunte al contenido “Hola mundo”;

Declara un array de chars cad2 que contenga “Hola mundo”; cad2 que contenga “Hola mundo”;

Declara un array de char cad3 que contenga 4 letras “X” y un fin de cadena cad3 que contenga 4 letras “X” y un fin de cadena

Muestra por pantalla cada letra de cad2 anteponiendole la palabra “Letra:”; cad2 anteponiendole la palabra “Letra:”;

Declara un puntero a char que apunte a cad2 y haz lo mismo sin usar corchetes cad2 y haz lo mismo sin usar corchetes

Soluci´on: #include < i o s t re am > using namespace s t d
Soluci´on:
#include < i o s t re am >
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 ] ;
for ( int n=0; n < 10;
n++)
{
a3
[ n ] = 100 ∗ ( n+1) ;
}
∗ a4 =
4 5;
a4++;
i
f
( ∗ a4
> ’M’ )
c ou t
<< ”mayor” ;
i f
( a3 [ 3 ] != a3 [ 4 ] )
c ou t << ”Es
const char ∗
d i s t i n t o ” ;
cad1 = ”Hola mundo” ;
char
cad2 []= ” Hola mundo” ;
char
,
for ( int i = 0 ; cad2 [ i ] != ’ \ 0 ’ ; i++)
cad3
[ ]
= { ’X ’ ,
’X ’ ,
’X ’ ,
’X ’
’ \ 0
} ;

P´agina 6 de 7

Punteros

Punteros

c

ou t <<

Le t r a : ”

<< cad2 [

i

]

;

for

( char p =

cad2 ; p != ’ \ 0 ’ ; p++)

c ou t << ” Le 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´on:

int l e n ( char cad

char i =

while ( i != ’ \ 0 ’ )

cad ;

i ++;

return i cad ;

}

) {
) {

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

Soluci´on: bool c o n ti e n e ( char ∗ cad , char
Soluci´on:
bool c o n ti e n e
( char
cad , char c ) {
char
bool
∗ i = cad ;
enc on t r ad o = f
a l s e ;
while ( ∗ i != ’ \ 0 ’ ) {
i
f ( ∗ i == c )
return true ;
i ++;
}
return f a l s e ;
}

P´agina 7 de 7