Professional Documents
Culture Documents
#include <cstdlib>
#include <iostream>
using namespace std;
cout << " Contenido de Variable = " << Variable << endl;
cout << " Direccio &Variable = " << &Variable << endl;
cout << " Contenido de Referencia = " << Referencia << endl;
cout << " Direccio &Referencia = " << &Referencia << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Resultado de ejecución:
EJEMPLO 10.2
#include <cstdlib>
#include <iostream>
using namespace std;
Resultado de ejecución:
EJEMPLO 10.3
#include <cstdlib>
1
#include <iostream>
using namespace std;
punteroc = &caracter;
cout << " ASCII caracter" << endl ;
for (caracter = 'A'; caracter <= 'F'; caracter++)
cout << " "<< (int) caracter << " " << *punteroc << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Resultado de ejecución:
EJEMPLO 10.4
EJEMPLO 10.5.
#include <cstdlib>
#include <iostream>
using namespace std;
Resultado de ejecución:
2
EJEMPLO 10.6
#include <cstdlib>
#include <iostream>
using namespace std;
Resultado de ejecución:
EJEMPLO 10.7
#include <cstdlib>
#include <iostream>
using namespace std;
3
*puntero++ = *puntero+32; // sumar 32, para convertir en minúscula
else if ((*puntero >= 'a') && (*puntero <= 'z'))
*puntero++ = *puntero-32; // restar 32, para convertir en mayúscula
else
puntero++;
EJEMPLO 10.8.
int x, y;
const int z = 25; // constante entera
const int t = 50; // constante entera
int *const puntero1 = &x; //puntero1 es un puntero constante
const int *puntero2 = &z; // punero2 es un puntero a constante
*puntero1 = y; // sentencia válida puede cambiarse su contenido
p1 = &y; //sentencia ilegal no puede cambiarse el puntero
puntero2 = &t; // sentencia válida puede cambiarse puntero2
*puntero2 = 15; // sentencia ilegal no puede cambiarse su contenido
EJEMPLO 10.9
A es un puntero que apunta a un array de 5 punteros A[0], A[1], A[2], A[3], A[4].
A[0] es un puntero que apunta a un array de tres elementos A[0][0], A[0][1], A[0][2].
A[1] es un puntero que apunta a un array de tres elementos A[1][0], A[1][1], A[1][2].
A[2] es un puntero que apunta a un array de tres elementos A[2][0], A[2][1], A[2][2].
A[3] es un puntero que apunta a un array de tres elementos A[3][0], A[3][1], A[3][2].
A[4] es un puntero que apunta a un array de tres elementos A[4][0], A[4][1], A[4][2].
EJEMPLO 10.10
4
A es una matriz de reales y V es un vector de punteros a reales, por lo que las declaraciones son
esencialmente diferentes.
EJEMPLO 10.11
include <cstdlib>
#include <iostream>
using namespace std;
#define N 5
#define M 4
double A[N][M];
5
EJEMPLO 10.12
#include <cstdlib>
#include <iostream>
#define F 3
#define C 2
using namespace std;
int A[F][C];
EJEMPLO 10.13
#include <cstdlib>
#include <iostream>
using namespace std;
struct datos
{
float mayor, menor;
};
6
void leer_registrodatosCmasmas(datos &t) // parámetro por referecia en C++
{
float actual;
cin >> actual;
if (actual > t.mayor)
t.mayor = actual;
else if (actual < t.menor)
t.menor = actual;
}
void leer_registrodatosC(datos *t) // parámetro dirección C, referencia
{
float dat;
cin >> dat;
if (dat > t -> mayor)
t -> mayor = dat;
else if (dat < t -> menor)
t -> menor = dat;
}
EJEMPLO 10.14
#include <cstdlib>
#include <iostream>
#include <math.h>
#define maxf 3
#define minx 0.3
#define maxx 4.1
#define incremento 0.5
using namespace std;
float f1 (float x)
{
return (3 * sin(x)+ 2.5*cos(x));
}
float f2(float x)
{
return (-x * sin (x) + x*x);
}
float f3(float x)
{
return ( x *x - x + 1);
}
7
Array_de_Funciones [1] = f2;
Array_de_Funciones [2] = f3;
resultado de ejecución:
EJEMPLO 10.15 .
include <cstdlib>
#include <iostream>
using namespace std;
double terminoserie1(int i)
{
return (double)3.0/(i*i);
}
double terminoserie2(int i)
8
{
return (double)1.0/i;
}
resultado de ejecución:
EJEMPLO 10.16
struct fechas
{
int dia, mes, anyo;
float dat;
};
struct datos
{
char* nombre;
fechas * fec;
} est;
La variable est es una variable de tipo estructura, por lo que hay que usa el operador punto
para acceder al miembro fec. Desde el dato miembro fec es necesario usar el operador flecha
-> para acceder al campo dat, día, mes y anyo, al ser un puntero a la estructura fechas a
la que apunta.
est.fec->dat;
est.fec->dia;
est.fec->mes;
est.fec->anyo;
EJEMPLO 10.17.
#include <cstdlib>
#include <iostream>
using namespace std;
struct articulo
{
char nombre[81];
int codigo;
};
9
cout << "nombre del articulo :";
cin.getline(particulo->nombre, 80);
cout << "Codigo del artículo :";
cin>> particulo->codigo;
}
Resultado de ejecución:
EJERCICIO 10.1
Es incorrecta sintácticamente la declaración int &y, ya que es una referencia y debe ser
inicializada a una variable(Una referencia es un alias de otra variable). No tiene ningún sentido
en C++, debería ser int &y = x por ejemplo. Un carácter que está entre comillas simples es
considerado como una constante de tipo char no como una cadena, para lo cual debería estar
rodeado de dobles comillas: char* c= "C". La declaración void* r = &x; es correcta.
EJERCICIO 10.2
Por medio de un puntero a constante se puede acceder a la constante apuntada, pero no está
permitido cambiar o modificar su valor por medio del puntero. Un puntero declarado como
constante no puede modificar el valor del puntero, es decir la dirección que contiene y a la que
apunta, pero puede modificarse el contenido almacenado en la posición de memoria a la que
apunta.
EJERCICIO 10.3
El tipo del puntero que se utilice para recorrer un array unidimensional tiene que ser del mismo
tipo que el de los elementos que compongan el array, puesto que va a ir apuntando a cada uno de
ellos según los recorra. El acceso y recorrido puede realizarse de la siguiente forma:
int *p, v[5];
p = v;
for (int i = 0; i < 5; i++, p++) // p apunta a v[i]
v[i][j];
*(v[i] +j ); // puntero de filas
*((*(v + i)) + j) //puntero de columnas
10
(&v[0][0] + Numero_de_columnas * i + j)
EJERCICIO 10.4
#include <cstdlib>
#include <iostream>
using namespace std;
#define N 2
#define M 3
double mt[N][M];
11
EJERCICIO 10.5
EJERCICIO 10.6
PROBLEMA 10.1
#include <cstdlib>
#include <iostream>
using namespace std;
struct Persona
{
char NombrePersona[31];
12
int edad, altura, peso;
};
PROBLEMA 10.2
#include <cstdlib>
#include <iostream>
#define F 10
#define C 10
#define max 100
#define randomize ( srand (time(NULL) ))
#define random(num) ( rand()%(num))
float A[F][C];
randomize;
for (i = 0; I < f; i++)
for (j = 0; j < c; j++)
*(*m + i*C +j) = random (max) + 1;
}
13
int i,j;
crearMatriz(&a, F, C);
escribir_matriz(&a, F, C);
if(simetrica(&a,F,C))
cout << " es simetrica \n";
else
cout << " no es simetrica \n";
system("PAUSE");
return EXIT_SUCCESS;
}
PROBLEMA 10.3
#include <cstdlib>
#include <iostream>
#define F 4
#define C 5
#define max 100
float A[F][C];
float V[C];
using namespace std;
14
{
float * a = &A[0][0], *v = &V[0];
crearMatriz(&a, F, C);
escribir_matriz(&a, F, C);
multiplicacolumna(&a,F,C,2,v);
muestravector(v,C);
muestra_suma(v,C);
system("PAUSE");
return EXIT_SUCCESS;
}
PROBLEMA 10.4
#define F 3
#define C 3
void Intercambiafilas (float **m, int f, int c, int nf1, int nf2)
{
int j;
float aux;
void Sumafilas (float **m, int f, int c, int nf1, int nf2)
{
int j;
for (j = 0; j< c; j++)
*(*m + nf1*C + j)+= *(*m + nf2*C + j);
}
PROBLEMA 10.5
15
*(*m + i*C + j) *= numero;
}
PROBLEMA 10.6
#include <cstdlib>
#include <iostream>
#define treinta 30
using namespace std;
cout << " vocales de la linea: " << nvoc << endl;
totalnvoc += nvoc; // se incrementa el numero total de vocales
} //bucle for externo
16
PROBLEMA 10.7
#include <cstdlib>
#include <iostream>
#define max 2
using namespace std;
struct tiempos
{
int min, seg;
};
struct regnadador
{
char *nombre, *prueba;
int edad;
tiempos tiempo;
};
17
}
leerVectorNadadores (VectorNadadores);
EscribirVectorNadadores(VectorNadadores);
cout << DesviacionTipica (VectorNadadores);
system("PAUSE");
return EXIT_SUCCESS;
}
PROBLEMA 10.8
#include <cstdlib>
#include <iostream>
#include <math.h>
using namespace std;
float TriRect( )
{
float c1, c2;
float TriIsoc( )
{
float l1,l2;
18
float Cuad( )
{
float l;
float Circ()
{
float r, pi = 3.14159;
cout << " Introduzca el radio del circulo:\n";
cin >> r;
return r * r * pi;
}
PROBLEMA 10.9
#include <cstdlib>
#include <iostream>
#define max 20
using namespace std;
struct registro
{
char *nombre;
char *direccion;
char fecha [10];
char sexo; /* V o H */
char diavisita [10];
char *problema;
};
19
cout << "Nombre del paciente : ";
cin.getline(linea,80);
reg.nombre = new char [strlen (linea) +1];
strcpy (reg.nombre, linea);
cout << "Direccion del paciente : ";
cin.getline(linea,80);
reg.direccion = new char [strlen (linea) +1];
strcpy (reg.direccion, linea);
cout << "Fecha de nacimiento (dd/mm/aa): ";
cin.getline(reg.fecha,9);
cout << "Dia de visita (dd/mm/aa) : ";
cin.getline(reg.diavisita,9);
cout << "Sexo del paciente : V/H ";
cin.get(reg.sexo);cin.get(ch); // segundo cin para saltar intro
cout << "Problema médico del paciente : ";
cin.getline(linea,80);
reg.problema = new char [strlen (linea) +1];
strcpy (reg.problema, linea);
}
cout << " Pacientes con visita el dia:" << dia << endl;
cout << " ========================================\n";
for (i = 0; i < max; i++)
if ( !strcmp (dia, vector[i].diavisita))
cout << vector[i].nombre;
}
leervector(vector);
cout << " Introduzca la fecha de la consulta: (dd/mm/aa) ";
cin.getline(fecha,9);
mostrarlasconsultas (fecha, vector);
system("PAUSE");
return EXIT_SUCCESS;
}
20
PROBLEMA 10.10
#include <cstdlib>
#include <iostream>
using namespace std;
21
PROBLEMA 10.11
#include <cstdlib>
#include <iostream>
#define maxoperadores 5
using namespace std;
22
system("PAUSE");
return EXIT_SUCCESS;
}
Resultado de ejecución:
23