Está en la página 1de 15

// Ejercicio 105 #include<stdio.

h> void lectura (int matriz[][4]); void escribir (int matriz[][4],int fila, int columna,int nuevo_valor); void imprimir (int matriz[][4]); void borrar (int matriz[][4]); void suma (int matriz1[][4],int matriz2[][4]); void multiplica (int matriz1[][4],int matriz2[][4]); void traspuesta (int matriz[][4]); void main(void){ int opcion, matriz1[4][4],matriz2[4][4],fila,columna,nuevo_valor,opcion_matriz; do{ printf("\nElija una opcion:\n"); printf("1. Leer una matriz.\n"); printf("2. Modificar la posicion de una matriz.\n"); printf("3. Imprimir una matriz.\n"); printf("4. Borrar una matriz.\n"); printf("5. Sumar dos matrices.\n"); printf("6. Multiplicar dos matrices.\n"); printf("7. Trasponer una matriz.\n"); printf("8. Salir del programa.\n"); scanf("%d",&opcion); switch(opcion){ case 1: printf("Elija la matriz que quiera leer:\n"); printf("1. Matriz1\n"); printf("2. Matriz2\n");

scanf("%d",&opcion_matriz); if(opcion_matriz==1)lectura(matriz1); if(opcion_matriz==2)lectura(matriz2); break; case 2: printf("Matriz a modificar:\n"); printf("1. Matriz1\n"); printf("2. Matriz2\n"); scanf("%d",&opcion_matriz); printf("Columna a modificar:\n"); scanf("%d",&columna); printf("Fila a modificar:\n"); scanf("%d",&fila); printf("Nuevo valor:\n"); scanf("%d",&nuevo_valor); if(opcion_matriz==1) escribir(matriz1,fila,columna,nuevo_valor); if(opcion_matriz==2) escribir(matriz2,fila,columna,nuevo_valor); break; case 3: printf("Matriz a imprimir:\n"); printf("1. Matriz1\n"); printf("2. Matriz2\n"); scanf("%d",&opcion_matriz); if(opcion_matriz==1) imprimir(matriz1);

if(opcion_matriz==2) imprimir(matriz2); break; case 4: printf("Matriz a borrar:\n"); printf("1. Matriz1\n"); printf("2. Matriz2\n"); scanf("%d",&opcion_matriz); if(opcion_matriz==1) borrar(matriz1); if(opcion_matriz==2) borrar(matriz2); break; case 5: suma(matriz1,matriz2); imprimir(matriz1); break; case 6: multiplica(matriz1,matriz2); imprimir(matriz1); break; case 7: printf("Matriz a trasponer:\n"); printf("1. Matriz1\n"); printf("2. Matriz2\n"); scanf("%d",&opcion_matriz); if(opcion_matriz==1) {

traspuesta(matriz1); imprimir(matriz1); } if(opcion_matriz==2) { traspuesta(matriz2); imprimir(matriz2); } break; case 8: break; default: printf("Opcion incorrecta.\n"); break; } } while(opcion!=8); } void lectura(int matriz[][4]){ int i,j; for(i=0;i<4;i++){ for(j=0;j<4;j++){ printf("Introduzca el elemento %d %d\n",i+1,j+1); scanf("%d",&matriz[i][j]); } } } void escribir(int matriz[][4],int fila, int columna,int nuevo_valor){ matriz[fila-1][columna-1]=nuevo_valor;

} void imprimir(int matriz[][4]){ int i,j; for(i=0;i<4;i++){ for(j=0;j<4;j++) printf("%d\t",matriz[i][j]); printf("\n"); } } void borrar(int matriz[][4]){ int i,j; for(i=0;i<4;i++) for(j=0;j<4;j++) matriz[i][j]=0; } void suma (int matriz1[][4],int matriz2[][4]){ int i,j; for(i=0;i<4;i++) for(j=0;j<4;j++) matriz1[i][j]=matriz1[i][j]+matriz2[i][j]; } void multiplica (int matriz1[][4],int matriz2[][4]){ int i,j,matriz_auxiliar[4][4],suma,k; for(k=0;k<4;k++){ for(i=0;i<4;i++){ suma=0; for(j=0;j<4;j++) suma=suma+matriz1[k][j]*matriz2[j][i]; matriz_auxiliar[k][i]=suma; } }

for(i=0;i<4;i++){ for(j=0;j<4;j++) matriz1[i][j]=matriz_auxiliar[i][j]; } } void traspuesta (int matriz[][4]){ int i,j,traspuesta[4][4]; for(i=0;i<4;i++) for(j=0;j<4;j++) traspuesta[i][j]=matriz[j][i]; for(i=0;i<4;i++) for(j=0;j<4;j++) matriz[i][j]=traspuesta[i][j]; }

//Ejercicio 2 propuesto en clase del 29-11-2011

Se pide: a. Definir en el programa principal una matriz de 4x4 elementos de tipo caracter. b. Hacer una funcin que, a partir de la matriz caracteres de 4x4 devuelva, almacenadas en vectores, la diagonal principal por un lado y la diagonal secundaria por otro. c. Hacer una funcin que devuelva la suma y el producto de los elementos del vector de caracteres. d. Hacer una funcin que, dado un vector de caracteres, devuelva dicho vector convertido en cadena de caracteres. e. Hacer una funcin que dados dos vectores, nos devuelva el mayor elemento contenido en ambos vectores.

#include <stdio.h> void diagonal( char m[4][4], char vector1[4], char vector2[4]); void sumaproducto( char vector[4], int *suma, int *producto); void encadena( char vector[4], char cadena[5]); char maximo ( char vector1[4], char vector2[4]); void main ( void ){ int i,j; int suma=0,producto=1; char m[4][4],vector1[4],vector2[4],cadena[5],max; for (i=0;i<4;i++){ for (j=0;j<4;j++){ printf( "\nDame el valor %d%d: " ,i,j); scanf( "%c" ,&m[i][j]); getchar();} } for (i=0;i<4;i++){ for (j=0;j<4;j++){ printf( "%c\t" ,m[i][j]);}

printf( "\n" ); } printf( "\n" ); diagonal(m,vector1,vector2); printf( "La diagonal principal es:" ); for (i=0;i<4;i++){ printf( "%c" ,vector1[i]);} printf( "\n" ); printf( "La diagonal secundaria es:" ); for (i=0;i<4;i++){ printf( "%c" ,vector2[i]);} printf( "\n\n" ); sumaproducto(vector1,&suma,&producto); printf( "la suma de los elementos del vector diagonal principal es:" ); printf( "%d\n" ,suma); printf( "El producto de los elementos del vector diagonal principal es:" ); printf( "%d\n\n" ,producto); printf( "El vector diagonal principal convertido en cadena de caracteres:" ); encadena(vector1,cadena); puts(cadena); printf( "\n" ); max=maximo(vector1,vector2); printf( "El mayor elemento contenido en ambos vectores es %c\n" ,max); } void diagonal( char m[4][4], char vector1[4], char vector2[4]){ int i,j; char c;

j=0; for (i=0;i<4;i++){ vector1[i]=m[i][j]; j++;} j=3; for (i=0;i<4;i++){ vector2[i]=m[i][j]; j--;} } void sumaproducto( char vector[4], int *suma, int *producto){ int i; for (i=0;i<4;i++){ *suma=*suma+vector[i]; } for (i=0;i<4;i++){ *producto=*producto*vector[i]; } } void encadena( char vector[4], char cadena[5]){ int i; for (i=0;i<4;i++){ cadena[i]=vector[i];} cadena[4]= '\0' ; } char maximo ( char vector1[4], char vector2[4]){ int i; char maximo= '\0' ;

for (i=0;i<4;i++){ if (vector1[i]>maximo){ maximo=vector1[i]; } } for (i=0;i<4;i++){ if (vector2[i]>maximo){ maximo=vector2[i]; } } return maximo; }

//Ejercicio 1 propuesto en clase del 29-11-2011 #include <stdio.h> void concatena( char cadena1[50], char cadena2[50], char cadena3[99]); void main ( void ){ char cadena1[50],cadena2[50],cadena3[99]; printf( "Escribe una palabra:\n" ); scanf( "%s" ,cadena1); printf( "Escribe otra palabra:\n" ); scanf( "%s" ,cadena2); concatena(cadena1,cadena2,cadena3); printf( "%s\n" ,cadena3); } void concatena( char cadena1[50], char cadena2[50], char cadena3[99]){ int i,j=0,k; while (cadena1[j]!=0){ j=j++;} for (i=0;i<=j;i++){ cadena3[i]=cadena1[i]; }

k=0; while (cadena2[k]!=0){ k=k++;} for (i=0;i<=k;i++){ cadena3[i+j]=cadena2[i]; } }

//Ejercicio 96 include <stdio.h> #include <string.h> int compara( char cadena_1[], char cadena_2[]); int suma( char cadena[]); void main( void ){ char cadena_1[255],cadena_2[255]; int resultado; printf( "Dame la cadena primera:\n" ); gets(cadena_1); printf( "Dame la cadena segunda:\n" ); gets(cadena_2); resultado=compara(cadena_1,cadena_2); if (resultado==1){ printf( "Las dos cadenas son iguales\n" );} else if (resultado==2) printf( "Las cadenas no son iguales y la cadena primera es mayor que la segunda\n" ); else if (resultado==3)

printf( "Las cadenas no son iguales y la cadena segunda es mayor que la primera\n" ); } int compara( char cadena_1[], char cadena_2[]){ int i=0,j=0,a,valor_1,valor_2; while (cadena_1[i]!= '\0' ){ i++;} while (cadena_2[j]!= '\0' ){ j++;} if (i==j){ for (a=0;a<i;a++){ if (cadena_1[a]!=cadena_2[a]){ valor_1=suma(cadena_1); valor_2=suma(cadena_2); if (valor_1>valor_2) return 2; else return 3; } } return 1; } else { valor_1=suma(cadena_1); valor_2=suma(cadena_2); if (valor_1>valor_2) return 2; else return 3; } }

int suma( char cadena[]){ int i=0,a,valor=0; while (cadena[i]!= '\0' ){ i++;} for (a=0;a<i;a++){ valor=valor+cadena[a]; } return valor; } //Ejercicio 74 #include <stdio.h> #include <math.h> void leer_polinomio( double poli[]); void imprimir_polinomio( double poli[]); double valor_polinomio( double poli[], double x); void derivada_polinomio( double poli[], double derivada[]); void main ( void ){ double poli[3], derivada[2],x; double R; int opcion; leer_polinomio(poli); imprimir_polinomio(poli); printf( "\n\nDame el valor de x: " ); scanf( "%lf" ,&x); R=valor_polinomio(poli,x); printf( "\n\nEl valor del polinomio es: %f" ,R); derivada_polinomio(poli,derivada);

printf( "\n\nLa derivada es: (%f)x + (%f)\n" ,derivada[0],derivada[1]); } void leer_polinomio( double poli[]){ printf( "\nDime el valor de a: " ); scanf( "%lf" ,&poli[0]); getchar(); printf( "\nDime el valor de b: " ); scanf( "%lf" ,&poli[1]); getchar(); printf( "\nDime el valor de c: " ); scanf( "%lf" ,&poli[2]); getchar(); } void imprimir_polinomio( double poli[]){ printf( "El ultimo polinomio es : (%f)x^2 + (%f)x + %f\n" ,poli[0],poli[1],poli[2]); } double valor_polinomio( double poli[], double x, double *s1){ double resultado; resultado=(poli[0]*x*x)+(poli[1]*x)+poli[2]; return resultado; } void derivada_polinomio( double poli[], double derivada[]){ derivada[0]=2*poli[0]; derivada[1]=poli[1]; }