Está en la página 1de 82

/*(1) Se tiene un Arreglo lineal de N numeros. Hallar la suma de los N numeros.

(N es
ingresado por el Usuario).*/
#include<stdio.h>
#define N 50
void leer_y_sumar(int a[],int n)
{ int i,sum=0;
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&a[i]);
sum=sum+a[i];
}
printf("la suma de elementos es %d\n",sum);
}
int main()
{ int a[N],n;
printf("ingrese tamanio del vector:");
scanf("%d",&n);
leer_y_sumar(a,n);
return 0;
}
/*(2) Dado un arreglo lineal de numeros, sumar separadamente los numeros de posiciones
pares e impares.*/
#include<stdio.h>
#define N 50
void leer(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{ printf("v[%d]=",i+1);
scanf("%d",&a[i]); }
}
void sumar_posicion_par_impar(int a[],int n)
{ int i,sum1=0,sum2=0;
for(i=0;i<n;i++)
{ if(i%2==0)
sum1=sum1+a[i];
else
sum2=sum2+a[i];
}
printf("la suma de la\nposiciones par es %d\nposicion impar es %d\n",sum1,sum2);
}
int main ()
{ int a[N],n;
printf("ingrese tamanio:");
scanf("%d",&n);
leer(a,n);
sumar_posicion_par_impar(a,n);
return 0;
}
/*(3)Ingresar 10 elementos enteros en un arreglo y luego 13 elementos enteros en otro arreglo,
dichos conjuntos ya ingresan ordenados en forma creciente. Se desea obtener un tercer
arreglo de 23 elementos ordenados en forma creciente, intercalando los elementos de
los arreglos ingresados.*/
#include<stdio.h>
#define N 10
#define M 13
void leer(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{
printf("v[%d]=",i+1);
scanf("%d",&a[i]);
}
}
void visualizar(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
void ord_burbuja(int a[],int n)
//esta funcion encunetra al menor y lo deja al incio asi ordena de forma ascendente
{ int i,j,aux;
for(i=0;i<n;i++)
{ for(j=i;j<n;j++)
if(a[j]<a[i])
{aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
}
void combinar(int c[],int a[],int b[],int n,int m)
{ //combinar vector
int i;
for(i=0;i<n+m;i++)
{ if(i<n)
c[i]=a[i];
else
c[i]=b[i-n];
}
}
int main()
{
int a[N],b[M];
printf("Elementos array 1\n");
leer(a,N);
printf("Elementos array 2\n");
leer(b,M);
printf(" array 1\n");
visualizar(a,N);
printf(" array 2\n");
visualizar(b,M);
int c[N+M];
combinar(c,a,b,N,M);
ord_burbuja(c,N+M);
printf(" array 3 ordenado \n");
visualizar(c,N+M);
return 0;
}
/*(4)Se ingresan 30 numeros enteros ordenados en forma creciente y un valor N. Se desea
saber si el valor N coincide con algun elemento del arreglo; si es as, indicar la posicion
en que fue encontrado, sino exhibir cartel aclaratorio.*/
//ingresa un dato y luego ingrasa otro mayor
#include<stdio.h>
#define N 30
//esta funcion lee solo elemnetos mayores al anterior ingresado
void leer(int a[],int n)
{ int i,num;
printf("ingrese numero:");
scanf("%d",&a[i]);
for(i=1;i<n;i++)
{ do{
printf("ingrese numero:",i);
scanf("%d",&num);
if(num<=a[i-1])
printf("debe ingresar numero mayor que el anterior. ");
}while(num<=a[i-1]);
a[i]=num;
}
}
void buscar(int v[],int n,int k)
{ int i,ban=-1;
for(i=0;i<n && ban<0;i++)
{ if(v[i]==k)
{//printf(" el numero se encuentra en v[%d]",i);
ban=1; }
}
if(ban!=1)
printf("El numero no esta en el vector\n");
else printf(" el numero se encuentra en v[%d]\n",i-1);
}
int main()
{ int v[N],n,k;
printf("tamanio del vector:");
scanf("%d",&n);
printf("Ingrese elementos del vector\n");
leer(v,n);
do{ printf("Ingrese numeros a buscar:");
scanf("%d",&k);
if(k!=0)
{buscar(v,n,k);
printf("buscar otro numero ?\nsi-ingrese numero\nno-pulse 0\n");}
}while(k!=0);
return 0;
}
/*(5)En un arreglo unidimensional se almacenan las calicaciones obtenidas por un grupo
de 50 alumnos en un examen. Cada calicacion es un numero entero comprendido entre
0 y 5. Escribe un programa que calcule, almacene e imprima la frecuencia de cada una
de las calicaciones, y que ademas obtenga e imprima la frecuencia mas alta. Si hubiera calicaciones
con las misma frecuencia, debe obtener la primera ocurrencia*/
#include<stdio.h>
#define MAX 100
void leer_vector(int n, int v[]);
void imprimir_vector(int n, int v[]);
void ordena_vector(int n, int v[]);
void frecuencia(int n, int v[]);
void ocurrencia(int n , int v[] , int f);
int main(){
int v[MAX],suma,media;
int i,j,k,n;
printf("n= ");
scanf("%d",&n);
leer_vector(n,v);
imprimir_vector(n,v);
frecuencia(n,v);
ordena_vector(n,v);
imprimir_vector(n,v);
return 0;
}
void leer_vector(int n, int v[]){
int i;
for(i=0;i<n;i++){
printf("vect[%d]=\n",i+1);
scanf("%d",&v[i]);
}
}
void imprimir_vector(int n, int v[]){
int i;
printf("imprimiendo vector: [");
for(i=0;i<n;i++) printf("%d ",v[i]);
printf("]\n");
}
void ordena_vector(int n, int v[]){
int aux,i,j;
for(i=0;i<n-1;i++)
for(j=0;j<n-1;j++)
if(v[j]>v[j+1]) {
aux=v[j];
v[j]=v[j+1];
v[j+1]=aux;}}

void frecuencia(int n, int v[]){
int i,j,k,a=0,c,f=0,p=0;
for(i=0;i<n;i++){
c=0;
for(j=i;j<n;j++){
if(v[i]==v[j]) c++;
}
for(k=i-1;k>=0&&a==0;k--){
if(v[i]==v[k]) a=1;//break;
}
if(f>c) f=f;//(f>c) ? f=f : f=c;
else f=c;
if(a==0) printf("la frecuencia de %d es : %d \n",v[i],c);
if(a==1) a=0;
}
printf("la frecuencia maxima o moda es : %d \n",f);
ocurrencia(n,v,f);
}
void ocurrencia(int n, int v[], int f){
int c,i,j,p=0;
for(i=0;i<n&&c!=f;i++){
c=0;
for(j=i;j<n;j++) if(v[i]==v[j]) c++;
if(f==c) p=i;
}
printf("la primera ocurrencia es : %d \n",v[p]);}
/*(6)Escribe un programa que reciba un vector de dimension n y llame a una funcion
ordenaVector para ordenar los elementos del arreglo unidimensional recibido. El usuario
elegira ordenar acendentemente o descendentemente
NOTA: Se debera manejar un solo arreglo que sera el ordenado.*/
#include<stdio.h>
#define N 30
#define M 13
void leer(int a[],int n)
{ int i;
printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&a[i]);}
}
void visualizar(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %d ",a[i]);}
printf("\n");
}
void ord_ascendente(int a[],int n)//esta funcion encunetra al menor y lo deja al incio asi ordena de
forma ascendente
{ int i,j,aux;
for(i=0;i<n;i++)
{ for(j=i;j<n;j++)
if(a[j]<a[i])
{aux=a[i];
a[i]=a[j];
a[j]=aux;
}}}
void ord_descendente(int a[],int n)
{ int i,j,aux;
for(i=0;i<n;i++)
for(j=i;j<n;j++)
{ if(a[i]<a[j])
{aux=a[i];
a[i]=a[j];
a[j]=aux;}
}
}
int main ()
{ int a[N],n;
printf("tamanio del array:");
scanf("%d",&n);
leer(a,n);
printf("****ARRAY****\n");
visualizar(a,n);
char op;
printf("Ordenanar:\n");
printf("1.Ascendetemente\n");
printf("2.Descendentemente\n");
printf("Ingrese opcion:");
scanf(" %c",&op);
switch(op)
{ case '1': ord_ascendente(a,n);
visualizar(a,n);
break;
case '2': ord_descendente(a,n);
visualizar(a,n);
break;
default:printf("opcion no valida\n");
}
return 0;
}
/*(7)Escribe un programa que al recibir como dato un arreglo unidimensional desordenado
de N enteros, obtenga como salida ese mismo arreglo pero sin los elementos repetidos.
Dato: ARRE[N](arreglo unidimensional de tipo entero de N elementos).*/
#include<stdio.h>
#define N 10
#define M 13
void leer(int a[],int n)
{ int i;
printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&a[i]);}
}
void visualizar(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %d ",a[i]);}
printf("\n");
}
void ord_ascendente(int a[],int n)//esta funcion encunetra al menor y lo deja al incio asi ordena de
forma ascendente
{ int i,j,aux;
for(i=0;i<n;i++)
{ for(j=i;j<n;j++)
if(a[j]<a[i])
{aux=a[i];
a[i]=a[j];
a[j]=aux;}}
}
void elementos_no_repetidos(int a[],int n)
{ int b[N]={0},c=0;
int i,j,cont=0;
for(i=0;i<n;i++)
{ cont=0;
for(j=i+1;j<n;j++)
{if(a[i]==a[j])
cont++;}
if(cont==0)//esta parte solo va almacenar solo en valores que el contador sea cero
{b[c]=a[i];
c++;}
}
printf("Arrays sin elementos repetidos:\n");
visualizar(b,c);
}
int main ()
{ int a[N],n;
printf("tamanio del array:");
scanf("%d",&n);
leer(a,n);
printf("****ARRAY****\n");
visualizar(a,n);
elementos_no_repetidos(a,n);
return 0;}
/*(8)Programar un algoritmo que obtenga la moda de un cierto numero de valores dados
por el usuario en un arreglo. Moda es el numero que aparece con mas frecuencia*/
#include<stdio.h>
#define N 10
#define M 13
void leer(int a[],int n)
{ int i;
printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&a[i]);}
}
void visualizar(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %d ",a[i]);}
printf("\n");
}
void moda(int a[],int n)
{int c=0,mayor=0,moda;
int i,j,cont=0;
for(i=0;i<n;i++)
{ cot=0;
for(j=i+1;j<n;j++)
{if(a[i]==a[j])
cont++;}
if(mayor<cont)
{mayor=cont;
moda=a[i];
}
/* if(cot==0)//esta parte solo va almacenar solo en valores que el contador sea cero
{b[c]=a[i];
c++;} */
}
printf("La moda es %d",moda);
}
int main ()
{ int a[N],n;
printf("tamanio del array:");
scanf("%d",&n);
leer(a,n);
printf("****ARRAY****\n");
visualizar(a,n);
moda(a,n);
//elementos_no_repetidos(a,n);
return 0;
}
/*(9)Genere un arreglo de tama~no n con numeros reales ledos desde teclado. Calcule el
numero de datos mayores y menores al iesimo valor del vector.*/
#include<stdio.h>
#define N 10
void leer(float a[],int n)
{ int i;
printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%f",&a[i]);}
}
void visualizar(float a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %.2f ",a[i]);}
printf("\n");
}
void mayores_y_menores(float a[],int n)
{ int i,j,k;
int cont1=0,cont2=0;
printf("ingrese la posicion k-esimo del array:");
scanf("%d",&k);
for(i=0;i<n;i++)
{ if(i<k-1 && a[i]<a[k-1])
cont1++;
else if(i>k-1 && a[i]>a[k-1])
cont2++;
}
printf("la cantidad de datos menores a %.2f por la izquierda es %d\n",a[k-1],cont1);
printf("la cantidad de datos mayores a %.2f por la derecha es %d\n",a[k-1],cont2);
}
int main ()
{ float a[N];
int n;
printf("tamanio del array:");
scanf("%d",&n);
leer(a,n);
printf(" ****ARRAY****\n");
visualizar(a,n);
mayores_y_menores(a,n);
return 0;
}
/*(10)Dado un vector con n elementos numericos enteros ya almacenados, indique cuantos
de ellos son multiplos de 3, 2 y 5.*/
#include<stdio.h>
#define N 10
void leer(int a[],int n)
{ int i;
printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&a[i]);}
}
void visualizar(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %d ",a[i]);}
printf("\n");
}
void multiplos_2_3_5(int a[],int n)
{ int i;
int cont1=0,cont2=0,cont3=0;
for(i=0;i<n;i++)
{ if(a[i]%2==0)
cont1++;
if(a[i]%3==0)
cont2++;
if(a[i]%5==0)
cont3++;
}
printf("En el array hay %d multiplos de 2\n",cont1);
printf("En el array hay %d multiplos de 3\n",cont2);
printf("En el array hay %d multiplos de 5\n",cont3);
}
int main ()
{ int a[N];
int n;
printf("tamanio del array:");
scanf("%d",&n);
leer(a,n);
printf("****ARRAY****\n");
visualizar(a,n);
multiplos_2_3_5(a,n);
return 0;
}
/*(11)Escribe un programa que lea n temperaturas por teclado y las almacene en un vector. A
continuacion, el programa debera calcular y mostrar por pantalla cul es la temperatura
media y cuntas temperaturas son mayores o iguales que la media*/
//corregir el programa no me raliza la parte mayores_o_iguales a la media
#include<stdio.h>
#define N 10
void leer(float a[],int n)
{ int i;
printf("ingrese temperaturas:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%f",&a[i]);}
}
void visualizar(float a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %.2f ",a[i]);}
printf("\n");
}
void media(float a[],int n)
{ int i;
float x,sum=0;
for(i=0;i<n;i++)
{ sum=sum+a[i];}
x=sum/(float)n;
printf("La media es %.2f\n",x);
mayores_o_iguales(a,n,x);
}
void mayores_o_iguales(float a[],int n,float x)
{ int i;
int cont1=0,cont2=0;
for(i=0;i<n;i++)
{ if(a[i]>x)
cont1++;
else if(a[i]==x)
cont2++;
}
printf("la cantidad mayores a la media es %d\n",cont1);
printf("la cantidad iguales a la media es %d\n",cont2);
}
int main ()
{ float a[N];
int n;
printf("cantidad de temperaturas:");
scanf("%d",&n);
leer(a,n);
printf("****TEMPERATURAS****\n");
visualizar(a,n);
media(a,n);
return 0;
}
/*(12)Implementa un programa que calcule el numero de elementos negativos, positivos y
nulos de un vector de n elementos introducido por teclado.*/
#include<stdio.h>
#define N 20
void leer(int a[],int n)
{ int i;
printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&a[i]);}
}
void visualizar(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %d ",a[i]);}
printf("\n");
}
void posi_nega_cero(int a[],int n)
{ int i,cont1=0,cont2=0,cont3=0;
for(i=0;i<n;i++)
{ if(a[i]<0)
cont1++;
else if(a[i]>0)
cont2++;
else cont3++;
}
printf("La cantidad de numeros:\n");
printf("Positivos es %d\nNegativos es %d\nCeros es %d\n",cont2,cont3,cont1);

}
int main ()
{ int a[N],n;
printf("tamanio del array:");
scanf("%d",&n);
leer(a,n);
printf("****ARRAY****\n");
visualizar(a,n);
posi_nega_cero(a,n);
return 0;
}
/*(13)Realiza una funcion que calcule el mayor elemento de una lista de tama~no n leda por
teclado.*/
#include<stdio.h>
#define N 20
void leer(int a[],int n)
{ int i;
printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&a[i]);}
}
void visualizar(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %d ",a[i]);}
printf("\n");
}
void mayor(int a[],int n)
{ int i,mayor;
mayor=a[0];
for(i=1;i<n;i++)
{ if(mayor<a[i]) mayor=a[i];}
printf("El elemento mayor de la lista es %d\n",mayor);
}
int main ()
{ int a[N],n;
printf("tamanio del array:");
scanf("%d",&n);
leer(a,n);
printf("****ARRAY****\n");
visualizar(a,n);
mayor(a,n);
return 0;
}
/*(14)Crea una funcion que calcule el producto escalar de dos vectores*/
#include<stdio.h>
#define N 20
void leer(int a[],int n)
{ int i;
printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&a[i]);}
}
void visualizar(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %d ",a[i]);}
printf("\n");
}
void producto_escalar(int a[],int b[],int n)
{ int i,sum=0;
for(i=0;i<n;i++)
{ sum=sum+a[i]*b[i];}
printf("El producto escalar de los vectores es %d",sum);
}
int main ()
{ int a[N],b[N],n;
printf("tamanio de los arrays:");
scanf("%d",&n);
leer(a,n);
printf("****ARRAY 1****\n");
visualizar(a,n);
leer(b,n);
printf("****ARRAY 2****\n");
visualizar(b,n);
producto_escalar(a,b,n);
return 0;
}
/*(15)Escribe un procedimiento que invierta el contenido de un vector, de manera que el
primer elemento pase a ser el ultimo y el ultimo el primero, el segundo pase a ser el
penultimo y el penultimo el segundo, etc.*/
//invierte un vector
#include<stdio.h>
#define N 20
void leer(int a[],int n)
{ int i;
printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&a[i]);}
}
void visualizar(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %d ",a[i]);}
printf("\n");
}
void invertir_vector(int a[],int n)
{ int i,aux;
for(i=0;i<n/2;i++)
{aux=a[i];
a[i]=a[n-1-i];
a[n-1-i]=aux;}
printf(" <---vector_invertido---> \n");
visualizar(a,n);
}
int main ()
{ int a[N],n;
printf("tamanio del array:");
scanf("%d",&n);
leer(a,n);
printf("****ARRAY 1****\n");
visualizar(a,n);
invertir_vector(a,n);
return 0;
}
/*(16)Escribe un programa que lea 15 numeros por teclado y que los almacene en un array.
Rota los elementos de ese array, es decir, el elemento de la posicion 0 debe pasar a la
posicion 1, el de la 1 a la 2, etc. El numero que se encuentra en la ultima posicion debe
pasar a la posicion 0. Finalmente, muestra el contenido del array.*/
#include<stdio.h>
#define N 20
void leer(int a[],int n)
{ int i;
printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{printf("v[%d]=",i+1);
scanf("%d",&a[i]);}
}
void visualizar(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %d ",a[i]);}
printf("\n");
}
void rotar_vector(int a[],int n)
{ int i,aux;
aux=a[n-1];
for(i=1;i<n;i++)
{ a[n-i]=a[n-1-i];}
a[0]=aux;
printf("La rotacion es --> \n");
visualizar(a,n);
}
int main ()
{ int a[N],n;
printf("tamanio del array:");
scanf("%d",&n);
leer(a,n);
printf("****ARRAY 1****\n");
visualizar(a,n);
rotar_vector(a,n);
return 0;
}
/*(17)Escribe un programa que genere 15 numeros aleatorios del 0 al 20 y que los muestre por
pantalla separados por espacios. El programa pedira entonces por teclado dos valores
y a continuacion cambiara todas las ocurrencias del primer valor por el segundo en la
lista generada anteriormente.*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 15
void genera_vector(int a[],int n)
{ int i;
srand(time(NULL));// printf("ingrese elementos:\n");
for(i=0;i<n;i++)
{//printf("v[%d]=",i+1);
a[i]=rand()%20; //printf("%d\n",a[i]);
}
}
void visualizar(int a[],int n)
{ int i;
for(i=0;i<n;i++)
{printf(" %d ",a[i]);}
printf("\n");
}
void cambiar_ocurrencias(int a[],int n)
{ int i,r,m;
printf("ingrese elemento del array:");
scanf("%d",&r);
printf("ingrese un numero:");
scanf("%d",&m);
for(i=0;i<n;i++)
{ if(a[i]==r)
a[i]=m; }
printf("El cambio es:\n");
visualizar(a,n);
}
int main ()
{ int a[N];
genera_vector(a,N);
printf("****ARRAY 1****\n");
visualizar(a,N);
cambiar_ocurrencias(a,N);
return 0;
}
/*(18)Escribir un programa que lea una matriz de 3 las y 3 columnas de
valores enteros. A continuacion, el programa debe pedir el numero de
una la. El programa debera devolver el maximo de esa la.*/
#include<stdio.h>
#define N 3
void leer(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
void visualizar(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void max_fila(int a[][N],int n, int f)
{ int max,j;
max=a[f-1][0];
for(j=1;j<n;j++)
{ if(max<a[f-1][j])
max=a[f-1][j];}
printf("El maximo de la fila %d es %d",f,max);
}
int main()
{ int a[N][N];
printf("Introdusca elementos de matriz.\n");
leer(a,N);
printf("Mostrando matriz...\n");
visualizar(a,N);
int f;
printf("Introdusca fila:");
scanf("%d",&f);
max_fila(a,N,f);
return 0;
}
/*(19)Escribir un programa que lea una matriz de enteros de 4 filas y 4
columnas y a continuacion intercambie la la i con la la j, siendo i y
j dos valores introducidos por teclado.*/
#include<stdio.h>
#define N 4
void leer(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
void visualizar(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void intercambia_filas(int a[][N],int n, int f1,int f2)
{ int j,aux;
for(j=0;j<n;j++)
{ aux=a[f1-1][j];
a[f1-1][j]=a[f2-1][j];
a[f2-1][j]=aux;
}
printf("El mostrando intercambio fila %d con fila %d\n",f1,f2);
visualizar(a,N); }
int main()
{ int a[N][N];
printf("Introdusca elementos de matriz.\n");
leer(a,N);
printf("Mostrando matriz...\n");
visualizar(a,N);
int f1,f2;
printf("Introdusca una fila :");
scanf("%d",&f1);
printf("Introdusca otra fila :");
scanf("%d",&f2);
intercambia_filas(a,N,f1,f2);
return 0;
}
/*(20)Escribir un programa que lea una matriz de 4 filas y 3 columnas, la
visualice por pantalla y a continuacion encuentre el mayor y el menor
elemento de la matriz y sus posiciones.*/
#include<stdio.h>
#define F 4
#define C 3
void leer(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
for(j=0;j<c;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
void visualizar(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
{for(j=0;j<c;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void mayor_menor_elemento_matriz(int a[][C],int f,int c)
{ int i,j,mayor,menor;
int f1,c1,f2,c2;
mayor=a[0][0];
menor=a[0][0];
for(i=0;i<f;i++)
for(j=0;j<c;j++)
{ if(mayor<a[i][j])
{ mayor=a[i][j];
f1=i;
c1=j;
}
if(menor>a[i][j])
{ menor=a[i][j];
f2=i;
c2=j;
}
}
printf("El mayor elemento es %d\n",mayor);
printf("esta en la posicion [%d,%d]\n",f1+1,c1+1);
printf("El menor elemento es %d\n",menor);
printf("esta en la posicion [%d,%d]\n",f2+1,c2+1);
}
int main()
{ int a[F][C];
printf("Introdusca elementos de matriz.\n");
leer(a,F,C);
printf("Mostrando matriz...\n");
visualizar(a,F,C);
mayor_menor_elemento_matriz(a,F,C);
return 0;
}
/*(21)Escribir un programa que lea una matriz de numeros enteros y que
devuelva la suma de los elementos positivos de la matriz y la suma de
los elementos negativos*/
#include<stdio.h>
#define F 4
#define C 3
void leer(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
for(j=0;j<c;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
void visualizar(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
{for(j=0;j<c;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void suma_elementos_posi_nega(int a[][C],int f,int c)
{ int i,j,sumP=0,sumN=0;
for(i=0;i<f;i++)
for(j=0;j<c;j++)
{ if(a[i][j]>0)
{ sumP=sumP+a[i][j]; }
else if(a[i][j]<0)
{ sumN=sumN+a[i][j]; }
}
printf("La suma de elementos positivos es %d\n",sumP);
printf("El suma de elementos negativos es %d\n",sumN);
}
int main()
{ int a[F][C];
printf("Introdusca elementos de matriz.\n");
leer(a,F,C);
printf("Mostrando matriz...\n");
visualizar(a,F,C);
suma_elementos_posi_nega(a,F,C);
return 0;
}
/*(22)Escribir un programa que lea una matriz de enteros de 2 filas y 4 columnas
y muestre por pantalla la transpuesta a dicha matriz.*/
#include<stdio.h>
#define F 2
#define C 4
void leer(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
for(j=0;j<c;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
void visualizar(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
{for(j=0;j<c;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void muestra_transpuesta(int a[][C],int f,int c)
{ int i,j;
for(j=0;j<c;j++)
{ for(i=0;i<f;i++)
{ printf("%4d",a[i][j]); }
printf("\n");
}
}
int main()
{ int a[F][C];
printf("Introdusca elementos de matriz.\n");
leer(a,F,C);
printf("Mostrando matriz...\n");
visualizar(a,F,C);
muestra_transpuesta(a,F,C);
return 0;
}
/*(23)En una hacienda hay un establo que se compone de N vacas. Dise~ne un
algoritmo que guarde en una matriz de dimension 7N la produccion
de leche diaria (en litros) de cada una de las vacas, durante una semana.
Ademas, el algoritmo debe calcular la produccion total del establo en
cada uno de los siete das, y el numero de la vaca que dio mas leche en
cada da.*/
#include<stdio.h>
#define F 3
#define C 40
void leer(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
{printf("semana %d\n",i+1);
for(j=0;j<c;j++)
{printf("v[%d]=",j+1);
scanf("%d",&a[i][j]);}
}
}
void visualizar(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
{for(j=0;j<c;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void produccion_leche(int a[][C],int f,int c)
{ int i,j,sum,mayor,k;
for(i=0;i<f;i++)
{ mayor=a[i][0];
k=0;
sum=0;
for(j=0;j<c;j++)
{ sum=sum+a[i][j];
if(mayor<a[i][j])
{ mayor=a[i][j];
k=j;
}
}
printf("Semana %d\nProduccion Total %d litros de leche\n",i+1,sum);
printf("La mayor produccion le corresponde a la vaca %d\n",k+1);
printf("\n");
}}
int main()
{ int a[F][C],n;
printf("introdusaca el numero de vacas:");
scanf("%d",&n);
printf("Introdusca cantidad producida por cada vaca.\n");
leer(a,F,n);
printf("Mostrando matriz...\n");
visualizar(a,F,n);
produccion_leche(a,F,n);
return 0;
}
/*(24)Realiza un programa que rellene aleatoriamente una matriz de 3 filas
y 4 columnas y la muestre por pantalla (numeros entre 0 y 20).*/
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define F 3
#define C 4
void crea_matriz(int a[][C],int f,int c)
{int i,j;
srand(time(NULL));
for(i=0;i<f;i++)
for(j=0;j<c;j++)
{ a[i][j]=rand()%19+1; }
}
void visualizar(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
{for(j=0;j<c;j++)
printf(" %4d",a[i][j]);
printf("\n"); }
}
int main()
{ int a[F][C];
printf(" ****Matriz****.\n");
crea_matriz(a,F,C);
printf("Mostrando matriz...\n");
visualizar(a,F,C);
return 0;
}
/*(25)Desarrollar un programa que solicite la dimension de una matriz y la
opcion a escoger en el menu:
a) Todos 1.
b) Matriz Nula.
c) Matriz Identidad.
y luego imprima la matriz seleccionada.*/
#include<stdio.h>
#define F 50
void menu(void)
{
printf("0.SALIR\n");
printf("1.TODOS\n");
printf("2.Matriz nula\n");
printf("3.Matriz identidad\n");
}
void matriz_nula(int a[][F],int n)
{int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ a[i][j]=0; }
}
void matriz_identidad(int a[][F],int n)
{int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ if(i==j) a[i][j]=1;
else a[i][j]=0; }
}
void visualizar(int a[][F],int n)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void opcion(char op)
{ int a[F][F],n;
switch(op)
{ case '0':printf("Termino operacion\n");
break;
case '1':
printf("ingrese orden de la matriz:");
scanf("%d",&n);
matriz_nula(a,n);
printf("matriz nula\n");
visualizar(a,n);
matriz_identidad(a,n);
printf("matriz identidad\n");
visualizar(a,n);
break;
case '2':
printf("ingrese orden de la matriz:");
scanf("%d",&n);
matriz_nula(a,n);
printf("matriz nula\n");
visualizar(a,n);
break;
case '3':
printf("ingrese orden de la matriz:");
scanf("%d",&n);
matriz_identidad(a,n);
printf("matriz identidad\n");
visualizar(a,n);
break;
default:
printf("opcion no valida");
}
}
int main()
{
char op;
do
{
menu();
printf("ingrese opcion:");
scanf(" %c",&op);
opcion(op);

}while(op!='0');
return 0;
}
/*(26)Una matriz cuadrada A se dice que es simetrica si A(i,j) = A(j,i) para
todo i,j dentro de los lmites de la matrz. Elabore una funcion que lea
una matrz y regrese un 1 (uno) si es simetrica o un 0 (cero) si no lo es.*/
#include<stdio.h>
#define N 50
void leer(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
int simetrica(int a[][N],int n)
{int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ if(a[i][j]!=a[j][i])
return 0;
}
return 1;
}
void visualizar(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
int main()
{ int a[N][N],n;
printf("ingrese orden:");
scanf("%d",&n);
printf("ingrese elementos:\n");
leer(a,n);
visualizar(a,n);
if(simetrica(a,n))
printf("La Matriz es siemtrica\n");
else
printf("LA Matriz no es simetrica\n");
return 0;
}
/*(27)Sea una matriz M de orden 5 5 realice las siguientes operaciones:
a) Determine cual es el mayor elemento de la matriz y su posicion.
b) Determine cual es el menor elemento de la matriz y su posicion.*/
#include<stdio.h>
#define N 5
void leer(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
void visualizar(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void mayor_menor_elemento_matriz(int a[][N],int n)
{ int i,j,mayor,menor;
int f1=0,c1=0,f2=0,c2=0;
mayor=a[0][0];
menor=a[0][0];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ if(mayor<a[i][j])
{ mayor=a[i][j];
f1=i;
c1=j;
}
if(menor>a[i][j])
{ menor=a[i][j];
f2=i;
c2=j;
}
}
printf("El mayor elemento es %d\n",mayor);
printf("esta en la posicion [%d,%d]\n",f1+1,c1+1);
printf("El menor elemento es %d\n",menor);
printf("esta en la posicion [%d,%d]\n",f2+1,c2+1);
}
int main()
{ int a[N][N];
printf("Introdusca elementos de matriz.\n");
leer(a,N);
printf("Mostrando matriz...\n");
visualizar(a,N);
mayor_menor_elemento_matriz(a,N);
return 0;
}
/*(28)Sea A una matriz de tama~no nn, implemente un programa que dado
un menu de opciones resuelva:
a) La transpuesta de A (At).
b) Si A es simetrica o antisimetrica.
c) Si A es una matriz triangular superior o triangular inferior:*/
#include<stdio.h>
#define N 50
void menu(void)
{
printf("0.SALIR\n");
printf("1.Transpuesta\n");
printf("2.Matriz simetrica o antisimetrica\n");
printf("3.Matriz triangualar superior o inferior\n");
}
void tanspuesta(int a[][N],int n)
{int i,j;
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
{ printf("%4d",a[j][i]); }
printf("\n");
}
}
int simetrica(int a[][N],int n)
{int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ if(a[i][j]!=a[j][i])
return 0;

}
return 1;
}
int antisimetrica(int a[][N],int n)
{int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ if(a[i][j]!=-a[j][i])
return 0;

}
return 1;
}
void trian_superior(int a[][N],int n)
{int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ }
}
void trian_inferior(int a[][N],int n)
{int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{ if(a)}
}
void visualizar(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void opcion(char op)
{ int a[N][N],n;
switch(op)
{ case '0':printf("Termino operacion\n");
break;
case '1':
printf("ingrese orden de la matriz:");
scanf("%d",&n);
break;
case '2':
break;
case '3':
break;
default:
printf("opcion no valida");
}
}
int main()
{
char op;
do
{
menu();
printf("ingrese opcion:");
scanf(" %c",&op);
opcion(op);

}while(op!='0');
return 0;
}
/*(29)Una matriz A es triangular superior si todos sus elementos que estan
bajo la diagonal principal tienen el valor cero.*/
#include<stdio.h>
#define N 50
void leer(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
void visualizar(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
int trian_superior(int a[][N],int n)
{ int i,j;
for(i=1;i<n;i++)
{for(j=0;j<i;j++)
if(a[i][j]!=0)
return 0;
}
return 1;
}
int main()
{ int a[N][N],n;
printf("ingrese orden:");
scanf("%d",&n);
printf("ingrese elementos:\n");
leer(a,n);
printf("La matriz es:\n");
visualizar(a,n);
if(trian_superior(a,n))
printf("La Matriz es triangulaar superior\n");
else
printf("LA Matriz no es triangular superior\n");
getch();
return 0;
}
/*(30)El due~no de un restaurante entrevista a cinco clientes de su negocio y
les pide que caliquen de 1 a 10 los siguientes aspectos: (1 es pesimo y
10 es excelente o inmejorable)
Atencion de parte de los empleados.
Calidad de la comida.
Justicia del precio (el precio que pago le parece justo?).
Ambiente (muebles comodos?, musica adecuada?, iluminacion su-
ciente?, decoracion, etc.)
Escriba un algoritmo que pida las calicaciones de los cinco clientes a
cada uno de estos aspectos, y luego escriba el promedio obtenido en
cada uno de ellos. La lista debe aparecer ordenada del aspecto mejor
calicado al peor calicado.*/
#include<stdio.h>
#define F 5
#define C 4
void promedio(int c,int f,int a[][c],float ord[c])
{ int i,j,suma=0;
for(i=0;i<c;i++)
{
for(j=0;j<f;j++)
suma=suma+a[j][i];
suma=suma/5.0;
ord[i]=suma;
printf("el promedio de la %d es %.3f\n",i+1,ord[j]);
}
}
void ordenarpromedio( int c,float ord[c])
{
int i,j;
float aux;
for(i=0;i<c;i++)
{
for(j=i+1;j<c;j++)
if(ord[j]>ord[i])
{
aux=ord[j];
ord[j]=ord[i];
ord[i]=aux;
}
}
}
void mostrarpromedio(int c,float ord[c])
{ int i;
for(i=0;i<c;i++)
{
printf(" %f ",ord[i]);
printf("\n"); }
}
void leer(int f,int c,int a[][c])
{ int i,j;
for(i=0;i<f;i++)
{printf("cliente %d\n",i+1);
for(j=0;j<c;j++)
{
printf("v[%d]=",j+1);
scanf("%d",&a[i][j]);
printf("\n");
}
}
}
void visualizar(int f,int c,int a[][c])
{ int i,j;
for(i=0;i<f;i++)
{for(j=0;j<c;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void menu()
{
printf("cliente\natencion de parte de los empleados\njusticia del precio\n ambiente\n");
printf("\n");
}
int main()
{ int a[F][C];
float ord[C];
menu();
printf("Introdusca calificaciones.\n");
leer(F,C,a);
printf("Mostrando matriz...\n");
visualizar(F,C,a);
promedio(F,C,a,ord);
ordenarpromedio(C,ord);
mostrarpromedio(C,ord);
return 0;
}
/*(31)Escribir la funcion void CargarMat(); la cual permitira cargar una matriz
de enteros de 4 3, escribir tambien la funcion:
int SumaFilaPar(int mat[ ][3]);
la cual recibira la matrz por referencia y devolvera un entero correspondiente
a la sumatoria de los datos cargados en las las pares de
la matrz. Se escribe ademas la funcion main() que utiliza dichas funciones.*/
#include<stdio.h>
#define N 4
#define M 3
void visualizar(int a[][M],int n,int m);
int SumaFilaPar(int a[][N],int n,int m);
void Cargar_Matriz(void)
{ int a[N][M],i,j;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
visualizar(a,N,M);
int b=SumaFilaPar(a,N,M);
}
void visualizar(int a[][M],int n,int m)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
int SumaFilaPar(int a[][N],int n,int m)
{
int i,j,sum=0;
for(i=0;i<n;i=i+2)
{for(j=0;j<m;j++)
sum=sum+a[i][j];
}
return sum;
}
int main()
{ int a[N][M],n;
//int m=SumaFilaPar(a,N,M);
printf("cargar matriz:\n");
Cargar_Matriz();
//visualizar(a,N,M);
int m=SumaFilaPar(a,N,M);
printf("La suma de los elementos de las filas pares es %d",m);
getch();
return 0;
}
/*(32)Escriba un programa que permita el ingreso por teclado, de la diagonal
vertical de un rombo y lo dibuje relleno con asteriscos o slo el borde,
segun se requiera a traves de un menu de opciones.*/
#include<stdio.h>
#define N 50
void visualizar(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(" %c",a[i][j]);
printf("\n");
}
}
void rombo_1(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{ if(j==n/2-i||j==n/2+i||j==i-n/2||2*j==3*(n-1)-2*i )
a[i][j]='*';
else
a[i][j]='\0';
}
}
visualizar(a,n);
}
int main()
{ int a[N][N],n;
printf("ingrese orden:");
scanf("%d",&n);
rombo_1(a,n);
return 0;
}
/*(33)Escriba un programa que permita el ingreso, por teclado, del ancho y
del alto de un rectangulo y lo dibuje relleno con asteriscos o solo el
borde, segun se requiera a traves de un menu de opciones.*/
#include<stdio.h>
#define N 50
#define M 50
void visualizar(int a[][M],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
{ for(j=0;j<c;j++)
printf(" %2c",a[i][j]);
printf("\n");
}
}
void rectangulo_1(int a[][M],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
for(j=0;j<c;j++)
{if(i==0||i==f-1)
a[i][j]='*';
else if(j==0||j==c-1)
a[i][j]='*';
else a[i][j]='\0';
}
}
void rectangulo_2(int a[][M],int f,int c)
{int i,j;
for(i=0;i<f;i++)
for(j=0;j<c;j++)
a[i][j]='*';
}
int main()
{ int a[N][M];
int f,c;
printf("ingrese dimensiones de la matriz:\n");
printf("num. fila:");
scanf("%d",&f);
printf("num. columnas:");
scanf("%d",&c);
rectangulo_1(a,f,c);
visualizar(a,f,c);
printf("\n");
rectangulo_2(a,f,c);
visualizar(a,f,c);
return 0;
}
//otro forma del anterior rectangulo asterisco programa:
#include<stdio.h>
void asteriscosdentro(int m,int n,char A[][n])
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(i==0)
A[i][j]=' ';
if(i!=0 && i!=n-1)
{
if(j==0 || j==n-1)
A[i][j]=' ';
else
A[i][j]='*';
}
if(i==n-1)
A[i][j]=' ';
}
}
}
void asteriscosborde(int m,int n,char A[][n])
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(i==0)
{ A[i][j]='*';printf(" %c ",A[i][j]);}
if(i!=0 && i!=m-1)
{
if(j==0 || j==n-1)
{ A[i][j]='*';printf(" %c ",A[i][j]);}
else
{ A[i][j]=' '; printf(" %c ",A[i][j]);}
}
if(i==m-1)
{ A[i][j]='*'; printf(" %c ",A[i][j]);}
}
printf("\n");
}
}

void opcion(int opc,int m,int n,char A[][n])
{ switch(opc)
{
case 1:
asteriscosdentro(m,n,A);
break;
case 2:
asteriscosborde(m,n,A);
break;
}
}
int main()
{ int m,n,opc;
char A[m][n];
do {
printf("ingrese las dimensiones del rectabgulo:el ancho m como filas y el largo n como
columnas:");
scanf("%d %d %d",&m,&n,&opc);
printf("ingrese 1 para asteriscos dentro dentro del rectangulo:\n");
printf("ingrese 2 para asteriscos en el borde del rectangulo:\n");
opcion(opc,m,n,A);
}while(m!=0 && n!=0 && (opc!=1 || opc!=2));
return 0;
}
/*(34)Escribir la funcion void CargarMat(); la cual permitira cargar una matriz
de enteros de 4 3, escribir tambien la funcion:
int SumaFilaPar(int mat[ ][3]);
la cual recibira la matrz por referencia y devolvera un entero correspondiente
a la sumatoria de los datos cargados en las las pares de
la matrz. Se escribe ademas la funcion main() que utiliza dichas funciones.*/
#include<stdio.h>
#define N 4
#define M 3
void visualizar(int a[][M],int n,int m);
int SumaFilaPar(int a[][N],int n,int m);
void Cargar_Matriz(void)
{ int a[N][M],i,j;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
visualizar(a,N,M);
int b=SumaFilaPar(a,N,M);
}
void visualizar(int a[][M],int n,int m)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<m;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
int SumaFilaPar(int a[][N],int n,int m)
{
int i,j,sum=0;
for(i=0;i<n;i=i+2)
{for(j=0;j<m;j++)
sum=sum+a[i][j];
}
return sum;
}
int main()
{ int a[N][M],n;
//int m=SumaFilaPar(a,N,M);
printf("cargar matriz:\n");
Cargar_Matriz();
//visualizar(a,N,M);
int m=SumaFilaPar(a,N,M);
printf("La suma de los elementos de las filas pares es %d",m);
getch();
return 0;
}
/*(35)Suponga que se tiene la siguiente matriz de numeros:
F =2
66664
0 2 5 7 6
0 0 0 3 8
2 9 6 3 4
1 5 6 1 4
0 9 2 5 0
3
77775
Realice las siguientes funciones:
a) Devolver la matriz ordenada por las de menor a mayor.
b) Devolver la matriz ordenada por columnas de menor a mayor.*/
//problema 24 falta hacer el menu
#include<stdio.h>
#define N 5
void leer(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
void visualizar(int a[][N],int n)
{ int i,j;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void ord_ascendete_filas(int a[][N],int n)
{int i,j,k,aux;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{for(k=j;k<n;k++)
if(a[i][k]<a[i][j])
{ aux=a[i][j];
a[i][j]=a[i][k];
a[i][k]=aux;
}
}
}
}
void ord_ascendente(int a[],int n)//esta funcion encunetra al menor y lo deja al incio asi ordena de
forma ascendente
{ int i,j,aux;
for(i=0;i<n;i++)
{ for(j=i;j<n;j++)
if(a[j]<a[i])
{aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
}
void orde_ascendente_colum(int a[][N],int n)
{int i,j,k,aux;
for(j=0;j<n;j++)
{for(i=0;i<n;i++)
{for(k=i;k<n;k++)
if(a[k][j]<a[i][j])
{ aux=a[i][j];
a[i][j]=a[k][j];
a[k][j]=aux;
}
}
}
}
int main()
{ int a[N][N];
printf("Introdusca elementos de matriz.\n");
leer(a,N);
printf("Mostrando matriz...\n");
visualizar(a,N);
printf("\n");
ord_ascendete_filas(a,N);
visualizar(a,N);
printf("\n");
orde_ascendente_colum(a,N);
visualizar(a,N);
return 0;
}
/*(36)En Algebra Lineal las matrices son tema central. Sobre ellas se definen
varias operaciones, como por ejemplo:
a) La suma de dos matrices. Si A y B son matrices de igual dimension,
la matriz C = A + B se calcula haciendo que C[i][j] = A[i][j] +
B[i][j], para todo i y j validos.
b) La transpuesta de una matriz. Si A es una matriz de dimension
nm, la matriz B = At se calcula haciendo que B[i][j] = A[j][i],
para todo i y j validos. Note que esto quiere decir que las
las se
convierten en columnas y que la dimension de B es m n.
c) La traza de una matriz cuadrada. Si A es una matriz de dimension
n n, la matriz traza es la suma de todos los elementos de la
diagonal principal.
d) La multiplicacion de dos matrices. Si A y B son matrices de dimensiones
n m y m k, respectivamente, la matriz C = A B
es de dimension n k.
Especique y escriba un programa que considere cada una de estas
operaciones.*/
#include<stdio.h>
#define F 3
#define C 3
void leer(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
for(j=0;j<c;j++)
{printf("a[%d][%d]=",i,j);
scanf("%d",&a[i][j]);
}
}
void visualizar(int a[][C],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
{for(j=0;j<c;j++)
printf(" %4d",a[i][j]);
printf("\n");
}
}
void muestra_transpuesta(int a[][C],int f,int c)
{ int i,j;
for(j=0;j<c;j++)
{ for(i=0;i<f;i++)
{ printf("%4d",a[i][j]); }
printf("\n");
}
}
void suma_matrices(int a[][C],int b[][C],int f,int c)
{ int i,j;
int x[F][C];
for(i=0;i<f;i++)
{ for(j=0;j<c;j++)
{ x[i][j]=a[i][j]+b[i][j]; }
}
visualizar(x,f,c);
}
int traza_matris(int a[][C],int n)
{ int i,j,sum=0;
for(i=0;i<n;i++)
sum=sum+a[i][i];
return sum;
}
void producto_matrices(int a[][C],int b[][C],int f,int c,int c1)
{int x[f][c];
int i,j,r,sum=0;
for(i=0;i<f;i++)
for(j=0;j<c;j++)
{for(r=0;r<c1;r++)
{ sum=sum+a[i][r]*b[r][j]; }
x[i][j]=sum;
sum=0;
}
visualizar(x,f,c);
}
void menu(void)
{
printf("0.SALIR\n");
printf("1.Suma de matrices\n");
printf("2.Tanspuesta\n");
printf("3.traza de una matriz\n");
printf("4.Multiplicacion de matrices\n");
}
void opcion(char op)
{ int a[F][C],b[F][C];
switch(op)
{ case '0':printf("finalizo con exito\n");
break;
case '1':
printf("leer matriz a:\n");
leer(a,F,C);
printf("leer matriz b:\n");
leer(b,F,C);
printf("Matriz A\n");
visualizar(a,F,C);
printf("Matriz B\n");
visualizar(b,F,C);
printf("La suma de matrices es:\n");
suma_matrices(a,b,F,C);
break;
case '2':
printf("leer matris a:\n");
leer(a,F,C);
printf("Matriz A:\n");
visualizar(a,F,C);
printf("La matriz transpuesta es:\n");
muestra_transpuesta(a,F,C);
break;
case '3':
printf("leer matris a:\n");
leer(a,F,F);
printf("Matriz A:\n");
visualizar(a,F,F);
printf("La traza es %d\n",traza_matris(a,F));
break;
case '4':
printf("leer matris a:\n");
leer(a,F,C);
printf("leer matris b:\n");
leer(b,C,F);
printf("Matriz A\n");
visualizar(a,F,C);
printf("Matriz B\n");
visualizar(b,C,F);
printf("El producto de matrices es:\n");
producto_matrices(a,b,F,C,F);
break;
default:
printf("Opcion no valida\n");
}

}
int main()
{
char op;
do{menu();
printf("ingrese opcion:");
scanf(" %c",&op);
opcion(op);
}while(op!='0');
return 0;
}
/*(37)Escriba un programa que permita el ingreso por teclado del numero de
las para mostrar los numeros naturales como un triangulo isosceles.
Por ejemplo, para el numero 4:
1
1 2 1
1 2 3 2 1
1 2 3 4 3 2 1*/
#include<stdio.h>
#define N 50
#define M 50
void visualizar(int a[][M],int f,int c)
{ int i,j;
for(i=0;i<f;i++)
{ for(j=0;j<c;j++)
printf(" %2c",a[i][j]);
printf("\n");
}
}
void triangulo_numeros(int a[][M],int f,int c)
{ int i,j;
char cont='1';
for(i=0;i<f;i++)
{ cont='1';
for(j=0;j<c;j++)

{ a[i][j]='\0';
if(j>=c/2-i&&j<c/2)
{a[i][j]=cont;
cont++;}
if(j<=c/2+i&&j>=c/2)
{a[i][j]=cont;
cont--; }
}

}
}
int main()
{ int a[N][M];
int f;
printf("ingrese dimensiones de la matriz:\n");
printf("num. fila:");
scanf("%d",&f);
triangulo_numeros(a,f,2*f-1);
visualizar(a,f,2*f-1);
printf("\n");
return 0;
}
/*(38)rectangulo asterisco.*/
#include<stdio.h>
void asteriscosdentro(int m,int n,char A[][n])
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(i==0)
A[i][j]=' ';
if(i!=0 && i!=n-1)
{
if(j==0 || j==n-1)
A[i][j]=' ';
else
A[i][j]='*';
}
if(i==n-1)
A[i][j]=' ';
}
}
}
void asteriscosborde(int m,int n,char A[][n])
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(i==0)
{ A[i][j]='*';printf(" %c ",A[i][j]);}
if(i!=0 && i!=m-1)
{
if(j==0 || j==n-1)
{ A[i][j]='*';printf(" %c ",A[i][j]);}
else
{ A[i][j]=' '; printf(" %c ",A[i][j]);}
}
if(i==m-1)
{ A[i][j]='*'; printf(" %c ",A[i][j]);}
}
printf("\n");
}
}

void opcion(int opc,int m,int n,char A[][n])
{ switch(opc)
{
case 1:
asteriscosdentro(m,n,A);
break;
case 2:
asteriscosborde(m,n,A);
break;
}
}
int main()
{ int m,n,opc;
char A[m][n];
do {
printf("ingrese las dimensiones del rectabgulo:el ancho m como filas y el largo n como
columnas:");
scanf("%d %d %d",&m,&n,&opc);
printf("ingrese 1 para asteriscos dentro dentro del rectangulo:\n");
printf("ingrese 2 para asteriscos en el borde del rectangulo:\n");
opcion(opc,m,n,A);
}while(m!=0 && n!=0 && (opc!=1 || opc!=2));
return 0;
}
//(39)cuadrado magico:
#include <stdio.h>
#include <stdlib.h>
#define MAX 11
void generar(int a[][MAX], int *max);
int main(){
printf("CUADRADO MAGICO\n");
int n;
int arr[MAX][MAX];
generar(arr, &n);
getchar();
return 0;}
void generar(int a[][MAX], int *max){
int i, j, n, x;
int contador = 1;
puts("LECTURA DEL ARREGLO");
do{
printf("imprima el orden impar del cuadrado mgico: ");
scanf("%d", &n);
if(n%2 != 0)
break;
else
printf("solo orden impar. \n");
}while(n%2 == 0);
for(i=0; i<n; i++)
for(j=0; j<n; j++)
a[i][j] = 0;
/*srand(time(NULL));
for(i=0; i<n; i++)
for(j=0; j<n; j++)
a[i][j] = rand() % (x);*/
x = n*n;
i=0;
j=n/2;
a[i][j] = 1;
while(contador < x){
if((i-1)>=0){
if((j+1)<(n)){
if(a[i-1][j+1]==0){
i -= 1;
j += 1;
contador += 1;
a[i][j] = contador;
}
else{
i += 1;
contador += 1;
a[i][j] = contador;
}
}
else{
if(a[i-1][0]==0){
i -= 1;
j = 0;
contador += 1;
a[i][j] = contador;
}
else{
i += 1;
contador += 1;
a[i][j] = contador;
}
}
}
else{
if(((j+1)<(n))){
if (a[n-1][j+1]==0){
i = n-1;
j += 1;
contador += 1;
a[i][j] = contador;
}
else{
i += 1;
contador += 1;
a[i][j] = contador;
}
}
else{
i += 1;
contador += 1;
a[i][j] = contador;
}}}
for(i=0; i<n; i++) {
for(j=0; j<n; j++)
printf("\t%d ", a[i][j]);
printf("\n");}}
//otra forma cuadrado magico:
#include<stdio.h>
void main(){
printf("cuadrados magicos\n");
int n;
do{
printf("ingrese n impar mayor a 1:\n");
printf("ingrese 0 para salir\n");
scanf("%d",&n);
if(n%2==1&&n!=1){
//decalracion e inicializacion
// (i,j) posicion en el cuadrado
// x valor que toma cada posicion
int i=1,j=(n+1)/2,x=1,a,b;
// m[n][n] es la matriz que representa al cuadrado
int k,h,m[n][n];
// llenado de la matriz como matriz nula
// necesario pues me permite conocer que contien cada posicion previo a la asignacion
for(k=0;k<n;k++)
for(h=0;h<n;h++)
m[k][h]=0;
// llenado de la matriz
while(x<=n*n){
m[i-1][j-1]=x;
//printf("m[%d][%d]=%d, ",i-1,j-1,m[i-1][j-1]);
// auxiliares para hallar la posicion
a=i-1;
b=j+1;
// algoritmo general
if(a==0){
a=n;
if(b==n+1)
b=1;
}
if(a>0)
if(b==n+1)
b=1;
// si la posicion hallada esta ocupada
// por esto es importante llenar al matriz a nula
if(m[a-1][b-1]!=0){
a=i+1;
b=j;
if(a==n+1)
a=1;
}
//posiciones encontradas
i=a;
j=b;
// incremento el contador
x++;
}
for(k=0;k<n;k++){
for(h=0;h<n;h++)
printf("%d ",m[k][h]);
puts("");
}
}
}while(n>0);
}
//(40)ANAGRAMA:
#include<stdio.h>
#include<string.h>
#define N 100
void abc(){
for(i=65; i<=122;i++){
printf("%d\t%c\n",i,i);
}
}
void minuscula(char a[]){
for(int i=0;a[i]!='\0';i++){
if(a[i]>=97 && a[i]<=122) a[i]=a[i]-'z'+'Z';
}
}
void ordenar(char a[]){
int i,j,la; char aux;
la=strlen(a);
for(j=0;j<la;j++){
for(i=0;i<la-1;i++){
if(a[i]>a[i+1]){
aux=a[i]; a[i]=a[i+1]; a[i+1]=aux;
}
}
}

}
int main(){
char a[N],b[N];
gets(a);
gets(b);
minuscula(a);
minuscula(b);
ordenar(a);
ordenar(b);
if(strcmp(a,b)==0) puts("son anagramas");
else puts("no son anagramas");
system("pause");
}
//(41)PALINDROMO
#include<stdio.h>
#include<string.h>
#define TAM 80
//prototipo
int EsPalindromo(char cad[]);
int main(){
char cad[TAM+1],car;
printf("Ingrese Cadena = ");
gets(cad);
if(EsPalindromo(cad)==1)
printf("La cadena %s es Palindromo\n",cad);
else
printf("La cadena %s NO es Palindromo\n",cad);
return 0;
}
int EsPalindromo(char cad[]){
char aux[TAM+1];
int i=0,sw=1,n; //sw es 1 si la palabra es palindromo y 0 si no lo es
n=strlen(cad); //cantidad de caracteres de una cadena
//obtengo la reversa de la palabra ingresada
while(i<n){
aux[i]=cad[n-i-1];
i++;
}
aux[i]='\0';
i=0;
//compara para ver si cad y aux alamacenan la misma frase
while(i<n){
if(aux[i]!=cad[i])
sw=0;
i++;
}
return sw;
}
//(42)DETERMINANTE NXN:
//sabemos que el det. no se altera al realizar operaciones elementales//
//luego obtendremos una triangular y es mas facil hallar su determinante//
#include <stdio.h>
void leer_matriz(float matrix[100][100],int dimension);
void imprimir_matriz(float matrix[100][100],int dimension);
void transformacion(float matrix[100][100],int dimension);//transformaremos la matriz en una
triangular inferior//
float determinante(float matrix[100][100],int dimension);
int main()
{
int n;
float a[100][100];
printf("Ingrese la dimension de la matriz: \n");
scanf("%d",&n);
leer_matriz(a,n);
printf("La matriz con el determinante a hallar es: \n");
imprimir_matriz(a,n);
printf("Luego de realizar las operaciones elementales tenemos: \n");
transformacion(a,n);
imprimir_matriz(a,n);
printf("Con esto podemos hallar el determinante\n");
printf("Asi el determinante es %.2f\n",determinante(a,n));
printf("APAZA TRASPASA Y PAJERO XD\n");
getch();
return 0;
}
void leer_matriz(float matrix[100][100],int dimension)
{
int i,j;
for(i=0;i<dimension;i++)
{for(j=0;j<dimension;j++)
{printf("Elemento[%d][%d]: \n",i+1,j+1);
scanf("%f",&matrix[i][j]);}
}
}
void imprimir_matriz(float matrix[100][100],int dimension)
{
int i,j;
for(i=0;i<dimension;i++)
{ for(j=0;j<dimension;j++)
{printf("%.2f\t",matrix[i][j]);}
printf("\n");}
}
void transformacion(float matrix[100][100],int dimension)
{
int d,f,c;
float pivote,aux;
for(d=0;d<dimension;d++)//recorremos los pivotes en derecha a columnas//
{
pivote=matrix[d][d];//pongo como pivote a elementos de las diagonales//
for(f=d+1;f<dimension;f++)
{
aux=matrix[f][d];
for(c=0;c<dimension;c++)
{
matrix[f][c]=matrix[f][c]-(matrix[d][c]*(float)(aux/pivote));
}
}
}
}
float determinante(float matrix[100][100],int dimension)
{
int d;
float det=1;
for(d=0;d<dimension;d++)
{
det=det*matrix[d][d];
}
return det;
}