Sie sind auf Seite 1von 27

1.

Que rellene un array con los 100 primeros números enteros y los muestre en
pantalla en orden ascendente.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,tabla[100];

for (x=1;x<=100;x++)
{
tabla[x]=x;
}

for (x=1;x<=100;x++)
{
printf("%d\n",tabla[x]);
}

system("PAUSE");
return 0;
}

2. Que rellene un array con los 100 primeros números enteros y los muestre en
pantalla en orden descendente.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,tabla[100];

for (x=1;x<=100;x++)
{
tabla[x]=x;
}

for (x=100;x>=1;x--)
{
printf("%d\n",tabla[x]);
}

system("PAUSE");
return 0;
}

3. Que rellene un array con los números primos comprendidos entre 1 y 100 y los
muestre en pantalla en orden ascendente.
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,cont,z,i,tabla[100];

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++)
{
printf("%d\n",tabla[x]);
}

system("PAUSE");
return 0;
}

4. Que rellene un array con los números pares comprendidos entre 1 y 100 y los
muestre en pantalla en orden ascendente.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,cont,z,i,tabla[100];

i=0;
for (x=1;x<=100;x++)
{
cont=0;
if (x%2==0)
{
tabla[i]=x;
i++;
}
}

for (x=0;x<i;x++)
{
printf("%d\n",tabla[x]);
}

system("PAUSE");
return 0;
}

5. Que rellene un array con los números impares comprendidos entre 1 y 100 y los
muestre en pantalla en orden ascendente.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,cont,z,i,tabla[100];

i=0;
for (x=1;x<=100;x++)
{
cont=0;
if (x%2==1)
{
tabla[i]=x;
i++;
}
}

for (x=0;x<i;x++)
{
printf("%d\n",tabla[x]);
}

system("PAUSE");
return 0;
}

6. Que lea 10 números por teclado, los almacene en un array y muestre la suma,
resta, multiplicación y división de todos.
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,tabla[10];
int sum,res,mul,div;

for (x=0;x<10;x++)
{
printf("Introduzca número\n");
scanf("%d",&tabla[x]);
}

sum=tabla[0];
res=tabla[0];
mul=tabla[0];
div=tabla[0];

for (x=1;x<10;x++)
{
sum=sum+tabla[x];
res=res-tabla[x];
mul=mul*tabla[x];
div=div/tabla[x];
}

printf("Suma: %d\n",sum);
printf("Resta: %d\n",res);
printf("Multiplicación: %d\n",mul);
printf("División: %d\n",div);

system("PAUSE");
return 0;
}

7. Que lea 10 números por teclado, los almacene en un array y los ordene de forma
ascendente.

#include <stdio.h>
#include <stdlib.h>

int main()
{
float aux, numeros[10];
int i,j,n=10;

for (i=0;i<n;i++){
printf("Escriba un número");
scanf("%f",&numeros[i]);
}

for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(numeros[i]<numeros[j])
{
aux=numeros[i];
numeros[i]=numeros[j];
numeros[j]=aux;
}
}
}

for (i=n-1;i>=0;i--){
printf("%f\n",numeros[i]);
}

system("PAUSE");
return 0;
}

8. Que lea 10 números por teclado, 5 para un array y 5 para otro array distinto.
Mostrar los 10 números en pantalla mediante un solo array.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int aux, numeros1[5],numeros2[5],numeros3[10];
int i,j;

for (i=0;i<5;i++){
printf("Escriba un número");
scanf("%d",&numeros1[i]);
}

for (i=0;i<5;i++){
printf("Escriba un número");
scanf("%d",&numeros2[i]);
}

for(i=0;i<5;i++)
{
numeros3[i]=numeros1[i];
}
for(i=0;i<5;i++)
{
numeros3[5+i]=numeros2[i];
}

for (i=0;i<10;i++){
printf("%d\n",numeros3[i]);
}

system("PAUSE");
return 0;
}

9. Que lea 5 números por teclado, los copie a otro array multiplicados por 2 y
muestre el segundo array.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int aux, numeros1[5],numeros2[5];
int i,j;

for (i=0;i<5;i++){
printf("Escriba un número");
scanf("%d",&numeros1[i]);
}

for(i=0;i<5;i++)
{
numeros2[i]=numeros1[i]*2;
}

for (i=0;i<5;i++){
printf("%d\n",numeros2[i]);
}

system("PAUSE");
return 0;
}

10. Que lea 5 números por teclado, los copie a otro array multiplicados por 2 y los
muestre todos ordenados usando un tercer array.

#include <stdio.h>
#include <stdlib.h>

int main()
{
int aux, numeros1[5],numeros2[5],numeros3[10];
int i,j;

for (i=0;i<5;i++){
printf("Escriba un número");
scanf("%d",&numeros1[i]);
}

for(i=0;i<5;i++)
{
numeros2[i]=numeros1[i]*2;
}

for(i=0;i<5;i++)
{
numeros3[i]=numeros1[i];
}

for(i=0;i<5;i++)
{
numeros3[5+i]=numeros2[i];
}

for (i=0;i<10;i++){
printf("%d\n",numeros3[i]);
}

system("PAUSE");
return 0;
}

11. Que rellene un array con los 100 primeros números pares y muestre su suma.

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
int x,cont,sum,i,tabla[100];

i=0;
sum=0;
for (x=1;x<=100;x++)
{
cont=0;
if (x%2==0)
{
tabla[i]=x;
i++;
}
}

for (x=0;x<i;x++)
{
sum=sum+tabla[x];
}

printf("%d\n",sum);

system("PAUSE");
return 0;
}

12. Que lea 10 números por teclado, los almacene en un array y muestre la media.

#include <stdio.h>
#include <stdlib.h>

int main()
{
float sum, numeros1[10];
int i;

sum=0;
for (i=0;i<10;i++){
printf("Escriba un número");
scanf("%f",&numeros1[i]);
}

for(i=0;i<10;i++)
{
sum=sum+numeros1[i];
}

printf("%f\n",sum/10);

system("PAUSE");
return 0;
}

13. Que mediante un array almacene números tanto positivos como negativos y los
muestre ordenados.

#include <stdio.h>
#include <stdlib.h>

int main()
{
float aux, numeros[10];
int i,j,n=10;
for (i=0;i<n;i++){
printf("Escriba un número");
scanf("%f",&numeros[i]);
}

for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(numeros[i]<numeros[j])
{
aux=numeros[i];
numeros[i]=numeros[j];
numeros[j]=aux;
}
}
}

for (i=n-1;i>=0;i--){
printf("%f\n",numeros[i]);
}

system("PAUSE");
return 0;
}

14. Que rellene un array con 20 números y luego busque un número concreto.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int i,x=0,vector[20], n=20, dato, centro,inf=0,sup=n-1;

for (i=0;i<20;i++){
printf("Escriba un número");
scanf("%d",&vector[i]);
}

printf("Escriba el número a buscar");


scanf("%d",&dato);

while(inf<=sup)
{
centro=(sup+inf)/2;
if (vector[centro]==dato)
{
printf("Existe\n");
x=1;
break;
}
else if(dato < vector [centro] )
{
sup=centro-1;
}
else
{
inf=centro+1;
}
}

if (x==0)
{
printf("No existe\n");
}

system("PAUSE");
return 0;

15. Que pinte un tablero de ajedrez, los peones con la letra P, las torres con T, los
caballos con C, los alfiles con A, el rey con R y la reina con M.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y;

for (x=0;x<8;x++)
{
for (y=0;y<8;y++)
{
//peones
if (x==1 || x==6)
{
printf("P");
}
//torres
else if ((x==0 && y==0) ||
(x==7 && y==0) ||
(x==0 && y==7) ||
(x==7 && y==7)
)
{
printf("T");
}
//caballos
else if ((x==0 && y==1) ||
(x==7 && y==1) ||
(x==0 && y==6) ||
(x==7 && y==6)
)
{
printf("C");
}
//alfiles
else if ((x==0 && y==2) ||
(x==7 && y==2) ||
(x==0 && y==5) ||
(x==7 && y==5)
)
{
printf("A");
}
//reina
else if ((x==0 && y==3) ||
(x==7 && y==3)
)
{
printf("M");
}
//rey
else if ((x==0 && y==4) ||
(x==7 && y==4)
)
{
printf("R");
}
else
{
printf(" ");
}
}
printf("\n");
}

system("PAUSE");
return 0;

16. Que muestre los primeros 100 números de izquierda a derecha usando un array
de dos dimensiones.
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y, numeros[10][10];

for (x=0;x<10;x++)
{
for (y=0;y<10;y++)
{
numeros[x][y]=(x*10)+1+y;
}

for (x=0;x<10;x++)
{
for (y=0;y<10;y++)
{
printf("%d ",numeros[x][y]);
}
printf("\n");
}

system("PAUSE");
return 0;

17. Que muestre los primeros 100 números de izquierda a derecha usando un array
de dos dimensiones, la última fila a mostrará la suma de sus respectivas columnas.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y,sum, numeros[11][10];

for (y=0;y<10;y++)
{
sum=0;
for (x=0;x<10;x++)
{
numeros[x][y]=(x*10)+1+y;
sum=sum+numeros[x][y];
}
numeros[10][y]=sum;
}

for (x=0;x<11;x++)
{
for (y=0;y<10;y++)
{
printf("%d ",numeros[x][y]);
}
printf("\n");
}

system("PAUSE");
return 0;
}

18. Que rellene un array de dos dimensiones con números pares, lo pinte y después
que pida una posición X,Y y mostrar el número correspondiente.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y,num=2, numeros[3][3];

for (x=0;x<3;x++)
{
for (y=0;y<3;y++)
{
numeros[x][y]=num;
num=num*2;
}
}

printf("Introduzca coordenada x: ");


scanf("%d",&x);
printf("Introduzca coordenada y: ");
scanf("%d",&y);

printf("El número es: %d\n",numeros[x][y]);

system("PAUSE");
return 0;
}

19. Que rellene una matriz de 3x3 y muestre su traspuesta (la traspuesta se consigue
intercambiando filas por columnas y viceversa).
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int x,y,num=0, numeros[4][4];

for (x=0;x<3;x++)
{
for (y=0;y<3;y++)
{
numeros[x][y]=num;
num++;
}
}

printf("El array original es: \n\n\n");

for(x = 0;x < 3;x++)


{
for(y = 0;y < 3;y++)
{
printf(" %d ", numeros[x][y]);
}
printf("\n\n\n");
}

printf("La traspuesta es: \n\n\n");

for(x = 0;x < 3;x++)


{
for(y = 0;y < 3;y++)
{
printf(" %d ", numeros[y][x]);
}
printf("\n\n\n");
}

system("PAUSE");
return 0;
}

20. Que lea una cadena y la muestre al revés.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int indice,x;
char frase[50];

printf("Introduzca una frase: ");


gets(frase);

for(x = 0;x < 50;x++)


{
if (frase[x]=='\0')
{
indice=x;
break;
}
}

printf("La frase al reves es: \n\n");

for(x = indice-1;x >=0;x--)


{
printf("%c",frase[x]);
}

printf("\n\n");

system("PAUSE");
return 0;
}

21. Que lea una cadena y diga cuantas vocales hay.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{

int sum=0,x;
char frase[50];

printf("Introduzca una frase: ");


gets(frase);

for(x = 0;x < 50;x++)


{
switch (frase[x])
{
case 'a':
sum++;
break;
case 'e':
sum++;
break;
case 'i':
sum++;
break;
case 'o':
sum++;
break;
case 'u':
sum++;
break;
default:
break;
}

printf("\n\nEn la frase hay %d vocales\n\n",sum);

printf("\n\n");

system("PAUSE");
return 0;
}

22. Que lea una cadena y diga cuantas mayúsculas hay.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{
int sum=0,x;
char frase[50];

printf("Introduzca una frase: ");


gets(frase);

for(x = 0;x < 50;x++)


{
if (frase[x]>=65 && frase[x]<=90)
{
sum++;
}
}

printf("\n\nEn la frase hay %d mayúsculas\n\n",sum);


printf("\n\n");

system("PAUSE");
return 0;
}

23. Que lea una cadena y la encripte sumando 3 al código ASCII de cada carácter.
Mostrar por pantalla.

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])


{
int sum=0,x;
char frase[50];

printf("Introduzca una frase: ");


gets(frase);

for(x = 0; x < 50;x++)


{
if (frase[x]!='\0')
{
frase[x]=frase[x]+3;
}
}

printf("\n\nLa nueva frase es:\n\n",sum);


printf("\n\n%s\n\n",frase);
printf("\n\n");

system("PAUSE");
return 0;
}

24. Que gestione los datos de stock de una tienda de comestibles, la información a
recoger será: nombre del producto, precio, cantidad en stock. La tienda dispone de
10 productos distintos. El programa debe ser capaz de:

a. Dar de alta un producto nuevo.


b. Buscar un producto por su nombre.
c. Modificar el stock y precio de un producto dado.

#include <stdio.h>
#include <stdlib.h>

struct producto {
char nombre[50];
float precio;
int cantidad;
};

int main(int argc, char *argv[])


{
struct producto prod,productos[10];

int x,opcion=1;

for (x=0;x<10;x++)
{
strcpy(productos[x].nombre,"X");
productos[x].precio=0;
productos[x].cantidad=0;
}

while ((opcion==1 || opcion==2 || opcion==3) && (opcion!=4))


{

printf("1- Alta de producto\n");


printf("2- Buscar por nombre\n");
printf("3- Modificar stock y precio\n");
printf("4- Salir\n");
printf("Introduzca una opción: ");
scanf("%d",&opcion);

if (opcion==1)
{
printf("Introduzca un nombre: ");
gets(prod.nombre);
gets(prod.nombre);
printf("Introduzca un precio: ");
scanf("%f",&prod.precio);
printf("Introduzca un stock: ");
scanf("%d",&prod.cantidad);

for(x = 9; x >=0; x--)


{
if (x!=0)
{
strcpy(productos[x].nombre,productos[x-1].nombre);
productos[x].precio=productos[x-1].precio;
productos[x].cantidad=productos[x-1].cantidad;
}
else
{
strcpy(productos[x].nombre,prod.nombre);
productos[x].precio=prod.precio;
productos[x].cantidad=prod.cantidad;
}
}
printf("\nProducto creado. \n\n");
}
else if (opcion==2)
{
printf("Introduzca un nombre: ");
gets(prod.nombre);
gets(prod.nombre);

for(x = 0; x < 10;x++)


{

if (strcmp(productos[x].nombre,prod.nombre)==0)
{
printf("\nNombre: %s\n",productos[x].nombre);
printf("Precio: %f\n",productos[x].precio);
printf("Cantidad en Stock: %d\n",productos[x].cantidad);
}
}
printf("\n\n");
}
else if (opcion==3)
{
printf("Introduzca un nombre: ");
gets(prod.nombre);
gets(prod.nombre);

for(x = 0; x < 10;x++)


{
if (strcmp(productos[x].nombre,prod.nombre)==0)
{
printf("Introduzca un precio: ");
scanf("%f",&productos[x].precio);
printf("Introduzca un stock: ");
scanf("%d",&productos[x].cantidad);
printf("\nProducto modificado.");
}
}
printf("\n\n");
}
}

system("PAUSE");
return 0;
}
25. Que gestiona las notas de una clase de 20 alumnos de los cuales sabemos el
nombre y la nota. El programa debe ser capaz de:

a. Buscar un alumno.
b. Modificar su nota.
c. Realizar la media de todas las notas.
d. Realizar la media de las notas menores de 5.
e. Mostrar el alumno que mejores notas ha sacado.
f. Mostrar el alumno que peores notas ha sacado.

#include <stdio.h>
#include <stdlib.h>

struct alumno {
char nombre[50];
float nota;
};

int main(int argc, char *argv[])


{
struct alumno alum,alumnos[5];

int x,opcion=1;
float sum=0,cont=0,mejor,peor;

for (x=0;x<5;x++)
{
printf("Introduzca nombre alumno:");
gets(alumnos[x].nombre);
gets(alumnos[x].nombre);
printf("Introduzca nota:");
scanf("%f",&alumnos[x].nota);
}

while ((opcion==1 || opcion==2 ||


opcion==3 || opcion==4 ||
opcion==5 || opcion==6) && (opcion!=7))
{

printf("1- Buscar un alumno\n");


printf("2- Modificar nota\n");
printf("3- Media de todas las notas\n");
printf("4- Media de todas las notas inferiores a 5\n");
printf("5- Alumno con mejores notas\n");
printf("6- Alumno con peores notas\n");
printf("7- Salir\n");
printf("Introduzca una opción: ");
scanf("%d",&opcion);

if (opcion==1)
{
printf("Introduzca un nombre: ");
gets(alum.nombre);
gets(alum.nombre);

for(x = 0; x < 5;x++)


{
if (strcmp(alumnos[x].nombre,alum.nombre)==0)
{
printf("\nNombre: %s\n",alumnos[x].nombre);
printf("Nota: %f\n",alumnos[x].nota);
}
}
printf("\n\n");
}
else if (opcion==2)
{
printf("Introduzca un nombre: ");
gets(alum.nombre);
gets(alum.nombre);

for(x = 0; x < 5;x++)


{
if (strcmp(alumnos[x].nombre,alum.nombre)==0)
{
printf("Introduzca una nota: ");
scanf("%f",&alumnos[x].nota);
printf("\nNota modificada.");
}
}
printf("\n\n");
}
else if (opcion==3)
{
sum=0;
for(x = 0; x < 5;x++)
{
sum=sum+alumnos[x].nota;
}
printf("\nLa media de las notas es de: %f \n",(sum/5));
}
else if (opcion==4)
{
sum=0;
cont=0;
for(x = 0; x < 5;x++)
{
if (alumnos[x].nota<5)
{
sum=sum+alumnos[x].nota;
cont++;
}
}
printf("\nLa media de las notas inferiores a 5 es: %f \n",sum/cont);
}
else if (opcion==5)
{
mejor=0;
for(x = 0; x < 5;x++)
{
if (alumnos[x].nota>mejor)
{
mejor=alumnos[x].nota;
alum.nota=alumnos[x].nota;
strcpy(alum.nombre,alumnos[x].nombre);
}
}
printf("\nEl alumno con mejores notas es: %s \n",alum.nombre);
}
else if (opcion==6)
{
peor=10;
for(x = 0; x < 5;x++)
{
if (alumnos[x].nota<peor)
{
peor=alumnos[x].nota;
alum.nota=alumnos[x].nota;
strcpy(alum.nombre,alumnos[x].nombre);
}
}
printf("\nEl alumno con peores notas es: %s \n",alum.nombre);
}
}

system("PAUSE");
return 0;
}
Un array es una colección finita de datos del mismo tipo, que se
almacenan en posiciones consecutivas de memoria y reciben un
nombre común.
Ejemplo de array: Supongamos que queremos guardar las notas de
los 20 alumnos de una clase. Para ello utilizaremos un array de 20
elementos y en cada elemento almacenaremos una nota.
Podemos representar gráficamente el array de notas de la siguiente
forma:
Array notas:

Para acceder a cada elemento del array se utiliza el nombre del array
y uno o más índices que indican la posición que ocupa el elemento
dentro del array. Cada índice se escribe entre corchetes.
El primer elemento del array ocupa la posición 0, el segundo la
posición 1, etc. En un array de N elementos el último ocupará la
posición N-1.
En el ejemplo anterior, notas[0] contiene la nota del primer alumno
y notas[19] contiene la del último
Cómo declarar un array:
Un array se declara de forma parecida a una variable de tipo simple
añadiéndole al nombre el número de elementos que contendrá el
array.
De forma general, un array se declara así:
tipo_dato nombre_array[elementos1][elementos2]…..;
elementos1, elementos2, etc. son los índices del array. Deben ser
números enteros positivos o expresiones con un resultado entero
positivo. Indican el número de elementos del array.
En el ejemplo anterior, el array notas se declara como:
double notas[20];
El array es unidimensional, se llama notas y contiene 20 elementos
de tipo double.
Más ejemplos de declaración de arrays:
int ventas[10] ; //array llamado ventas que contiene 10 enteros
double grados[20]; //array grados que contiene 20 elementos de tipo double
float precios[30]; //array llamado precios que contiene 30 elementos de tipo float
El número de índices determina la dimensión del array. Si el
array tiene solo un índice es un array de una dimensión o
unidimensional (también llamado vector), si tiene dos índices es un
array de dos dimensiones o bidimensional (también llamados
matrices, tablas o arreglos), si tienen tres índice tridimensional, etc.
Para facilitar la modificación del programa, el tamaño del array se
puede declarar utilizando una constante en lugar de una cantidad
entera. Esto hace más fácil modificar el programa ya que todas las
referencias al tamaño máximo del array (por ejemplo, en bucles for o
en definiciones de arrays) pueden ser modificadas cambiando el valor
de la constante.
Por ejemplo, declaración de 4 arrays A, B, C y D de 10 elementos
cada uno de tipo double usando una constante llamada ELEMENTOS:
const int ELEMENTOS = 10;
double A[ELEMENTOS], B[ELEMENTOS], C[ELEMENTOS],
D[ELEMENTOS];
En este caso si se modifica el tamaño de los arrays, solo habrá que
cambiar el valor de la constante.
Los arrays declarados como locales en una función tienen como
valores iniciales valores indeterminados, como ocurre con las
variables locales.
La declaración de un array puede incluir la asignación de
valores iniciales.
La forma general de hacerlo es:
tipo nombre_array[tamaño]={valor1,valor2,..,valorn};
Donde valor1 es el valor del primer elemento del array, valor2 el
valor del segundo elemento, y así sucesivamente.
El tamaño del array es opcional cuando se asignan valores iniciales en
la declaración.
Todos los elementos del array que no tienen asignados valores
iniciales explícitos, (sucede cuando un array tienes más elementos
que valores iniciales se han asignado), serán puestos
automáticamente a cero.

Ejemplos de asignación de valores iniciales en la declaración de un


array en C++:
double porcentaje[]={0, 0.3, 7.25, 4.2};
Se declara un array unidimensional llamado porcentaje que contiene 4 elementos de tipo
double. El número de elementos no es necesario indicarlo porque se están asignando4
valores iniciales. El compilador asume que el array tiene 4 elementos.
int numeros[5]= {1,4,-7,5,9};
Se declara un array unidimensional llamado numeros que contiene 5 elementos de tipo
int. Se indica el número de elementos aunque no es necesario hacerlo. Se están
asignando 5 valores iniciales. El compilador asume que el array tiene 5 elementos.
int digitos[8]= {3,4,2,7};
Se declara un array unidimensional llamado digitos que contiene 8 elementos de tipo
int. Aquí sí es necesario indicar el número de elementos del array porque solo se le
asignan valores iniciales a los cuatro primeros. El compilador asumiría que el array
tiene solo 4 elementos. En este caso los cuatro últimos elementos del array que no
reciben valores iniciales, toman el valor 0.
digitos[0]=3, digitos[1]=4, digitos[2]=2, digitos[3]=7,
digitos[4]=0, digitos[5]=0, digitos[6]=0, digitos[7]=0
Las declaraciones de arrays que hemos hecho hasta ahora se llaman
declaraciones implícitas: para cada array que se declara hay que
indicar el tipo y la dimensión.
Una alternativa a esto es definir un nuevo tipo de dato para el array
asignándole un nombre, y posteriormente declarar las variables como
pertenecientes a ese tipo.
C++ dispone del especificador typedef que permite la creación de
nuevos tipos de datos.
Los tipos de datos creados con typedef son sinónimos de otros tipos ya
existentes.
Por ejemplo, la siguiente instrucción crea un nuevo tipo de dato
llamado entero, sinónimo de int.
typedef int entero;
A partir de esta instrucción podemos declarar variables enteras así:
entero a, b=3;
Utilizando typedef podemos crear nuevos tipos de datos sinónimos de tipos array. La
forma general de hacerlo es:
typedef tipo_base nombre_nuevo_tipo[dimension];
Ejemplo:
typedef int Tvector[30];
Esta instrucción crea un nuevo tipo de dato llamado Tvector. Las
variables que se declaren de este tipo serán arrays de 30 enteros.
Por ejemplo:
Tvector a, b;
Se han declarado a y b de tipo Tvector; a y b son dos arrays de 30
enteros.
Ejemplos de arrays es C++:
Ejemplo 1: programa C++ que accede y modifica los elementos de un array
Los elementos de un array se pueden utilizar igual que cualquier otra variable y se
puede hacer con ellos las mismas operaciones que se pueden hacer con el resto de
variables.
#include <iostream>
using namespace std;
int main ()
{
int n, m = 5;
int a[]={2,8,3,0,4}; //se declara un array de 5 elementos de tipo
//int con esos valores iniciales
n = a[0]; //n = 2
a[0]=a[1]+a[2]; //a[0]= 8 + 3 = 11
a[1]++; //a[1]= 9
a[n]=m+10; //a[2]= 15
a[n+1]=7; //a[3]= 7
if(a[0]>=a[1]) //if(11 >= 9)
a[4]=a[0]; // a[4]= 11
cout << a[0]<<" "<< a[1]<< " "<< a[2]<< " "<< a[3]<< " "<< a[4];
cout << endl;
system("pause");
}
La salida de este programa es:
11 9 15 7 11
Si se intenta acceder a un elemento que está fuera de los límites del array (un
elemento con índice negativo o con un valor del índice mayor que el que corresponde
al último elemento del array) el compilador no avisa del error. El error se producirá
durante la ejecución si esa posición de memoria que se intenta acceder está fuera de
la zona de memoria asignada al programa.
Es responsabilidad del programador comprobar que los valores de los índices
utilizados en los accesos a los elementos del array están dentro de los límites del
array.
Ejemplo 2: recorrer un array

Para recorrer un array se utiliza una instrucción iterativa


(normalmente una instrucción for) utilizando una variable entera
como índice que tomará valores desde el primer elemento al último o
desde el último al primero.
El siguiente programa declara un array de 7 elementos de tipo double
llamado notas y le asigna valores iniciales. A continuación recorre el
array, utilizando la instrucción for, para mostrar por pantalla el
contenido del array.
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
int i;
double notas[]={2.3,8.5,3.2,9.5,4,5.5,7.0}; //array de 7
elementos
cout << fixed << setprecision(2);
for(i=0; i<7; i++)
cout << notas[i] << " "; //se muestra cada elemento
del array
cout << endl;
system("pause");
}
La salida que muestra este programa es:
2.30 8.50 3.20 9.50 4.00 5.50 7.00
Ejemplo 3: Recorrido de un array. Programa C++ que lee por teclado la nota de los
alumnos de una clase y calcula la nota media del grupo. También muestra los
alumnos con notas superiores a la media.

Este programa declara un array de elementos de tipo float que


contendrá las notas de los alumnos.
Se realizan 3 recorridos sobre el array, el primero para asignar a cada
elemento las notas introducidas por teclado, el segundo para
sumarlas y el tercero para mostrar los alumnos con notas superiores
a la media.
#include <iostream>
#include <iomanip>
using namespace std;
int main ()
{
float notas[20]; //array de NUMALUM elementos tipo
float
int i = 0;
float suma = 0, media;

// Entrada de datos. Se asigna a cada elemento del


array
// la nota introducida por teclado
for (i=0; i<20; i++)
{
cout << "Alumno " << i+1 << " Nota final: ";
cin >> notas[i];
}

// Sumar todas las notas


for (i=0; i<20; i++)
suma = suma + notas[i];

// Calcular la media
media = suma / 20;

// Mostrar la media
cout << fixed << setprecision(2);
cout << endl<< endl << "Nota media del curso: " <<
media << endl;

// Mostrar los valores superiores a la media


cout << "Listado de notas superiores a la media" <<
endl;
cout << "--------------------------------------" <<
endl;
for (i=0; i<20; i++)
if (notas[i] > media)
{
cout << "Alumno numero " << setw(3) << i+1;
cout << " Nota final: " << notas[i] << endl;
}
cout << endl;
system("pause");
}