Durante el sexto captulo del curso bsico de C vimos la teora de los arrays y los registros. Hace unos das
dej una tanda de 25 ejercicios para practicar.
Realice un programa en C:
1. Que rellene un array con los 100 primeros nmeros 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 nmeros 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 nmeros 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++;
}
}
for (x=0;x<i;x++)
{
printf("%d\n",tabla[x]);
}
system("PAUSE");
return 0;
}
4. Que rellene un array con los nmeros 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 nmeros 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 nmeros por teclado, los almacene en un array y muestre la suma, resta, multiplicacin y
divisin 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 nmero\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("Multiplicacin: %d\n",mul);
printf("Divisin: %d\n",div);
system("PAUSE");
return 0;
}
7. Que lea 10 nmeros 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 nmero");
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 nmeros por teclado, 5 para un array y 5 para otro array distinto. Mostrar los 10 nmeros
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 nmero");
scanf("%d",&numeros1[i]);
}
for (i=0;i<5;i++){
printf("Escriba un nmero");
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 nmeros 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 nmero");
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 nmeros 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 nmero");
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 nmeros 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 nmeros 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 nmero");
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 nmeros 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 nmero");
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 nmeros y luego busque un nmero concreto.
#include <stdio.h>
#include <stdlib.h>
for (i=0;i<20;i++){
printf("Escriba un nmero");
scanf("%d",&vector[i]);
}
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 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 nmeros de izquierda a derecha usando un array de dos
dimensiones.
#include <stdio.h>
#include <stdlib.h>
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 nmeros 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>
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 nmeros pares, lo pinte y despus que pida una
posicin X,Y y mostrar el nmero correspondiente.
#include <stdio.h>
#include <stdlib.h>
for (x=0;x<3;x++)
{
for (y=0;y<3;y++)
{
numeros[x][y]=num;
num=num*2;
}
}
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>
for (x=0;x<3;x++)
{
for (y=0;y<3;y++)
{
numeros[x][y]=num;
num++;
}
}
system("PAUSE");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int indice,x;
char frase[50];
printf("\n\n");
system("PAUSE");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int sum=0,x;
char frase[50];
printf("\n\n");
system("PAUSE");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
printf("\n\n");
system("PAUSE");
return 0;
}
23. Que lea una cadena y la encripte sumando 3 al cdigo ASCII de cada carcter. Mostrar por pantalla.
#include <stdio.h>
#include <stdlib.h>
system("PAUSE");
return 0;
}
24. Que gestione los datos de stock de una tienda de comestibles, la informacin a recoger ser:
nombre del producto, precio, cantidad en stock. La tienda dispone de 10 productos distintos. El
programa debe ser capaz de:
#include <stdio.h>
#include <stdlib.h>
struct producto {
char nombre[50];
float precio;
int cantidad;
};
int x,opcion=1;
for (x=0;x<10;x++)
{
strcpy(productos[x].nombre,"X");
productos[x].precio=0;
productos[x].cantidad=0;
}
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);
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:
1. Buscar un alumno.
2. Modificar su nota.
#include <stdio.h>
#include <stdlib.h>
struct alumno {
char nombre[50];
float nota;
};
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);
}
Mejor respuesta: Puedes crear una funcin que reciba un array unidimensional, el cual sera una
fila de la matriz (array bidimensional) a ordenar. En el cuerpo de la funcin utilizas cualquier
algoritmo de ordenacin.
De esta manera:
int main () {
int bi[10][10]; // 10 filas, 10 columnas (10 arrays de 10 elementos)
int i;
// ...
//...
}
De esa manera, ordenas todas las filas de la matriz pero de manera independiente (una fila a la
vez).
Si solo deseas ordenar una fila, en lugar del "for" indicas el indice de la matriz en la fila a ordenar:
...
Ahora, si lo que quieres es hacerlo sin funciones, es lo mismo, unicamente que todo el cdigo va a
estar metido dentro de un ciclo general. Ejemplo
for (i=0; i<10; i++) // toda la matriz (el "i" indicara la fila)
{
for (j=0; j<9; j++) // "j" indica el elemento que se a va a ordenar
{
for (k=j+1; k<10; k++) // mtodo de la "burbuja" ("k" indica elemento a comparar)
{
if (matriz[i][j] > matriz[i][k]) { // ordenar por intercambio
tmp=matriz[i][j];
matriz[i][j]=matriz[i][k];
matriz[i][k]=tmp;
}
}
}
}
/*
a) Cargar un arreglo de 20 elementos.
b) Que lo imprima en la pantalla mas o menos as:
*los numeros blancos indican el numero de elemento, ndice o como se
llame; y los verdes son los valores en si.
c) Leer un valor x a buscar.
d) Indicar si el elemento se encontr y decir en que posicin, de lo
contrario mostrar un mensaje.
e) Usar un while o un do while para poder seguir ejecutando (algo asi
como quieres buscar otro nmero? S/N).
*/
#include <stdio.h>
for (i=0;i<20;i++)
{
x=x+2; //primero se crean
los numeros (pares) dentro de cada posicion del array
elementos[i]=x;
printf(" (%d) ", i); //las posicion se representan co (1)
para diferenciar
if (i==9) //cuando llega a la posicon 9, hago que se
muestren el contenido
{
printf("\n");
for (z=0;z<5;z++) //muestro el contenido
{
printf(" %d ", elementos[z]);
}
for (z=5;z<10;z++) //muestro el
contenido, pero dejo un espacio mas para que quede mas cuadrado todo
{
printf(" %d ", elementos[z]);
}
printf("\n");
}
//al salir del if, el primer for seguria haciendo el
trabajo de crear los numeros pares,
//ya que lo habiamos parado en la posicion del array 9
}
printf("\n");
printf("\n");
//funcion mirarvalor
int mirarvalor(int x)
{
//vamos a ver si se encuentra un valor
int i=0; //buscamos
en el array y si en alguna posicion encuentra el numero indicado,
int z=-1; //da
como retorno el valor de la posicion y si no encuentra z vale -1
for (i=0;i<20;i++)
{
if (elementos[i]==x)
{
z=i;
}
}
return z;
}
#include <conio.h>
#include <iostream>
for (i=0;i<5;i++){
cin >> array[i];
}
for (i=0;i<5;i++){
frec[array[i]]++;
}
for (rango=1;rango<=5;rango++)
{
if (frec[rango]>mas_grande){
mas_grande=frec[rango];
valor_moda=rango;
}
}
cout << "El valor moda es " << valor_moda<<endl;
getch ();
}
este otro codigo creo que lo hace mejor (no es mio, es encontrado en google)
tiene el defecto que si hay dos modas, te d como tal, la ltima.
#include<iostream>
#include<conio.h>
cin>>val;
for(int i=0;i<val;i++){
cout<<"numero";
cin>>num[i];
}
for(int a=0;a<val;a++){
cont=0;
for(b=0;b<val;b++){
if(num[a]==num[b])
{cont++;
}
if(cont>=2){
numero=num[a];
}
}
}
cout<<"la moda es = "<<numero;
return 0;
}