Documentos de Académico
Documentos de Profesional
Documentos de Cultura
(UNAN – LEÓN).
Fecha:16/10/20
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char cad[198][30];
int main() {
FILE *f,*fo;
int i,pos_menor;
char aux[40];
f=fopen("palabras.txt","r");
fo=fopen("palabras ordenadas Burbujas.txt","w");
if(f==NULL||fo==NULL){
printf("Error al abrir el fichero");
exit(-1);
}
if(pos_menor != i){
strcpy(aux,cad[i]);
strcpy(cad[i],cad[pos_menor]);
strcpy(cad[pos_menor],aux);
}
}
for(i=0;i<198;i++)
{
fprintf(fo,"%s",cad[i]);
}
fclose(fo);
fclose(f);
return 0;
for(;i<pos_sup;i++)
{
if(strcmp(cad[i],menor)<0)
{
strcpy(menor, cad[i]);
pos_menor=i;
}
}
return pos_menor;
}
4. Se tiene un fichero con una lista de contactos con los siguientes datos: Nombre
(método de la burbuja) Apellidos (inserción) Dirección (selección) Teléfono
(quicksort) Se le pide crear un programa que permita ordenar dichos contactos por medio
de uno los campos (elegido por el usuario)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct datos{
char nombre[20];
char apellido[20];
char direccion[50];
char numero[10];
};
FILE *fich;
if(fich==NULL){
perror("Error al abrir ");
exit(-1);
}
printf ("Cuantos contactos desea ingresar: ");
scanf ("%d",&N);
if(Dt==NULL){
perror("Error al abrir ");
exit(-1);
}
PedirDatos(N,Dt);
cond=seleccion();
switch(cond){
case 1:OrdenarNombre(N,Dt);break;
case 2:OrdenarApellido(N,Dt);break;
case 3:OrdenarDireccion(N,Dt);break;
case 4:OrdenarNumero(Dt,0,N-1);break;
}
for (i=0;i<N;i++){
fwrite(Dt[i].nombre,sizeof(char),20,fich);
fprintf(fich,"\n");
fwrite(Dt[i].apellido,sizeof(char),20,fich);
fprintf(fich,"\n");
fwrite(Dt[i].direccion,sizeof(char),50,fich);
fprintf(fich,"\n");
fwrite(Dt[i].numero,sizeof(char),10,fich);
fprintf(fich,"\n");
fprintf(fich,"\n");
}
fclose(fich);
free(Dt);
return 0;
}
do {
printf ("Bajo que informacion desea ordenar los datos\n");
printf ("1. NOMBRES (BURBUJA)\n");
printf ("2. APELLIDOS (INSERCION)\n");
printf ("3. DIRECCION (SELECCION)\n");
printf ("4. CELULAR (QUICKSORT)\n");
scanf ("%d",&resp);
} while(resp>5 || resp<0);
return resp;
}
void OrdenarNombre (int n,struct datos *D){
int i,j;
char aux[50];
for (j=1;j<n;j++) {
for (i=0;i<n-1;i++){
if (strcmp(D[i].nombre,D[i+1].nombre)>0) {
strcpy(aux,D[i].nombre);
strcpy(D[i].nombre,D[i+1].nombre);
strcpy(D[i+1].nombre,aux);
strcpy(aux,D[i].apellido);
strcpy(D[i].apellido,D[i+1].apellido);
strcpy(D[i+1].apellido,aux);
strcpy(aux,D[i].direccion);
strcpy(D[i].direccion,D[i+1].direccion);
strcpy(D[i+1].direccion,aux);
strcpy(aux,D[i].numero);
strcpy(D[i].numero,D[i+1].numero);
strcpy(D[i+1].numero,aux);
}
}
}
}
}
}
void OrdenarDireccion (int n,struct datos *D){
int minimo,i,j;
char aux[50];
for(i=0;i<n-1;i++) {
minimo=i;
for(j=i+1;j<n;j++){
if (strcmp(D[minimo].direccion,D[j].direccion)>0)
minimo=j;
}
strcpy(aux,D[minimo].apellido);
strcpy(D[minimo].apellido,D[i].apellido);
strcpy(D[i].apellido,aux);
strcpy(aux,D[minimo].nombre);
strcpy(D[minimo].nombre,D[i].nombre);
strcpy(D[i].nombre,aux);
strcpy(aux,D[minimo].direccion);
strcpy(D[minimo].direccion,D[i].direccion);
strcpy(D[i].direccion,aux);
strcpy(aux,D[minimo].numero);
strcpy(D[minimo].numero,D[i].numero);
strcpy(D[i].numero,aux);
}
}
void OrdenarNumero (struct datos *D,int inf,int sup){
int izq, der;
char x[50];
char mitad[10];
izq = inf; der = sup;
strcpy(mitad,D[(izq + der)/2].numero);
do{
while(strcmp(D[izq].numero,mitad)<0 && izq < sup) izq++;
while(strcmp(mitad,D[der].numero)<0 && der > inf) der--;
if(izq <= der){
strcpy(x,D[izq].numero);
strcpy(D[izq].numero,D[der].numero);
strcpy(D[der].numero,x);
strcpy(x,D[izq].nombre);
strcpy(D[izq].nombre,D[der].nombre);
strcpy(D[der].nombre,x);
strcpy(x,D[izq].apellido);
strcpy(D[izq].apellido,D[der].apellido);
strcpy(D[der].apellido,x);
strcpy(x,D[izq].direccion);
strcpy(D[izq].direccion,D[der].direccion);
strcpy(D[der].direccion,x);
izq++;
der--;
}
}while(izq <= der);
if(inf < der) OrdenarNumero (D, inf, der);
if(izq < sup) OrdenarNumero (D, izq, sup);
}