0% encontró este documento útil (0 votos)
456 vistas82 páginas

Programacion en C++

Este documento presenta un tutorial de programación en C++ con 16 ejercicios de programación que cubren temas como: estructuras sencillas, programas de operaciones matemáticas, condiciones, bucles, vectores, matrices y subprocesos. Explica conceptos básicos como printf, scanf, variables, tipos de datos y operadores. Los ejercicios van desde programas sencillos de entrada/salida hasta programas más complejos que resuelven ecuaciones de segundo grado y calculan áreas y capitales financieros usando condiciones if/else.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
456 vistas82 páginas

Programacion en C++

Este documento presenta un tutorial de programación en C++ con 16 ejercicios de programación que cubren temas como: estructuras sencillas, programas de operaciones matemáticas, condiciones, bucles, vectores, matrices y subprocesos. Explica conceptos básicos como printf, scanf, variables, tipos de datos y operadores. Los ejercicios van desde programas sencillos de entrada/salida hasta programas más complejos que resuelven ecuaciones de segundo grado y calculan áreas y capitales financieros usando condiciones if/else.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOC, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 82

Programación en C++

 
 
Tutorial de programación en C++ con ejercicios

a)    Estructuras Sencillas  
 
b)    Programas de operaciones matemáticas

c)     Condiciones
 
d)    Bucles
 
e)     Toma de caracteres

f)     Vectores

g)     Matrices

h)     Subprocesos

En este primer ejercicio se muestra la base de todo programa, la escritura en


pantalla.

Para ello, hay que introducir la librería adecuada con instrucciones básicas
(<stdio.h>) e indicarle al programa dónde empezar (int main()).
Recuerda que todas las instrucciones se escriben en minúsculas y acaban
en “;”.
Las funciones más simples y utilizadas son:
printf  Escritura en pantalla
scanf  Lectura de pantalla
 
 scanf(tipo, &var);

tipo: Tipo de dato a almacenar

ampersand (&) se utiliza para indicar una dirección de memoria de la variable


donde se almacenará el dato. Cuando se guardan de cadenas de caracteres, al
tratarse de un array de tipo char, el & se omite.

var: variable para almacenar el dato.

// Este ejemplo guarda un número en n.

int n;
printf("Introduce un numero: ");
scanf("%d",&n);

// Este ejemplo guarda un caracter en m.

char m;
printf("Introduce un caracter: ");
scanf("%c",&m);

// Este ejemplo guarda una cadena de caracteres (solamente una


palabra) en cad.
// Notese la ausencia de &

char cad[20];
printf("Introduce una palabra: ");
scanf("%s",cad);

printf("Introduce una palabra: ");


scanf("%10s",cad); // lee máximo 10 caracteres y le concatena el
caracter cero.

 1. Programa de inicio: Escritura en pantalla


 
#include<stdio.h>
int main(){
printf("Hola\n\n");
}
Una vez realizado el programa anterior, pasaremos a realizar ejercicios de
cálculos matemáticos. Aprenderemos a declarar valores (int = números
enteros, float = números decimales, char = caracteres) y a pedir al ordenador
que los lea mediante la instrucción scanf. El cálculo de valores se sitúa sin
instrucción.
 
2. Programa que calcule la suma de dos números
 
#include <stdio.h>
int main(){
         int X,Y,Z;
         printf("Por favor, introduzca un numero:  ");
         scanf("%d",&X);
         printf("Ahora, inserte otro:  ");
         scanf("%d",&Y);
         Z=X+Y;
         printf("\nEl resultado es %d\n",Z);
}

3. Programa que calcula longitudes de circunferencia


 
#include <stdio.h>
int main(){
         float R,sol1;
         printf("Bienvenido, calcularemos la longitud de su circunferencia.\n\n");
         printf("Lo unico que debe hacer es introducir el radio: ");
         scanf("%f",&R);
         sol1=2*3.141592*R;
         printf("\n\nEl resultado es %f\n\n",sol1);
}
 
4. Programa que calcula la media aritmética de tres números
cualesquiera.

#include <stdio.h>
int main(){
         float a,b,c,M;
  printf("Bienvenido, calcularemos la media aritmetica de tres numeros.\n\n");
         printf("Por favor, introduzca el primero: ");
         scanf("%f",&a);
         printf("Ahora, inserte el segundo de ellos: ");
         scanf("%f",&b);
         printf("Por ultimo, teclee el numero final: ");
         scanf("%f",&c);
         M=(a+b+c)/3;
         printf("\nEl resultado es %f\n\n",M);
}
 
 
 

5. Programa que calcula áreas de trapecios.


 
#include <stdio.h>
int main(){
         float bma,bme,h,A;
         printf("Bienvenido al programa para calcular areas de trapecios.\n\n");
         printf("Bien, introduzca la base mayor: ");
         scanf("%f",&bma);
         printf("Ahora, escriba la base menor: ");
         scanf("%f",&bme);
         printf("Ya solo necesito la altura: ");
         scanf("%f",&h);
         A=((bma+bme)*h)/2;
         printf("\nEl area del trapecio es %f\n\n",A);
}
Ahora pasaremos a aprender operaciones aritméticas más complejas, como la
raíz cuadrada (sqrt).  Para ello introducimos una nueva librería (<math.h>).
 
 6. Programa que calcule raíces cuadradas enteras.
 
#include <stdio.h>
#include <math.h>
int main(){
         int X,R;
         printf("Por favor, inserte un numero");
         scanf("%d",&X);
         R=sqrt(X);
         printf("\nSu raiz cuadrada es %d\n\n",R);
}
 
7. Programa que calcula el área de un triángulo (Fórmula de Herón).
 
#include <stdio.h>
#include <math.h>
int main(){
         float a,b,c,sp,R;
         printf("Bienvenido. Calcularemos el area del triangulo.\n\n");
         printf("Introduce el primer lado: ");
         scanf("%f",&a);
         printf("Ahora, inserta el segundo lado: ");
         scanf("%f",&b);
         printf("Por ultimo, escribe el tercer lado: ");
         scanf("%f",&c);
         sp=(a+b+c)/2;
         R=sqrt(sp*(sp-a)*(sp-b)*(sp-c));
         printf("\nEl area obtenida es %f\n\n",R);
         printf("Muchas gracias por utilizar este progama.\n\n");
}
 
 

8. Programa que
calcula el capital final
de un interés simple.
 
#include <stdio.h>
int main(){
         float c,I,t,F;
         printf("Bienvenido. Calcularemos el capital final de un interes
simple.\n\n");
         printf("Por favor, introduce el capital inicial: ");
         scanf("%f",&c);
         printf("Ahora, escribe el interes al que esta colocado: ");
         scanf("%f",&I);
         printf("Por ultimo, inserta el tiempo al que se deja el capital: ");
         scanf("%f",&t);
         F=c+c*(I/100)*t;
         printf("\n\nEl capital final es de %f\n\n",F);
}
  
Otro símbolo que necesitaremos a partir de ahora será el “%”, que sirve para
calcular el resto de una división. Podemos verlo en el siguiente ejemplo.
 
9. Programa que calcule el resto de cualquier división entera.
 
#include <stdio.h>
int main(){
         int D,d,R;
         printf("Hola, obtendremos el resto de cualquier division entera.\n\n");
         printf("Inserte el dividendo: ");
         scanf("%d",&D);
         printf("Bien, escriba el divisor: ");
         scanf("%d",&d);
         R=D%d;
         printf("\nEl resto de la division es %d\n\n",R);
}
 
10. Programa que calcula el precio de un objeto sin el impuesto de valor
añadido (IVA).
 
#include <stdio.h>
int main(){
         float X,IVA,R;
     printf("Bienvenido.Calcularemos el precio de un articulo sin el IVA.\n\n");
         printf("Por favor, introduzca el precio de la compra: ");
         scanf("%f",&X);
         IVA=(16*X/100);
         R=X-IVA;
         printf("\nEl precio del objeto sin IVA es %f\n\n",R);
}
 11. Programa que calcule el área de un triángulo.
 
#include <stdio.h>
int main(){
         int B,H,A;
         printf("Por favor, introduzca la base del triangulo");
         scanf("%d",&B);
         printf("Ahora, inserte la altura del mismo");
         scanf("%d",&H);
         A=B*H/2;
         printf("\nSu area es de %d\n\n",A);
}
 
12. Programa que obtenga la media geométrica de tres numeros.
 
#include <stdio.h>
#include <math.h>
int main(){
         float a,b,c,R;
  printf("Bienvenido, obtendremos la media geometrica de tres numeros.\n\n");
         printf("Por favor, introduzca el primer numero: ");
         scanf("%f",&a);
         printf("Ahora, inserte el segundo numero: ");
         scanf("%f",&b);
         printf("Por ultimo, escriba el tercer numero: ");
         scanf("%f",&c);
         R=cbrt(a*b*c);
         printf("\nEl resultado es %f\n\n",R);
}

Una de las estructuras más utilizadas en programación en C++ es el “if”. Sirve


para el ordenador distinga entre varios caminos posibles. Si hay más de uno,
se utilizará “else” para señalar el restante. Las condiciones van entre llaves.
 
Mayor > 
Menor < 
Igual ==
Distinto !=
Mayor o >=
igual
Menor o <=
igual
 
 Mejor verlo con este ejemplo:
 
13. Programa que indica qué número de los dos introducidos por el
usuario es mayor.
 
#include <stdio.h>
int main(){
         int X,Y;
         printf("Por favor, escribe un numero ");
         scanf("%d",&X);
         printf("Ahora, teclea otro ");
         scanf("%d",&Y);
         if(X>Y){
                   printf("\nEl mayor es %d\n\n",X);
         }else if(Y>X){
                   printf("\nEl mayor es %d\n\n",Y);
         }else{
                   printf("\nEstos dos numeros son iguales\n\n");
         }
}
 
 
 
 
14. Programa que escriba en pantalla un comentario con respecto a la
temperatura del día.
 
#include <stdio.h>
int main(){
         int X,Y;
         printf("Bienvenido. Introduzca la temperatura");
         scanf("%d",&X);
         if(X<15){
                   printf("\nBrrr... Que frio!\n");
         }else if(X<25){
                   printf("\nClima templado\n");
         }else{
                   printf("\nBuf!..Que calor!\n");
         }
}

15. Programa que resuelve ecuaciones de segundo grado.


 
#include <stdio.h>
#include <math.h>
int main(){
         float A,B,C,D,S,sol1,sol2;
         printf("Bienvenido, Resolveremos su ecuacion de segundo grado.\n\n");
         printf("\nPor favor, introduzca el coeficiente A: ");
         scanf("%f",&A);
         printf("\nAhora, escriba el coeficiente B: ");
         scanf("%f",&B);
         printf("\nPor ultimo, inserte el coeficiente C: ");
         scanf("%f",&C);
         D=B*B-4*A*C;
         if(D<0){
                   printf("\n\nDisculpe, no tiene solucion real\n\n");
         }else if(D==0){
                   S=-B/2*A;
                   printf("\n\nEl resultado de la ecuacion es %f\n\n",S);
         }else{
                   sol1=(-B+sqrt(D))/(2*A);
                   sol2=(-B-sqrt(D))/(2*A);
                   printf("\n\nLos resultados de la ecuacion son %f y
%f\n\n",sol1,sol2);
         }
         printf("\nGracias por utilizar este programa\n\n");
}
  

16. Programa para determinar si un número es par o impar.

#include <stdio.h>
int main() {
int Num; int Res;
printf("Programa para determinar naturaleza par o impar de un numero\n\n");
printf ("Introduzca un numero entero: ");
scanf ("%d", &Num);
Res = Num%2;
if (Res==0) {
printf ("El numero es par\n");
} else {
printf ("El numero es impar\n");
}
}

17. Programa que resuelva la ecuación cuadrática tipo ax2 + bx + c

#include <stdio.h>
#include <math.h>
int main() {
//Declaración de variables
double a, b, c, d, e;
printf("Programa para calcular ecuacion cuadratica tipo a*x^2 + b*x + c =
0\n\n");
//Obtención de datos
printf ("Introduzca valor parametro a: "); scanf ("%lf", &a);
printf ("Introduzca valor parametro b: "); scanf ("%lf", &b);
printf ("Introduzca valor parametro c: "); scanf ("%lf", &c);
//Cálculo y muestra de resultados
d = pow (b,2) - 4 * a * c; e = 2 * a;
if (d == 0) { printf ("El resultado es x1 = x2 =%lf", - b / e);
} else {
if (d > 0) {
printf ("El resultado es:\n");
printf ("x1 = %lf \n", (-b + sqrt(d)) / e);
printf ("x2 = %lf \n", (-b - sqrt(d)) / e);
} else {
printf ("El resultado es: \n");
printf ("x1 = %lf + %lf * i \n", -b / e, sqrt(-d)/e);
printf ("x2 = %lf - %lf * i \n", -b / e, sqrt(-d)/e);
}
}
return 0;
}

Un ejemplo de ejecución del programa sería el siguiente:

Programa para calcular ecuacion cuadratica tipo a*x^2 + b*x + c


=0
Introduzca valor parametro a: -3
Introduzca valor parametro b: 1
Introduzca valor parametro c: 2
El resultado es: x1 = -0.666667 x2 = 1.000000

Programa para calcular ecuacion cuadratica tipo a*x^2 + b*x + c = 0


Introduzca valor parametro a: -3
Introduzca valor parametro b: 1
Introduzca valor parametro c: 2
El resultado es: x1 = -0.666667 x2 = 1.000000

18. Programa que pida un número del 1 al 5 y diga si es primo o no.

#include <stdio.h>
#include <stdlib.h> // librería para utilizar system(“PAUSE)
int main()
{
int i;
printf("Introduzca número del 1 al 5:\n");
scanf("%d",&i);

if (i!=4) {
printf("Es primo\n\n");
}
else
{
printf("No es primo\n\n");
}
system("PAUSE");
return 0;
}

Como posiblemente ha notado, se han utilizado dos iguales para expresar la


segunda condición del anterior programa. Esto es porque se quiere lanzar una
pregunta al ordenador, lo que indica que no siempre es de ese modo. (¿Y si
D=0?) Otro ejemplo donde se ve este fenómeno con mayor facilidad:

19. Programa que simula un cajero automático con un saldo inicial de


$10.000.000 Pesos colombianos.

#include <stdio.h>
int main(){
int SI,opc;
float din,dan,S;
SI=10000000;
printf("Bienvenido a su cajero virtual.\n"); printf("Seleccione una
opcion:\n\n"); printf("1.Ingreso en cuenta.\n2.Reintegro.\n3.Ver el saldo
disponible\n0.Salir\n\nUsted ha marcado: ");
scanf("%d",&opc);
if(opc==1){
printf("\nBien, escriba el dinero que desee introducir: ");
scanf("%f.%2f",&din);
S=SI+din;
printf("\nIngreso realizado correctamente. Su saldo actual es de %.2f\n",S);
}else if(opc==2){
printf("\nAhora, teclee la cantidad de capital que desea retirar: ");
scanf("%f.%2f",&dan);
if(dan>SI){
printf("\nError. No dispone de tanto sueldo.\n");
}else{
S=SI-dan;
printf("\nReintegro realizado correctamente. Su saldo actual es de %.2f\n",S);
}
}else if(opc==3){
printf("\nSu saldo actual es de %d\n",SI);
}else if(opc==0){
printf("\nGracias por utilizar este programa.\n\n");
}else{
printf("\nDisculpe, se ha equivocado al marcar.\n\n");
}
}
  

20. Programa que indica la correspondencia de un número introducido


por el usuario con un mes del año (aconsejable realizarlo con SWITCH).
 
#include <stdio.h>
int main(){
         int m;
         printf("Hola, le diremos el mes segun el numero introducido.\n\n");
         printf("Introduzca el numero: ");
        printf("\n");
         scanf("%d",&m);
         if(m==1){
                   printf("Este numero se corresponde con el mes de Enero.\n\n");
         }else if(m==2){
                   printf("Este numero se corresponde con el mes de Febrero.\n\n");
         }else if(m==3){
                   printf("Este numero se corresponde con el mes de Marzo.\n\n");
         }else if(m==4){
                   printf("Este numero se corresponde con el mes de Abril.\n\n");
         }else if(m==5){
                   printf("Este numero se corresponde con el mes de Mayo.\n\n");
         }else if(m==6){
                   printf("Este numero se corresponde con el mes de Junio.\n\n");
         }else if(m==7){
                   printf("Este numero se corresponde con el mes de Julio.\n\n");
         }else if(m==8){
                   printf("Este numero se corresponde con el mes de Agosto.\n\n");
         }else if(m==9){
              printf("Este numero se corresponde con el mes de Septiembre.\n\n");
         }else if(m==10){
                   printf("Este numero se corresponde con el mes de Octubre.\n\n");
         }else if(m==11){
               printf("Este numero se corresponde con el mes de Noviembre.\n\n");
         }else if(m==12){
                 printf("Este numero se corresponde con el mes de Diciembre.\n\n");
         }else{
                   printf("Error, mes inexistente.\n\n");
         }
}
 
 
Muchas veces queremos realizar un programa que muestre un menú, es decir,
una serie de opciones para que nosotros decidamos a nuestra conveniencia.
¿Cómo se hace? Pues simplemente tomando una nueva variable “opción”, de
la que extraeremos con “if”.

Como han visto en el programa de la calculadora científica, el uso del “else if”
es extremadamente extenso. Es muy aconsejable realizar ese tipo de
programas con la estructura siguiente:
 
Switch(opción){
         Case 1: -------------------------;
                                              Break;
         Case2: ------------------------;
         Break;
         Default: -----------------------;
}
 
 21. Programa que muestre el horario escolar del día.
 
#include <stdio.h>
int main(){
         int x;
         printf("Bienvenido. Introduzca el numero del dia de la semana a
consultar: ");
         scanf("%d",&x);
         switch(x){
                   case
1:printf("\n\nLunes:\n\nReligion\nDibujo\nInformatica\nIngles\nLiteratura\n
Matematicas\nFisica y Quimica\n\nVamos a por la semana!\n\n");break;
                   case
2:printf("\n\nMartes:\n\nFilosofia\nDibujo\nMatematicas\nLiteratura\nEducac
ion fisica\nFisica y Quimica\n\nHoy hay una horita menos!\n\n");break;
                   case 3:printf("\n\nMiercoles:\n\nFisica y
Quimica\nDibujo\nIngles\nInformatica\nCiencias para el mundo
contemporaneo\nFilosofia\nTutoria\n\nMitad de jornada, anima la
moral!\n\n");break;
                   case
4:printf("\n\nJueves:\n\nFilosofia\nDibujo\nLiteratura\nInformatica\nIngles\n
Educacion Fisica\nMatematicas\n\nVenga, que mañana es
viernes!\n\n");break;
                   case 5:printf("\n\nViernes:\n\nCiencias para el mundo
contemporaneo\nReligion\nFisica y
Quimica\nLiteratura\nMatematicas\nInformatica\n\nYa se ha terminado lo
duro. Descansa hoy!\n\n");break;
                   case 6:printf("\n\nSabado:\n\nDeja el ordenador y disfruta del
dia!\n\n");break;
                   case 7:printf("\n\nDomingo:\n\nAprovecha el tiempo que mañana
hay que volver a empezar!\n\n");break;
                   default:printf("\n\nDisculpe, se ha equivocado al marcar.\n\n");
         }
}
  
22. Programa que pida un número del 1 al 7 y diga el día de la semana
correspondiente.

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
printf("Introduzca numero del 1 al 7:\t"); // \t tabulador – espacio
scanf("%d",&i);

switch(i){
case 1:
printf ("Lunes\n\n");
break;
case 2:
printf ("Martes\n\n");
break;
case 3:
printf ("Miercoles\n\n");
break;
case 4:
printf ("Jueves\n\n");
break;
case 5:
printf ("Viernes\n\n");
break;
case 6:
printf ("Sabado\n\n");
break;
case 7:
printf ("Domingo\n\n");
break;
default:
printf ("Opción no valida\n\n");
break;
}
system("PAUSE");
return 0;
}

23. Programa que pida una letra y detecte si es una vocal

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

int main(void)
{
char c;
printf("Introduzca un carácter:\t");
scanf("%c",&c);
switch (c)
{
case 'a':
printf ("Es vocal\n\n");
break;
case 'e':
printf ("Es vocal\n\n");
break;
case 'i':
printf ("Es vocal\n\n");
break;
case 'o':
printf ("Es vocal\n\n");
break;
case 'u':
printf ("Es vocal\n\n");
break;
default:
printf ("No es vocal\n\n");
break;
}
system("PAUSE");
return 0;
}

24. Programa que muestre un menú donde las opciones sean


“Equilátero”, “Isósceles” y “Escaleno”, pida una opción y calcule el
perímetro del triángulo seleccionado.

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int lado, base, opcion;
printf("Introduzca lado del triangulo:\t");
scanf("%d",&lado);
printf("Introduzca base del triangulo:\t");
scanf("%d",&base);
printf ("\n") ;
printf("Seleccione opcion:\n\n");
printf("1 - Equilatero\n");
printf("2 - Isosceles\n");
printf("3 - Escaleno\n");
scanf("%d",&opcion);
switch (opcion)
{
case 1:
printf("El perímetro es:%d\n",3*lado);
break;
case 2:
printf("El perímetro es:%d\n",(2*lado)+base);
break;
case 3:
printf("El perímetro es:%d\n",lado + lado + lado);
break;
default:
printf("Opcion no valida.");
break;
}
system("PAUSE");
return 0;
}

En determinadas ocasiones nos será de mucha utilidad el poder borrar lo


escrito en pantalla. Para ello debemos utilizar una nueva librería (<stdlib>)
que contenga la instrucción para que se produzca el borrado. (system(“cls”)).
  
25. Programa que borre la pantalla al pulsar “Intro”.
 
#include <stdio.h>
#include <stdlib.h>
int main(){
    char Espera;
    printf("Programa de prueba de borrado de pantalla");
    printf("\nPulsa intro");
    scanf("%c",&Espera);
    system("cls");
    printf("Ha funcionado!, Hasta pronto.\n");
}
 
Una vez visto cómo se realiza un borrado de pantalla, pasaremos a ver los
bucles en C++, que realizan tareas repetitivas.  El primero de ellos es el bucle
“for”. Lo usaremos siempre que conozcamos el número de iteraciones (Desde
– hasta).
 
Será necesario el uso de un contador (i).
 26. Programa que muestra los veinte primeros números naturales.
 
#include <stdio.h>
int main(){
         int i=21;
         const int tope=20;
         for(i=0;i<=20;i=i+1){
                   printf("%d\n",i);
         }
         printf("\nHasta pronto");
}
 
 

27. Programa que muestra los números pares hasta 30.


 
#include <stdio.h>
int main(){
         int i=31;
         const int tope=30;
         for(i=0;i<=30;i=i+2){
                   printf("%d\n",i);
         }
         printf("\nHasta pronto");
}

28. Programa que muestre los múltiplos de siete (hasta 123).


 
#include <stdio.h>
int main(){
         int i=124;
         const int tope=123;
         for(i=0;i<=123;i=i+7){
         printf("%d\n",i);
         }
         printf("\n,Hasta pronto");
}
  
29. Programa que muestre una cuenta atrás desde diez hasta cero.
 
#include <stdio.h>
int main(){
         int i=10;
         const int tope=0;
         for(i=10;i>=0;i=i-1){
                   printf("%d\n",i);
         }
         printf("\nHasta pronto!\n");
}
 
30. Programa que muestre un menú de múltiplos (De 2,3,5,7,11).
 
#include <stdio.h>
int main(){
         int x,i,y,t,r,s;
      printf("\nBienvenido, seleccione la opcion que desee mostrar.\n");
         printf("1.Multiplos de 2\n2.Multiplos de 3\n3.Multiplos de
5\n4.Multiplos de 7\n5.Multiplos de 11\n\nNota:Exclusivamente mostrara
hasta 100\n\n");
         printf("Su opcion es:");
         scanf("%d",&x);
         if(x==1){
                   int i=100;
         const int tope=100;
         for(i=0;i<=100;i=i+2){
         printf("%d\n",i);
         }}else if(x==2){
                   int y=100;
         const int tope=100;
         for(y=0;y<=100;y=y+3){
         printf("%d\n",y);
         }}else if(x==3){
                   int t=100;
         const int tope=100;
         for(t=0;t<=100;t=t+5){
         printf("%d\n",t);
         }}else if(x==4){
                   int s=100;
         const int tope=100;
         for(s=0;s<=100;s=s+7){
         printf("%d\n",s);
         }}else if(x==5){
                   int r=100;
         const int tope=100;
         for(r=0;r<=100;r=r+11){
         printf("%d\n",r);
         }}else{
                   printf("Se ha equivocado.\n\n");
         }
}
 

31. Programa que muestre los números impares que haya del 1 al 100

#include <stdio.h>
#include <stdlib.h>
int main()
{
int x;
for (x=1;x<=100;x++)
{
if (x%2!=0)
{
printf("%d\n",x);
}
}
system("PAUSE");
return 0;
}
32. Programa que imprima la suma de todos los números pares que van
del 1 al 100 y diga cuántos hay.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int x,sum,cont;
sum=0;
cont=0;
for (x=1;x<=100;x++)
{
if (x%2==0)
{
sum=sum+x;
cont=cont+1;
}
}
printf("Hay %d números\n",cont);
printf("La suma es: %d\n",sum);
system("PAUSE");
return 0;
}

33. Programa que pida dos números y muestre todos los números que van
desde el primero al segundo. Se debe controlar que los valores son
correctos.

#include <stdio.h>
#include <stdlib.h>
int main()
{
int num1, num2,x;
printf("Introduzca primer numero: \t");
scanf("%d",&num1);
printf("Introduzca segundo numero: \t");
scanf("%d",&num2);
if (num1>num2)
{
printf("Los valores introducidos no son correctos \n");
}
else
{
for (x=num1;x<=num2;x++)
{
printf("%d\n",x);
}
}
system("PAUSE");
return 0;
}

34. Programa que escriba las tablas de multiplicar del 0 al 10.

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int x,y;
for (x=0;x<=10;x++)
{
for (y=1;y<=10;y++)
{
printf("%d X %d = %d \n",x,y,x*y);
}
printf("\n");
}
printf("\n");
system("PAUSE");
return 0;
}

35. Programa que muestre la tabla de multiplicar de un número


cualquiera.

#include <stdlib.h>
int main(void)
{
int x,num;
printf("Introduce numero:\t");
scanf("%d",&num);
printf("\n");
for (x=1;x<=10;x++)
{
printf("%d X %d = %d \n",num,x,num*x);
}
printf("\n");
system("PAUSE");
return 0;
}

36. Programa que calcule “x” términos de la sucesión de Fibonacci.


  
#include <stdio.h>
#include <stdlib.h>
int main(){
         printf("Bienvenido al programa para calcular la progresión de
Fibonacci.\n\n");
         int veces, primer=0,segun=1,proximo,r;
         char borrado;
         printf("Introduzca el numero de terminos: ");
    scanf("%d",&veces);
         scanf("%c",&borrado);
         system("cls");
         printf("He aqui la sucesion de %d terminos: \n",veces);
         for(int i=0;i<=veces;i++){
           r=primer+segun;
                      primer=segun;
                      segun=r;
                printf("\n\t\t\t\t%d",r);
       }
            printf("\n\nGracias por utilizar este programa.\n\n");
}

37. Programa que calcule el factorial de un número.


 
#include <stdio.h>
int main(){
         int i,num,fact=1;
         printf("Bienvenido al programa para calcular factoriales.\n");
                   printf("\nEscriba un numero entero: ");
                   scanf("%d",&num);
                   for(i=num;i>1; i--){
                    fact=fact*i;
                   }
                   printf("\nEl factorial de %d es %d\n",num,fact);
}
38. Programa que genera apuestas de fútbol.
  
#include <stdlib.h>
#include <time.h>
int main(){
         int a;
         srand((unsigned)time(NULL));
         printf("Bienvenido, aquí tiene su apuesta de futbol: ");
         printf("\n\n");
         for(int i=1; i<=15; i++){
                   a=rand()%(3);
                   if(a==1){
                            printf("\t\t\t\t%d - 1\n",i);
                   }else if(a==2){
                            printf("\t\t\t\t%d - 2\n",i);
                   }else{
                            printf("\t\t\t\t%d - X\n",i);
                   }
         }
}
 
39. Programa que simule el lanzamiento de una moneda las veces que el
usuario desee, posteriormente hará un recuento de las veces que ha salido
tanto cara como cruz.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
         int x,veces,cara=0,cruz=0;
         srand((unsigned)time(NULL));
         printf("Pruebe a lanzar la moneda.\n\n");
         printf("Cuantas veces?: ");
         scanf("%d",&veces);
         for(int i=1;i<=veces;i++){
                   x=rand()%(2);
                   if(x==1){
                            printf("\nCara\n\n");
                            cara++;
                   }else{
                            printf("\nCruz\n\n");
                            cruz++;
                   }
         }
         printf("\n\tRecuento\n\n");
         printf("La cara ha salido %d veces.\n",cara);
         printf("La cruz ha salido %d veces.\n\n",cruz);
         printf("Gracias por utilizar este programa.\n\n");
}
 

Cuando
no

deseemos que el ordenador vaya tan rápido, hay que meterle instrucciones
inútiles que no se pinten en pantalla (Bucle de retardo), como por ejemplo una
cuenta atrás del 159999999 al 0.

40. Programa que realice una cuenta atrás con un bucle de retardo.
 
#include <stdio.h>
int main(){
         int i=10;
         const int tope=1;
         for(i=10;i>=1;i=i-1){
                   printf("%d\n",i);
                   int k=159999999;
             for(k=159999999;k>=1;k=k-1);
         }
         printf("\nPUM!\n");
}
En los bucles “while” y “do while” no es necesario conocer el número de
iteraciones.

While  Iteraciones >= 0.

Do while  Iteraciones >=1.

41. Programa que diga si un número es par o no. Finaliza al pulsar “0”.
 
#include <stdio.h>
int main(){
         int num;
 printf("Por favor, escribe el numero que quieras. Te diremos si es par o
impar: ");
         while (num!=0){
                   scanf("%d",&num);
                   if(num%2==0){
                            printf("\n\nEste numero es par.\n");
                   }else{
                            printf("\n\nEste numero es impar.\n");
                   }
         }
         printf("\nHasta luego.\n\n");
}
Aquí tenemos un extenso programa como ejemplo para demostrar la sencillez
y utilidad del bucle “do while”.
 
42. Programa que simule un calculadora científica de 25 funciones.
 
#include <stdio.h>
#include <math.h>
int main(){
         float
x,y,s,d,p,c,sr,rq,res,ros,cb,ch,co,cop,se,sep,ta,tap,cub,cubp,in,inp,lo,lop,ln,lnp;
         int opc;
         printf("Bienvenido a la calculadora de 25 funciones.\n\n");
         do{
             printf("Por favor, introduzca un numero (0 para salir): ");
             scanf("%f",&x);
             printf("\nAhora, inserte otro: ");
             scanf("%f",&y);
             printf("\n\nBien. Ya puede seleccionar una
opcion:\n\n1.Sumar\n2.Restar\n3.Multiplicar\n4.Dividir\n5.Indicar el
mayor\n6.Raiz cuadrada del primer numero\n7.Raiz cuadrada del segundo
numero\n8.Cuadrado del primer numero\n9.Cuadrado del segundo
numero\n10.Raiz cubica del primer numero\n11.Raiz cubica del segundo
numero\n12.Coseno del primer numero\n13.Coseno del segundo
numero\n14.Seno del primer numero\n15.Seno del segundo
numero\n16.Tangente del primer numero\n");
                   printf("17.Tangente del segundo numero\n18.Cubo del primer
numero\n19.Cubo del segundo numero\n20.Inversa del primer
numero\n21.Inversa del segundo numero\n22.Logaritmo decimal del primer
numero\n23.Logaritmo decimal del segundo numero\n24.Logaritmo neperiano
del primer numero\n25.Logaritmo neperiano del segundo
numero\n0.Salir\n\nUsted ha marcado: ");
                   scanf("%d",&opc);
                   if(opc==1){
                            s=x+y;
                            printf("La suma de ambos numeros es %f\n\n",s);
                   }else if(opc==2){
                            d=x-y;
                            printf("La diferencia de ambos numeros es %f\n\n",d);
                   }else if(opc==3){
                            p=x*y;
                            printf("El producto de ambos numeros es %f\n\n",p);
                   }else if(opc==4){
                            c=x/y;
                      printf("El cociente de la razon de ambos numeros es %f\n\n",c);
                   }else if(opc==5){
                            if(x>y){
                                      printf("El mayor es %f\n\n",x);
                            }else if(y>x){
                                      printf("El mayor es %f\n\n",y);
                            }else{
                                      printf("Disculpe, estos dos numeros son iguales.\n\n");
                            }
                   }else if(opc==6){
                            rq=sqrt(x);
                            printf("La raiz cuadrada del primer numero es %f\n\n",rq);
                   }else if(opc==7){
                            sr=sqrt(y);
                            printf("La raiz cuadrada del segundo numero es %f\n\n",sr);
                   }else if(opc==8){
                            res=x*x;
                            printf("El cuadrado del primer numero es %f\n\n",res);
                   }else if(opc==9){
                            ros=y*y;
                            printf("El cuadrado del segundo numero es %f\n\n",ros);
                   }else if(opc==10){
                            cb=cbrt(x);
                            printf("La raiz cubica del primer numero es %f\n\n",cb);
                   }else if(opc==11){
                            ch=cbrt(y);
                            printf("La raiz cubica del segundo numero es %f\n\n",ch);
                   }else if(opc==12){
                            co=cos(x);
                            printf("El coseno del primer numero es %f\n\n",co);
                   }else if(opc==13){
                            cop=cos(y);
                            printf("El coseno del segundo numero es %f\n\n",cop);
                   }else if(opc==14){
                            se=sin(x);
                            printf("El seno del primer numero es %f\n\n",se);
                   }else if(opc==15){
                            sep=sin(y);
                            printf("El seno del segundo numero es %f\n\n",sep);
                   }else if(opc==16){
                            ta=tan(x);
                            printf("La tangente del primer numero es %f\n\n",ta);
                   }else if(opc==17){
                            tap=tan(y);
                            printf("La tangente del segundo numero es %f\n\n",tap);
                   }else if(opc==18){
                            cub=x*x*x;
                            printf("El cubo del primer numero es %f\n\n",cub);
                   }else if(opc==19){
                            cubp=y*y*y;
                            printf("El cubo del segundo numero es %f\n\n",cubp);
                   }else if(opc==20){
                            in=1/x;
                            printf("La inversa del primer numero es %f\n\n",in);
                   }else if(opc==21){
                            inp=1/y;
                            printf("La inversa del segundo numero es %f\n\n",inp);
                   }else if(opc==22){
                            lo=log10(x);
                        printf("El logaritmo decimal del primer numero es %f\n\n",lo);
                   }else if(opc==23){
                            lop=log10(y);
                   printf("El logaritmo decimal del segundo numero es %f\n\n",lop);
                   }else if(opc==24){
                            ln=log(x);
                     printf("El logaritmo neperiano del primer numero es %f\n\n",ln);
                   }else if(opc==25){
                            lnp=log(y);
                printf("El logaritmo neperiano del segundo numero es %f\n\n",lnp);
                   }else if(opc==0){
                            printf("Gracias por utilizar este programa.\n\n");
             }else{
                            printf("Disculpe, se ha equivocado al marcar.\n\n");
             }
         }while(x!=0);
}
 
43. Programa que simule un calculadora científica de 25 funciones con
while.

#include <stdio.h>
#include <math.h>
int main(){
float
x,y,s,d,p,c,sr,rq,res,ros,cb,ch,co,cop,se,sep,ta,tap,cub,cubp,in,inp,lo,lop,ln,lnp;
int opc;
printf("Bienvenido a la calculadora de 25 funciones.\n\n");
do{
printf("Por favor, introduzca un numero (0 para salir): ");
scanf("%f",&x);
printf("\nAhora, inserte otro: ");
scanf("%f",&y);
printf("\n\nBien. Ya puede seleccionar una
opcion:\n\n1.Sumar\n2.Restar\n3.Multiplicar\n4.Dividir\n5.Indicar el
mayor\n6.Raiz cuadrada del primer numero\n7.Raiz cuadrada del segundo
numero\n8.Cuadrado del primer numero\n9.Cuadrado del segundo
numero\n10.Raiz cubica del primer numero\n11.Raiz cubica del segundo
numero\n12.Coseno del primer numero\n13.Coseno del segundo
numero\n14.Seno del primer numero\n15.Seno del segundo
numero\n16.Tangente del primer numero\n");
printf("17.Tangente del segundo numero\n18.Cubo del primer
numero\n19.Cubo del segundo numero\n20.Inversa del primer
numero\n21.Inversa del segundo numero\n22.Logaritmo decimal del primer
numero\n23.Logaritmo decimal del segundo numero\n24.Logaritmo neperiano
del primer numero\n25.Logaritmo neperiano del segundo
numero\n0.Salir\n\nUsted ha marcado: ");
scanf("%d",&opc);
if(opc==1){
s=x+y;
printf("La suma de ambos numeros es %f\n\n",s);
}else if(opc==2){
d=x-y;
printf("La diferencia de ambos numeros es %f\n\n",d);
}else if(opc==3){
p=x*y;
printf("El producto de ambos numeros es %f\n\n",p);
}else if(opc==4){
c=x/y;
printf("El cociente de la razon de ambos numeros es %f\n\n",c);
}else if(opc==5){
if(x>y){
printf("El mayor es %f\n\n",x);
}else if(y>x){
printf("El mayor es %f\n\n",y);
}else{
printf("Disculpe, estos dos numeros son iguales.\n\n");
}
}else if(opc==6){
rq=sqrt(x);
printf("La raiz cuadrada del primer numero es %f\n\n",rq);
}else if(opc==7){
sr=sqrt(y);
printf("La raiz cuadrada del segundo numero es %f\n\n",sr);
}else if(opc==8){
res=x*x;
printf("El cuadrado del primer numero es %f\n\n",res);
}else if(opc==9){
ros=y*y;
printf("El cuadrado del segundo numero es %f\n\n",ros);
}else if(opc==10){
cb=cbrt(x);
printf("La raiz cubica del primer numero es %f\n\n",cb);
}else if(opc==11){
ch=cbrt(y);
printf("La raiz cubica del segundo numero es %f\n\n",ch);
}else if(opc==12){
co=cos(x);
printf("El coseno del primer numero es %f\n\n",co);
}else if(opc==13){
cop=cos(y);
printf("El coseno del segundo numero es %f\n\n",cop);
}else if(opc==14){
se=sin(x);
printf("El seno del primer numero es %f\n\n",se);
}else if(opc==15){
sep=sin(y);
printf("El seno del segundo numero es %f\n\n",sep);
}else if(opc==16){
ta=tan(x);
printf("La tangente del primer numero es %f\n\n",ta);
}else if(opc==17){
tap=tan(y);
printf("La tangente del segundo numero es %f\n\n",tap);
}else if(opc==18){
cub=x*x*x;
printf("El cubo del primer numero es %f\n\n",cub);
}else if(opc==19){
cubp=y*y*y;
printf("El cubo del segundo numero es %f\n\n",cubp);
}else if(opc==20){
in=1/x;
printf("La inversa del primer numero es %f\n\n",in);
}else if(opc==21){
inp=1/y;
printf("La inversa del segundo numero es %f\n\n",inp);
}else if(opc==22){
lo=log10(x);
printf("El logaritmo decimal del primer numero es %f\n\n",lo);
}else if(opc==23){
lop=log10(y);
printf("El logaritmo decimal del segundo numero es %f\n\n",lop);
}else if(opc==24){
ln=log(x);
printf("El logaritmo neperiano del primer numero es %f\n\n",ln);
}else if(opc==25){
lnp=log(y);
printf("El logaritmo neperiano del segundo numero es %f\n\n",lnp);
}else if(opc==0){
printf("Gracias por utilizar este programa.\n\n");
}else{
printf("Disculpe, se ha equivocado al marcar.\n\n");
}
}while(x!=0);
}
44. Programa que muestre los divisores de un número introducido por el
usuario.

#include <stdio.h>
int main(){
         int num;
         printf("Bienvenido al programa para calcular los divisores de un
numero.\n\n");
         while(num!=0){
                   printf("Introduzca un numero: ");
                   scanf("%d",&num);
                   printf("\n\nSus divisores son:\n");
                   for(int i=1; i<=num; i++){
                            if(num%i==0){
                                      printf("\n\t\t\t\t\t%d\t\n",i);
                            }
                   }
         printf("\n");
         }
         printf("\nGracias por utilizar este programa.\n\n");
}
 

45. Programa que calcule la suma o el producto de los números


comprendidos entre los límites marcados por el usuario.
  
#include <stdio.h>
int main(){
         int sup,inf, opc;
         double suma,prod;
         printf("Bienvenido al programa de calculo con limites.\n\n");
         do{
            suma=0;
            prod=1;
            printf("Introduzca el limite superior: ");
            scanf("%d",&sup);
            printf("\nAhora, escriba el limite inferior: ");
            scanf("%d",&inf);
            printf("\n\nSeleccione una opcion:\n\n1.Suma\n2.Producto\n\nTeclee
su eleccion: ");
            scanf("%d",&opc);
            switch (opc){
                      case 1:
                               for(int i=inf;i<=sup;i++){
                                         suma=suma+i;
                               }
                               printf("\n\nEl resultado es %f\n\n",suma);
                               break;
                      case         2:
                               for(int i=inf;i<=sup;i++){
                                         prod=prod*i;
                                         printf("%f",prod);
                               }
                               printf("\nEl resultado es %f\n\n",prod);
                               break;
                      default:printf("\nNo es un valor valido.\n\n");
                   }
         }while(sup!=0);
         printf("\n\nGracias por utilizar este programa. Le esperamos
pronto.\n\n");
}
 
 

 46.

Programa que demuestre la validez de la conjetura de Collatz.


  
#include <stdio.h>
int main(){
         int n;
         printf("Bienvenido al programa demostracion de la conjetura de
Collatz.\n\n");
         printf("Inserte un numero: ");
         scanf("%d",&n);
         printf("\n");
         while(n!=1){
            if (n%2==0) {
               printf("%d\t",(n/=2));
           }else{
               n=(3*n)+1;
                               printf("%d\t",n);
                      }
         }
         printf("\n");
}
 
Ahora vamos a realizar un programa con números aleatorios. Para ello
debemos utilizar el reloj del ordenador (No se repitan los mismos valores una
y otra vez), con la consiguiente aparición de una nueva librería (<time>).
 
srand((unsigned)time(NULL))
 
El problema es que el ordenador puede inventar números aleatorios desde uno
hasta dos elevado a quince. Es muy útil saber poner un límite.
 
Número aleatorio=rand()%(Tope+1);
 
47. Programa que invente un número para que lo adivine el usuario,
colocando un contador de intentos.
 
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
    int x,num,contador=0;
    srand((unsigned)time(NULL));
         x=rand()%(101);
    printf("Intenta adivinar el numero que he pensado entre 0 y 100.");
         int bandera=0;
         while (bandera==0){
                   printf("\n\nIntroduce numero: ");
                   scanf("%d",&num);
                   contador++;
                   if(num>x){
                            printf("\nMenor");
                   }else if(num<x){
                            printf("\nMayor");
             }else{
                            printf("\n\nEnhorabuena! Lo has adivinado en %d
intentos.\n\n",contador);
                            bandera=1;
                   }
         }
}
Una vez visto ejemplos de bucles, pasemos a explicar la toma de caracteres
(getch). Para ello hay que introducir una nueva librería (<conio>), prototipo
necesario para la instrucción
  
48. Programa de escritura en pantalla. Finaliza al pulsar la tecla “-“.
 
#include <stdio.h>
#include <conio.h>
int main(){
         char c;
         while (c!='-'){
                   c=getch();
                   printf("%c",c);
         }
}
  
49. Programa de escritura en pantalla con función de poder borrar lo
escrito hasta el momento.
 
#include <stdio.h>
#include <conio.h> // esta libreria la usamos para system("cls");
#include <stdlib.h>
int main(){
         char c;
         char Espera;
         printf("Bienvenido al programa de escritura en C++.\n\nSi pulsa + y
posteriormente teclea Enter, se borrara todo lo escrito.\nSi pulsa -, dara por
concluida su sesion.\n\n");
         while (c!='-'){
                   c=getch();
                   printf("%c",c);
                   if(c=='+'){
                            scanf("%c",&Espera);
            system("cls");
                 }
    }
}
 
Otra estructura muy práctica es el uso de || (ctrl. + alt + 1).  Indica unión. Lo
único que hay que recordar es que no soporta más de una separación, es decir:
  
(num=x)||(num=y)  Bien
 
(num=x)||(num=y)||(num=z)  Mal
 
 
Luego habrá que hacer uso frecuente del paréntesis, como por ejemplo:
 
50. Programa que genere manos de mus

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
         int x,y,z,o,opc;
         do{
                   printf("Desea una mano de mus?:\n\n");
                   printf("1.Si\n2.No\n0.Salir\n");
                   printf("\nUsted ha introducido: ");
                   scanf("%d",&opc);
                   if(opc==1){
                            srand((unsigned)time(NULL));
                            do{
                                      x=rand()%(13);
                            }while(((x==8)||(x==9))||(x==0));
                            do{
                                      y=rand()%(13);
                            }while(((y==8)||(y==9))||(y==0));
                            do{
                                      z=rand()%(13);
                            }while(((z==8)||(z==9))||(z==0));
                            do{
                                      o=rand()%(13);
                            }while(((o==8)||(o==9))||(o==0));
                            printf("\n\n%d\t\t%d\t\t%d\t\t%d\t\t",x,y,z,o);
                            printf("\n\n");
                   }
                   else if(opc==2){
                            printf("\n\nMas tarde entonces.\n\n");
                   }else{
                            printf("\nHasta pronto.\n\n");
                   }
         }while(opc!=0);
}
 

51. Programa que indique si un número es o no primo.


 
#include <stdio.h>
int main(){
int divisor = 1, divisores = 0, num = 0;
printf("Introduzca un numero: ");
scanf("%d",&num);
do{
if(num % divisor == 0){
divisores++;
}
divisor++;
}while(divisor <= num);
if(divisores == 2){
printf("\nEl numero es Primo\n",num);
}else{
printf("\nEl numero no es Primo\n",num);
}
return 0;
}

 52. Programa que calcula diagonales de cuadrados.


 
#include <stdio.h>
#include <math.h>
int main(){
         float l,d;
         printf("Bienvenido al programa que calcula areas de cuadrados.\n");
         do{
                   printf("\nIntroduce el lado: ");
                   scanf("%f",&l);
                   d=sqrt(l*l+l*l);
                   printf("\nLa diagonal de este cuadrado es %f\n",d);
         }while(l!=0);
}
 
53. Programa que pregunte un número para contestar su
correspondencia en código ASCII. Incluye una opción para ver el
abecedario (desde el 97 hasta el 122).

#include<stdio.h>
int main(){
int i,num;
printf("Bienvenido al programa, pulse 256 para ver el abecedario y 0 para
salir.\n\n");
do{
         printf("Introduzca  un numero del 1 al 255: ");
         scanf("%d",&num);
         if(num==256){
                            for(i=97;i<=122;i++){
        printf("\nEl numero %d es el caracter: %c \t\n\n",i,i);
                   }
    }else{
                   for(i=1;i<=255;i++);
                   i=num;
         printf("\nEl numero %d es, en codigo ASCII: %c\n\n",num,i);
         }
         }while(num!=0);
}
 

54.

Programa que cuente el número de vocales de un texto escrito por el


usuario.
 
#include <stdio.h>
#include <conio.h>
int main(){
int bandera=0,a=0,e=0,i=0,o=0,u=0;
char c;
printf("Introduzca caracteres hasta pulsar el guion:\n\n");
while(bandera==0){
         c=getche();
         if(c=='a'){
                   a++;
         }else if(c=='e'){
                   e++;
         }else if(c=='i'){
                   i++;
         }else if(c=='o'){
         o++;
         }else if(c=='u'){
         u++;
         }else if(c=='-'){
         bandera=1;
         }else{
                   bandera=0;
         }
         }
         printf("\n\n\t\t\tRecuento de vocales\n");
         printf("\nLa a se ha repetido %d veces \n",a);
         printf("\nLa e se ha repetido %d veces \n",e);
         printf("\nLa i se ha repetido %d veces \n",i);
         printf("\nLa o se ha repetido %d veces \n",o);
         printf("\nLa u se ha repetido %d veces \n",u);
    printf("\n\nGracias por utilizar este programa.\n\n");
}
 

55. Programa que haga un menú del tipo “desea salir (S/N)” y ell
programa no termine hasta que el usuario teclee “S”.

int num, num2;


printf("Introduce numero: ");
scanf("%d",&num);
num2=num;
while (num2!=1){
num2=num2-1;
num=num*num2;
}
printf("El factorial es: %d \n", num);
system("PAUSE");
return 0;
}
ARRAYS
Un array es un identificador que referencia un conjunto de datos del mismo
tipo. Imagina un tipo de dato int; podremos crear un conjunto de datos de ese
tipo y utilizar uno u otro con sólo cambiar el índice que lo referencia. El índice
será un valor entero y positivo. En C los arrays comienzan por la posición 0.
Cada posición de almacenamiento en un arreglo es llamada un elemento del
arreglo.

Crear un arreglo

Para declarar o crear un arreglo utilizaremos la siguiente forma:


 Escribe el tipo de dato que almacenará el arreglo
 Escribe el nombre del arreglo
 Entre corchetes, escribe la cantidad de elementos de ese tipo que se
almacenarán

Por ejemplo, para crear un arreglo que almacene las calificaciones de un grupo
de 10 estudiantes, podemos escribir:

//Crear un arreglo
float grupo[10];
int i;

Hemos declarado también una variable i, porque para manejar arreglos


utilizaremos ciclos, y se necesita la variable i como contadora.

Asignar un mismo valor a todo el arreglo

Por lo general es más práctico asignar valores al arreglo utilizando un ciclo


for. Esto es útil si deseamos poner todo el arreglo en ceros o en algún otro
valor inicial.

Por ejemplo: para asignar un cero a cada ubicación del arreglo, podemos
escribir un ciclo que vaya desde la primera hasta la última posición del
arreglo, y dentro del ciclo escribir una instrucción que asigne el valor al
arreglo.

// Poner todas las ubicaciones en cero


for (i=0; i<=9; i++){
     grupo[i] = 0;
}
Aquí consideramos que el arreglo se llama grupo y que tiene capacidad para
10 elementos. Entonces el primer elemento está en la ubicación 0 y el último
elemento en la ubicación 9. Cuando la instrucción dice grupo[i] , se toma
como valor para i, 0,1,2,3,4,5,6,7,8,9.

Guardar en el arreglo los valores que el usuario introduce

Hasta ahora hemos explicado cómo asignar valores al arreglo. Ahora veamos
cómo introducir valores que se hayan tecleado.

En el siguiente ejemplo se muestra el mensaje “Escriba el valor 0”. El usuario


tecleará el valor y éste se guardará en la ubicación 0. Pasará lo mismo con las
siguientes ubicaciones del arreglo.

//Leer datos y guardarlos en el arreglo


for(i=0; i<=9; i++){
printf("\nEscriba el valor %d", i);
scanf("%f", &grupo[i]);
}
Se utiliza %f  porque previamente el arreglo había sido declarado como float.
Mostrar todo el contenido de un arreglo

Vamos a mostrar el contenido de todo el arreglo, un valor en su propia línea.

Para esto utilizaremos de nuevo un ciclo for, imprimiendo dos datos: la


ubicación dentro del arreglo y el valor del dato.

// Sumar todos los datos de un arreglo


float suma =0;
for(i=0; i<10; i++){
suma+=grupo[i];
}
float media = suma / 10;
printf("La media es %.2f", media);
La instrucción suma+=grupo[i] implica que el valor presente de suma  se
verá incrementado por el valor de grupo en la posición i, donde i toma valores
desde 0 hasta 9.

Fuera del ciclo, se utiliza el valor de suma para calcular el promedio.

Obtener el valor máximo y mínimo de un arreglo

Podemos utilizar instrucciones condicionales utilizando los valores de un


arreglo. Por ejemplo, para obtener el valor máximo del arreglo hacemos lo
siguiente:

 Guardamos el valor de la primera celda


 Recorremos todo el arreglo utilizando un ciclo for
 Comparamos -usando un if– si el valor de la posición actual del arreglo
es mayor que el valor guardado. Si así fuese, guardamos el valor actual.
//Obtener el valor máximo de un arreglo
float max=grupo[0];
for(i=0; i<10; i++){
if (grupo[i] > max){
max=grupo[i];
}
}
printf("El valor máximo es %.2f", max);
Para obtener el valor más pequeño se sigue un procedimiento similar, sólo que
en vez de comparar si es mayor, comparamos si es menor.

float min=grupo[0];
for(i=0; i<10; i++){
if (grupo[i] < min){
min=grupo[i];
}
}
printf("El valor minimo es %.2f", min);

Ejemplo de uso de arreglos: Calcular la desviación estándar de un conjunto de


números.
El cálculo de la desviación estándar es un ejemplo del uso de arreglos. Se
necesita acceder a los datos 2 veces: la primera para obtener la media. La
segunda para obtener la suma de los cuadrados de las diferencias.

La fórmula para calcular la desviación estándar de un conjunto de números es:

S=\sqrt{\frac{\sum\limits_{i=1}^n(Xi-\overline{X})^2}{n}}S=ni=1∑n
(Xi−X)2

En uno de los ejemplos anteriores hemos visto cómo calcular la media.

Teniendo ese dato listo, lo siguiente es crear un for que recorra los diez
elementos del arreglo. Guardará la diferencia entre cada dato grupo[i]  y su
media (media). Esa diferencia se eleva al cuadrado. Y en una variable
acumuladora llamada total se van guardando esos cuadrados.

Después de cerrar ese ciclo, dividimos el total entre 10 (el número de


elementos). Y a ese resultado se le calcula la raíz cuadrada.

El código que realiza esto es el siguiente:

// Ejemplo: obtener la desviación estándar


float diferencia, cuadrado, total, varianza, devest;
 
for (i=0; i<10; i++){
diferencia = grupo[i]-media;
cuadrado = diferencia * diferencia;
total+=cuadrado;
}
varianza = total/10;
devest = sqrt(varianza);
printf("La desviacion estándar es: %.4f", devest);

Código completo de todos los ejemplos anteriormente vistos ahora en un solo


programa:

#include "stdio.h"
#include "stdlib.h"
#include "math.h"
 
int main(){

//Crear un arreglo
float grupo[10];
int i;
 
//Asignar valores directamente a cada ubicación
grupo[0] = 0;
grupo[1] = 0;
grupo[2] = 0;
 
 
// Poner todas las ubicaciones en cero
for (i=0; i<10; i++){
grupo[i] = 0;
  }

//float personas[] = {70,80,100};


 
// Mostrar el contenido de cada ubicación
for (i=0; i<10; i++){
  printf("En posicion %d el valor es %f\n", i, grupo[i]);
}
  grupo[0] = 70;
grupo[1] = 90;
grupo[2] = 100;
  for (i=0; i<10; i++){
 printf("En posicion %d el valor es %f\n", i, grupo[i]);
}
 
//Leer datos y guardarlos en el arreglo
for(i=0; i<10; i++){
printf("\nEscriba el valor %d", i);
scanf("%f", &grupo[i]);
  }
 
system("cls");
 
for (i=0; i<10; i++){
  printf("En posicion %d el valor es %f\n", i, grupo[i]);
}
 
// Sumar todos los datos de un arreglo
float suma =0;
for(i=0; i<10; i++){
suma+=grupo[i];
}
float media = suma / 10;
printf("La media es %.2f", media);
  //Obtener el valor máximo y mínimo de un arreglo
float max=grupo[0];
for(i=0; i<10; i++){
if (grupo[i] > max){
max=grupo[i];
}
}
printf("El valor máximo es %.2f", max);
  
  float min=grupo[0];
for(i=0; i<10; i++){
if (grupo[i] < min){
min=grupo[i];
}
}
printf("El valor minimo es %.2f", min);
   /*

A cada número se le resta la media


El resultado se eleva al cuadrado
Se suman todos los cuadrados
Se dividen entre n
Se saca la raiz cuadrada
*/
 
// Ejemplo: obtener la desviación estándar
float diferencia, cuadrado, total, varianza, devest;
 
for (i=0; i<10; i++){
diferencia = grupo[i]-media;
cuadrado = diferencia * diferencia;
total+=cuadrado;
}
varianza = total/10;
devest = sqrt(varianza);
printf("La desviacion estándar es: %.4f", devest);
 }

VECTORES

Un vector es un array unidimensional, es decir, sólo utiliza un índice para


referenciar a cada uno de los elementos. Su declaración será:
tipo nombre [tamaño];

El tipo puede ser cualquiera de los ya conocidos y el tamaño indica el número


de elementos del vector (se debe indicar entre corchetes [ ] ]). En el ejemplo
puedes observar que la variable i es utilizada como índice, el primer for sirve
para rellenar el vector y el segundo para visualizarlo. Como ves, las posiciones
van de 0 a 9 (total 10 elementos).

/* Declaración de un array. */

#include <stdio.h>
/* Usando un array de enteros */

int main() {
/* Declarando el valor del array */
int losnumeros[10]; int i = 0;
/* Modificando el valor del array */
for (i = 0; i < 10; i++) losnumeros[i] = i;
/* Imprimiendo el valor del array */
for (i = 0; i < 10; i++);
printf("El elemento %d vale %d\n", i, losnumeros[i]);
return 0; }

#include <stdio.h>

int main() /* Rellenamos del 0 - 9 */


{
/* Declarando el valor del array */
int vector[10],i;
/* Declarando el valor del array */
for (i=0;i<10;i++) vector[i]=i;
/* Imprimiendo el valor del array */
for (i=0;i<10;i++)
printf(" %d",vector[i]);

#include <stdio.h>

int main() /* Rellenamos del 0 - 9 */


{
int vector[10],i;
for (i=0;i<10;i++) vector[i]=i;
for (i=0;i<10;i++)
printf(" %d",vector[i]);
}

/* Declaración de un array. */

#include <stdio.h>

int main() /* Rellenamos del 0 - 9 */


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

56. 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;
}

57. 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;
}

58. 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;
}

59. 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;
}

60. 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;
}
61. 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;
}

62. 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;
}

63. 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;
}

64. 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;
}

65. 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;
}

66. 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;
}

67. 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;
}
68. 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;
}

69. 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;
}

70. Programa para comprar boletos de autobus, este marca los asientos
ocupados con un "1" y los desocupados con "0", si un asiento ya se ha
vendido, el programa lo señalara, tambien respetando límites en los
mismos.

#include <stdio.h>
#include <conio.h>
main()
{
int asiento[40]={0};
int x, y;
printf("Los estados de los asientos son: LIBRE=0, VENDIDO=1.n" );
do
{
printf("nCual asiento quieres comprar?: " );
scanf("%d",&y);
if(y==0)break;
else if(y<=0 || y>=41)
printf("nAsiento fuera del rango del autobus." );
else if(asiento[y-1]==1)
printf("nAsiento ya vendido" );
else
{
asiento[y-1]=1;
{
for(x=0; x<40; x++)
{
if(!(x%4))
printf("ntAsiento %d= %d",x+1,asiento[x] );
else printf("tAsiento %d= %d",x+1,asiento[x] );
}
}
}
}
while(1);
if(asiento[40]==1)
printf(" Todos los asientos se han vendido." );
else printf("nGracias por usar este programa." );
getch();
return 0;
}

71. Ordenar n números a traves de un arreglo.

#include <stdio.h>
#include <conio.h>
main()
{
int numeros[100];
int x, y, z;
int orden;
printf(" Numeros a ordenar?:\t " );
printf("\n" );
scanf("%d", &x);
for(y=0; y<=x-1; y++)
{
printf("Introduce el numero %d:", y);

scanf("%d", &numeros[y] );
printf("\n");
}
for(y=0; y<(x-1); y++)
{
for(z=y+1; z<x; z++)
{
if(numeros[z]<numeros[y])
{
orden=numeros[z];
numeros[z]=numeros[y];
numeros[y]=orden;
}
}
}
printf("Los numeros en forma ascendente es:\n" );
for(y=0; y<=x-1; y++)
{
printf(" %d ", numeros[y]);
}
printf("\n" );
printf("\n" );
printf("\t*-*-*FELICIDADES*-*-*" );
printf("\n" );
getch();
return 0;
}

72. Promediar n numeros

#include <stdio.h>

main()
{
float arreglo[100], suma=0;
int x, n;
printf("Numeros a promediar: " );
scanf("%d", &n);
for(x=0; x<n; x++)
{
printf("Introduce valor %d: ", x+1);
scanf("%f",&arreglo[x]);
suma+=arreglo[x];
}
printf("\n");
printf("El promedio es %.2f\n ", suma/n );
printf("\n");
printf("Gracias por su preferencia." );
printf("\n");
}

73. Programa que lea una cadena y la muestre al revés.

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

int main()
{

    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;
}

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

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

int main()
{

    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;
}

75. Programa que lea una cadena y diga cuantas mayúsculas hay.

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

int main()
{
    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;
}

76. Programa 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 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;
}

MATRICES

Un arreglo de 2 dimensiones es usado para representar elementos en una tabla


con columnas y filas, se puede acceder a cualquier elemento dentro del arreglo
indicando el indice de la columna y la fila del arreglo.

Ejemplo: Un arreglo con 4 filas y 4 columnas. Las filas se acceden integrando


un rango desde 0 hasta el 3 y las columnas con un rango del 0 al 3. Un arreglo
bi-dimensional se declara de la misma manera que un arreglo unidimensional,
exceptuando que su tamaño debe ser declarado.
const int NUMFIL=4;            //numero de filas
 
const int NUMCOL=4;              //numero de columnas
 
float  caja[NUMFIL][NUMCOL]   //arreglo creado con las constantes
anteriores.  [NUMFIL]=primera dimension. [NUMCOL] =segunda dimension.

Este ejemplo declara caja como un arreglo de 2 dimensiones cuyos elementos


son variables del tipo float. Para acceder a un elemento individual del arreglo
debe de especificar 2 expresiones (una por cada dimensión) ejemplo: caja[0]
[2] donde [0] es fila y [2] columna.

Inicializando arreglos bidimensionales

Ejemplo: Primero definimos algunas constantes y variables usando


identificadores generales como fila y columna.

const int NUMCOL=10;


const int NUMFIL=10;

int arreglo[NUMFIL][NUMCOL];      //arreglo bidimensional

int columna                       //indice de columna

int fila                            //indice de fila

int total                           //la variable para la suma

Sumando filas de arreglos bidimensionales

Suponiendo que queremos sumar la fila numero 3 (cuarta fila) en el arreglo y


queremos mostrarlo. Lo haremos fácilmente con la función for.

total=0;
 
for(columna=0;columna<NUMCOL;col++){
    total=total+arreglo[3][columna];
}
 
printf ("La suma es %d\n”, total);

El for suma cada columna mientras mantienes fija la fila con el indice 3,
sumando cada valor que hay en ella.

Ahora supongamos que queremos sumar la fila 2 y 3, anidamos un for al que


ya teníamos ejemplo:

total=0;
 
for(fila=2;fila<4;fila++){
    for(columna=0;columna<NUMCOL;columna++){
        total=total+arreglo[fila][columna];
    }
printf ("El total es %d\n”, total);

El for de afuera controla las filas y el de adentro las columnas.


En la primera iteración se accede a la posición del arreglo: arreglo[2][0],
arreglo[2][1], arreglo[2[2] … arreglo[2][NUMCOL-1];
En la segunda accede a: arreglo[3][0], arreglo[3][1], arreglo[3][2] ….
arreglo[3][NUMCOL-1];

Sumar columnas de arreglos bidimensionales

Supongamos que queremos sumar cada columna y mostrarlas.

Una vez más generalizamos el código sumando solo la porción del arreglo que
contiene datos validos.

total=0;
 
for(columna=0;columna<columnaFilled;columna++){
    for(fila=2;fila<filaFilled;fila++){
        total=total+arreglo[fila][columna];
    }
}
printf ("El total es %d\n”, total);

En este caso el primer for controla las columnas y el interior las filas.

Mostrar arreglos bidimensionales

Si queremos mostrar el arreglo por fila entonces tendremos otro caso de


procesamiento por fila:

#include <stdio.h>          
.
.

for(fila=0;fila<NUMFIL;fila++)
{
    for(columna=0;columna<NUMCOL;columna++)

        printf("%d\n", arreglo[fila][columna]);

    printf (“\n”);
}

Este fragmento de código imprime valores del arreglo en columnas de 15


caracteres.
No hay regla que diga que tenemos que imprimir cada fila en una linea,
podemos voltear el arreglo e imprimir cada columna en una linea,
simplemente cambiando los dos for.

Cuando imprimes un arreglo bidimensional, debes considerar cual orden de


presentación tiene más sentido y como el arreglo encaja en la página.

77. SUMAR LOS EXTREMOS DE UNA MATRIZ EL TOTAL DE


CADA FILA Y  CADA COLUMNA. 

#include <stdio.h>
#include <conio.h>
#define TAM 3

int main()
{
int matriz[TAM+1][TAM+1],i,j;

// INICIALIZAR MATRIZ
for(i=0;i<TAM+1;i++)
for(j=0;j<TAM+1;j++)
matriz[i][j] = 0;

// INGRESAR LOS DATOS


for(i=0;i<TAM;i++)
{
for(j=0;j<TAM;j++)
{
printf("Ingresar dato entero en ( fila[%d] columna[%d] ):",i,j);
scanf("%d",&matriz[i][j]);
}
printf("\n");
}

// MOSTRAR LOS DATOS QUE SE INGRESE EN LA MATRIZ


for(i=0;i<TAM;i++)
{
for(j=0;j<TAM;j++)
printf("%d\t",matriz[i][j]);

printf("\n");
}

// ACUMULAR EN LA ULTIMA POSICION DE LA MATRIZ


for(i=0;i<TAM;i++)
{
for(j=0;j<TAM;j++)
{
matriz[i][TAM]+= matriz[i][j];
matriz[TAM][j]+= matriz[i][j];
}
}
printf("\n");

// MOSTRAR LAS SUMAS


for(i=0;i<TAM+1;i++)
{
for(j=0;j<TAM+1;j++)
printf("%d\t",matriz[i][j]);
printf("\n");
}
getch();

78. Programa 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 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;

79. Promgra 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 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;
}

80. Programa 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 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;
}

81. OPERACIONES EN MATRIZ

Programa que solicita los valores reales de las celdas de una matriz de 4 x 4 y
muestre lo siguiente:
a) El contenido de la matriz.
b) La suma de los elementos de la matriz
c) El promedio de los elementos de la matriz.
d) La posición en la matriz del elemento menor y el valor de dicho elemento.
e) La posición en la matriz del elemento mayor y el valor de dicho elemento.
f) La cantidad de elementos que son iguales al elemento menor.
g) La cantidad de elementos que son iguales al elemento mayor.
h) La cantidad de elementos que son mayores al elemento menor.
i) La cantidad de elementos que son menores al elemento mayor.

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

int main()
{
system("color 4f");
system("title Ejercicio 29");
int f=4,c=4;
int matrix[f][c];
int cont,x,w;
int
suma=0,promedioS=0,a,m,menor,mayor,contMe=0,contMa=0,MayoresalMen
or=0,MenoresalMayor=0;

for(x=1;x<=f;x++){ //CAPTURA DE DATOS


for(w=1;w<=f;w++){
printf("m[%d][%d]=",x,w);
scanf("%d",&cont);
matrix[x][w]=cont;
system("cls");
}
}

printf("Matriz :\n");
for(x=1;x<=f;x++){ //A-MUESTRA DATOS
for(w=1;w<=f;w++){
printf("%d",matrix[x][w]);
}
printf("\n\n");
}

printf("Suma de elementos :");


for(x=1;x<=f;x++){ //B-Elemntos Sumados
for(w=1;w<=f;w++){
suma=suma+matrix[x][w];
}
}
printf("%d\n",suma);

printf("El promedio de los elementos sumados es:");


promedioS = suma/(f*c); //C-Promedio de Sumados
printf("%d\n",promedioS);

printf("Elemento menor :");


menor = matrix[1][1];
for(x=1;x<=f;x++){ //D-BUSCA EL MENOR
for(w=1;w<=f;w++){
a=matrix[x][w];
if(a<=menor)
menor = a;
else
menor = menor;
}
}
printf("%d\n",menor);

printf("Elemento mayor :");


mayor = matrix[1][1];
for(x=1;x<=f;x++){ //E-BUSCA EL MAYOR
for(w=1;w<=f;w++){
a=matrix[x][w];
if(a>mayor)
mayor = a;
else
mayor = mayor;
}
}
printf("%d\n",mayor);

printf("Cantidad de elementos iguales al menor :");


for(x=1;x<=f;x++){ //F-Busca el menor
for(w=1;w<=f;w++){
a=matrix[x][w];
(a==menor)?contMe++:0;
}
}
printf("%d\n",contMe);

printf("Cantidad de elemento iguales al mayor :");


for(x=1;x<=f;x++){ //G-Busca el mayor
for(w=1;w<=f;w++){
a=matrix[x][w];
(a==mayor)?contMa++:0;
}
}
printf("%d\n",contMa);

m=f*c;
MayoresalMenor=m-contMe; //H-MAyores al menor
MenoresalMayor=m-contMa; //I-Menores al mayor

printf("Elementos mayores al menor :%d\n",MayoresalMenor);


printf("Elementos menores al mayor :%d\n",MenoresalMayor);

system("pause");

return 0;
}

82. PROGRAMA QUE NOS DICE LOS VALORES MÁXIMO Y


MINIMO Y SUS POSICIONES DENTRO DE UNA MATRIZ.

#include <stdio.h>
#include <math.h>
main (){
int num, i, j;
int tablanum[3][3]={0};
int t[3][3]={0};
int may, fmax=0, cmax=0, min, fmin=0, cmin=0;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
printf ("Introduce un numero: ");
scanf ("%d", &tablanum[i][j]);
}
}
may= tablanum[0][0];
min= tablanum[0][0];

for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
{
if (tablanum[i][j]>may)
{
may=tablanum[i][j];
fmax=i;
cmax=j;
}
if (tablanum [i][j]<min)
{
min=tablanum[i][j];
fmin=i;
cmin=j;
}
}
}
printf ("El mayor es: %d y su posicion es: %d fila y %d columna\n", may,
fmax,
cmax);
printf ("El menor es: %d y su posicion es: %d fila y %d columna\n", min,
fmin,
cmin);
}
83. Programa para calcular la suma, promedio, cuadrado, cubo y
desviación estandar de una serie de números.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#define tam 4

main ( )
{
double vector[tam],cuadrado, cubo;
float prom, desv,suma=0;
int i, j;

system("cls" );
printf ("PROGRAMA PARA CALCULAR \n");
printf(" PROMEDIO, SUMA, CUADRADO, CUBO Y DESV. EST.\n\n") ;
//Captura de valores y suma de los mismos
for(i = 0 ; i < tam ; ++i)
{
printf ("num [%d] = " , i) ;
scanf ("%lf" , &vector[i]) ;
suma+= vector[i] ;
}
prom = suma / tam ;
printf (" \n El promedio de los numeros es: %4.2f\n ", prom) ;
//Calculo e impresión de cuadrado, cubo y desviación estandar
printf(" \n \n NUMERO CUADRADO CUBO DESV. EST.\n");
for( i = 0 ; i < tam ; ++i )
{
cuadrado = vector[i] * vector[i] ;
cubo = pow (vector[i], 3) ;
desv = vector [i] - prom ;
printf ("%.2lf", vector[i] ) ;
printf (" \t%.2lf", cuadrado) ;
printf (" \t%.2lf", cubo) ;
printf (" \t%.2f\n", desv) ;
}
system("pause");
return(0);
}

FUNCIONES O SUBPROCESOS

También podría gustarte