Otra vez sin captura, mucho codigo, que no cabe en 1 foto:
/*2. Escriba un programa en el que se rellene una matriz 4 × 4 con las
iniciales de sus nombre y apellidos al azar. Utilice reserva dinámica de memoria
y notación de punteros.*/
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
void rellena_matriz(char *matriz[]){
int fil,col;
//Se reserva la memoria
for(col=0;col<4;col++)
matriz[col]=(char *)malloc(4*sizeof(char));
//Rellenamos la matriz
for(fil=0;fil<4;fil++)
for(col=0;col<4;col++){
*(*(matriz+col)+fil)='*';
}
return;
}
void pinta_matriz(char *matriz[]){
int fil,col;
for(fil=0;fil<4;fil++){
for(col=0;col<4;col++)
printf(" %c",*(*(matriz+col)+fil));
printf("\n");
}
return;
}
void poner_iniciales(char *matriz[],char nombre[],char apellido1[],char apellido2[]){
char iniciales[3];
int cont,fil,col;
iniciales[0]=nombre[0];
iniciales[1]=apellido1[0];
iniciales[2]=apellido2[0];
for(cont=0;cont<3;cont++){
fil=rand()%4;
col=rand()%4;
*(*(matriz+col)+fil)=iniciales[cont];
}
return;
}
main(){
char *matriz[4],nombre[30],apellido1[30],apellido2[30];
long tiempo;
tiempo=time(0);
srand(tiempo);
rellena_matriz(matriz);
pinta_matriz(matriz);
printf("\nNombre: ");
scanf(" %s",nombre);
printf("\nApellido1: ");
scanf(" %s",apellido1);
printf("\nApellido2: ");
scanf(" %s",apellido2);
poner_iniciales(matriz,nombre,apellido1,apellido2);
pinta_matriz(matriz);
getchar();
getchar();
}
Y otro mas:
/*4.Para representar la ubicación de los alumnos en un aula se decide
declarar una matriz 4 × 4 de punteros a caracteres. Cada puntero de la matriz
apuntará al nombre de un alumno. Añada una función que reciba los nombres de dos
alumnos e intercambie sus posiciones.*/
#include<stdio.h>
#include<string.h>
#define N 3
typedef struct{
int fila;
int columna;
}coordenadas;
void rellenar_clase(char *alumnos[][N]){
int fil,col,longitud;
char aux[40];
for(fil=0;fil<N;fil++)
for(col=0;col<N;col++){
printf("\nAlumno (%d,%d): ",fil,col);
scanf(" %[^\n]",aux);
longitud=strlen(aux);
alumnos[fil][col]=(char *) malloc(longitud*sizeof(char));
strcpy(alumnos[fil][col],aux);
printf("\nAcabo de leer: %s",alumnos[fil][col]);
}
return;
}
void mostrar_clase(char *alumnos[][N]){
int fil,col;
printf("\n****LA CLASE*********\n");
for(fil=0;fil<N;fil++){
for(col=0;col<N;col++)
printf("\t%s",alumnos[fil][col]);
printf("\n");
}
return;
}
void intercambiar_alumnos(char *alumnos[][N],char nombre1[],char nombre2[]){
int fil,col;
coordenadas posicion1,posicion2;
char *aux_nombre;
for(fil=0;fil<N;fil++)
for(col=0;col<N;col++){
if(strcmp(nombre1,alumnos[fil][col])==0){
posicion1.fila=fil;
posicion1.columna=col;
}
if(strcmp(nombre2,alumnos[fil][col])==0){
posicion2.fila=fil;
posicion2.columna=col;
}
}
aux_nombre=alumnos[posicion1.fila][posicion1.columna];
alumnos[posicion1.fila][posicion1.columna]=alumnos[posicion2.fila][posicion2.columna];
alumnos[posicion2.fila][posicion2.columna]=aux_nombre;
}
main(){
char *alumnos[N][N];
char nombre1[40],nombre2[40];
rellenar_clase(alumnos);
mostrar_clase(alumnos);
printf("\nIntroduce los nombres de los alumnos que quieres intercmabiar: ");
printf("\nAlumno 1: ");
scanf(" %[^\n]",nombre1);
printf("\nAlumno 2: ");
scanf(" %[^\n]",nombre2);
intercambiar_alumnos(alumnos,nombre1,nombre2);
mostrar_clase(alumnos);
getchar();
getchar();
}
No hay comentarios:
Publicar un comentario