Sie sind auf Seite 1von 7

Estructura de Datos

1.- Encuentre los errores en la siguiente declaracin de punteros:


int X, *p, &y;//La referencia de la variable y necesita un inicializador
char* b = "Cadena larga";
char* c = C;//Error por comilla simple, necesita comilla doble caso contrario C
no esta definido
float x;
void* r = &x;
2.- Qu diferencia se puede encontrar entre un puntero a constante y un
constante puntero?
El puntero a constante requiere de la palabra reservada const se site antes del
tipo de dato mientras que un puntero constante requiere de la palabra
reservada const se site delante del nombre del puntero.
3.- En el siguiente cdigo se accede a los elementos de una matriz. Acceder a los
mismos elementos con aritmtica de punteros.
#include<iostream>
#include<conio.h>
#define N 4
#define M 5
using namespace std;
int main()
{
int f=0, c=0;
double mt[N][M] = {1,2,3,4,5,6,7,8,9,10};
for (; f < N; f++)
{
for (; c < M; c++)
printf("%1f", mt[f][c]);
printf("\n");
}
_getch();
}
4.- Dada la funcin:
double* gorta(double* v, int m, double k)
{
int j;
for (j = 0; j < m;j++)
if (*v == k);

return v;
return 0;
}
Hay errores en la codificacin? De qu tipo?
Si hay errores de compilacin.
Dada las siguientes definiciones:
double w[15], x, z;
void* r;
Hay errores de lgicos.
Es correcta la siguiente llamada a la funcin?:
r = gorta(w, 10, 12.3);
Y otras llamadas?:
printf("%1f", *gorta(w, 15, 10.5));
z = gorta(w, 15, 12.3);
La funcin se asigna valores diferentes a la definida en la asignacin, error de
compilacin.
5.- Dada las siguientes declaraciones de estructuras, escribe como acceder al
campo x de la variable estructura t.
struct fecha
{
int d, m, a;
float x;
};
struct dato
{
char* mes;
struct fecha* r;
};
struct t
{
Int x;
fecha.x;
};

Qu problema habra en la siguiente sentencia?

gets(t.mes);
Primero se debe establecer la llamada a la estructura en la funcin principal,
luego se debe haber creado para el get un set respectivo pero todo dentro de la
estructura que se va a realizar la llamada caso contrario no puedo acceder a los
datos.
6.- Escribir un programa en el que se lean 20 lneas de texto, cada lnea con un
mximo de 80 caracteres. Mostrar por pantalla el nmero de vocales que tiene
cada lnea.
Codigo:
#include <iostream>
#include <conio.h>
#define N 82
#define R 20
using namespace std;
void datos(char *A)
{
int i;
int cont = 0;
cout << "Escriba la linea" << endl;
fgets(A, N, stdin);//lee n-1 nmero de caracteres indicado por n desde el
stream apuntado por stream al array apuntado por cadena
for (i = 0; *(A + i); i++)//muevo el apuntador con el subindice i
{
if (*(A + i) == 'a' || *(A + i) == 'e' || *(A + i) == 'i' || *(A + i) == 'o' ||
*(A + i) == 'u'||
*(A + i) == 'A' || *(A + i) == 'E' || *(A + i) == 'I' || *(A + i) ==
'O' || *(A + i) == 'U')//comparo las vocales
cont++;
}
cout << "El numero de vocales en la frase es: " << cont << endl;
_getch();
}
int main()
{
int rep;
char linea[N];

for (rep = 0; rep < R; rep++)//indico el numero de lineas que se va a


repetir
datos(linea);//llamo a la funcion y le envio el numero de caracteres
(80)
return 0;
}
Funcionamiento del programa:

7.- en una competencia de natacin se presentan 16 nadadores. Cada nadador


se caracteriza por su nombre, edad, prueba en la que participa y tiempo
(minutos, segundos) de la prueba. Escribir un programa que realice la entrada
de datos y calcule la desviacin estndar respecto al tiempo. Para entrada de
datos, definir una funcin que lea el dispositivo estndar del nombre, edad,
prueba y tiempo.
#include <cstdlib>
#include <iostream>
#include <conio.h>
#define max 2
using namespace std;
struct tiempos
{
int min, seg;
};

struct regnadador
{
char *nombre, *prueba;
int edad;
tiempos tiempo;
};
void leerregnadador(regnadador* &reg)
{
char entrada[41];
reg = new regnadador;
cout << " Introduzca el nombre : ";
cin >> entrada;
reg->nombre = new char[strlen(entrada) + 1];
strcpy(reg->nombre, entrada);
cout << " Introduzca la edad : ";
cin >> reg->edad;
cout << " Introduzca la prueba en la que participa : ";
cin >> entrada;
reg->prueba = new char[strlen(entrada) + 1];
strcpy(reg->prueba, entrada);
cout << " Introduzca el tiempo de la prueba.Minutos y segundos: ";
cin >> reg->tiempo.min >> reg->tiempo.seg;
}
void leerVectorNadadores(regnadador *VectorNadadores[])
{
int i;
for (i = 0; i < max; i++)
leerregnadador(VectorNadadores[i]);
}
void escribirregnadador(regnadador* reg)
{
cout << " nombre : " << reg->nombre << endl;
cout << " edad : " << reg->edad << endl;
cout << " prueba en la que participa : " << reg->prueba << endl;
cout << " tiempo de la prueba. Minutos y segundos : ";
cout << reg->tiempo.min << " " << reg->tiempo.seg << endl;
}
void EscribirVectorNadadores(regnadador *VectorNadadores[])

{
int i;
for (i = 0; i < max; i++)
escribirregnadador(VectorNadadores[i]);
}
float MediaVector(regnadador *VectorNadadores[])
{
float aux = 0;
for (int i = 0; i < max; i++)
aux += VectorNadadores[i]->tiempo.min * 60 +
VectorNadadores[i]->tiempo.seg;
return aux / max;
}
float DesviacionMedia(regnadador *VectorNadadores[])
{
float tiemposeg, aux = 0, media = MediaVector(VectorNadadores);
for (int i = 0; i < max; i++)
{
tiemposeg = VectorNadadores[i]->tiempo.min * 60 +
VectorNadadores[i]->tiempo.seg;
aux += fabs(tiemposeg - media);
}
return aux / max;
}
int main(int argc, char *argv[])
{
regnadador *VectorNadadores[16];
leerVectorNadadores(VectorNadadores);
EscribirVectorNadadores(VectorNadadores);
cout << "DesviacionTipica"<<(VectorNadadores);
_getch();
return 0;
}

Das könnte Ihnen auch gefallen