Ejercicios Resueltos de Programación en C: Manipulación de Datos y Estructuras

Clasificado en Informática

Escrito el en español con un tamaño de 4,51 KB

Ejercicios Resueltos de Programación en C

Separar Nombre y Apellido

Se ingresa por teclado el nombre y apellido de una persona en alguna de las siguientes formas:

  • Nombre Apellido
  • Apellido, Nombre

El programa deberá separar el nombre y el apellido en distintos vectores y luego mostrarlos en pantalla.

#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main() {
 char nomcomp[50];
 char nombre[30];
 char apellido[30];

 int a = 0, j = 0;
 memset(nomcomp, '\0', sizeof(nomcomp));
 memset(apellido, '\0', sizeof(apellido));
 memset(nombre, '\0', sizeof(nombre));

 printf("Ingrese un nombre completo \n");
 fflush(stdin);
 gets(nomcomp);

 while (nomcomp[a] != ' ') {
 nombre[a] = nomcomp[a];
 a++;

 if (tolower(nomcomp[a]) != nomcomp[a]) {
 if (tolower(nomcomp[a - 1]) == nomcomp[a - 1]) {
 a--;
 break;
 }
 }
 }

 while (a < strlen(nomcomp)) {
 a++;
 apellido[j] = nomcomp[a];
 j++;
 }

 printf("El nombre es %s y el apellido es %s ", nombre, apellido);
 getchar();

 return 0;
}

Ordenar Nombres Alfabéticamente

Ingresar 10 nombres, ordenarlos de la A-Z y listarlos.

#include <stdio.h>
#include <string.h>

int main() {
 char nombres[10][10];
 char temp[10];
 int i, j, k, l;

 for (i = 0; i < 10; i++) {
 printf("Ingresar un nombre \n");
 fflush(stdin);
 gets(nombres[i]);
 }

 for (j = 1; j < 10; j++) {
 for (k = 0; k < j; k++) {
 if (strcmp(nombres[j], nombres[k]) < 0) {
 strcpy(temp, nombres[j]);
 strcpy(nombres[j], nombres[k]);
 strcpy(nombres[k], temp);
 }
 }
 }

 for (l = 0; l < 10; l++)
 printf("%s \n", nombres[l]);
 fflush(stdin);
 getchar();

 return 0;
}

Insertar Valores Numéricos en Vector Ordenado

Insertar valores numéricos en un vector de diez números ordenados previamente. Luego de cada inserción, listar los valores.

#include <string.h>
#include <stdio.h>

int main() {
 int i, j, k, l, m = 0, n, temp, ins, v0, flag = 0, valor[30];
 char vsal;
 int vsize = 10;  // Inicializar el tamaño del vector

 for (i = 0; i < 10; i++) {
 printf("Ingresar 10 valores (Faltan %d) ", 10 - i);
 scanf("%d", &valor[i]);
 }

 for (j = 1; j < 10; j++) {
 for (k = 0; k < j; k++) {
 if (valor[j] < valor[k]) {
 temp = valor[j];
 valor[j] = valor[k];
 valor[k] = temp;
 }
 }
 }

 do {
 printf("Ingrese el valor a insertar: ");
 scanf("%d", &ins);

 m = 0;
 flag = 0;
 vsize++;

 do {
 if (valor[m] > ins || valor[m] == '\0')
 flag = 1;
 m++;
 } while (flag == 0);

 m--;
 for (n = vsize; n >= m; n--) {
 if (n == m)
 valor[n] = ins;
 else
 valor[n] = valor[n - 1];
 }

 for (l = 0; l < vsize; l++)
 printf("%d \n", valor[l]);

 printf("Desea salir (S/N)? \n");
 fflush(stdin);
 scanf(" %c", &vsal);

 } while (vsal != 's');

 return 0;
}

Cargar y Ordenar Vector de Estructuras

Cargar un vector de estructuras, ordenarlo de A-Z y luego poder insertar datos.

#include <string.h>
#include <stdio.h>

int main() {
 int i, j, k, tempnum, edadins, m, flag, v0, n, l;
 struct datos {
 char nombre[80];
 int edad;
 };

 char temp[80], nombreins[80], vsal;
 struct datos vector[20];
 int vsize = 10; // Inicializar el tamaño del vector

 for (i = 0; i < 10; i++) {
 printf("Ingrese un nombre \n");
 fflush(stdin);
 gets(vector[i].nombre);
 printf("Ingrese la edad \n");
 scanf("%d", &vector[i].edad);
 }

 for (j = 1; j < 10; j++) {
 for (k = 0; k < j; k++) {
 if (strcmp(vector[j].nombre, vector[k].nombre) < 0) {
 strcpy(temp, vector[j].nombre);
 strcpy(vector[j].nombre, vector[k].nombre);
 strcpy(vector[k].nombre, temp);
 tempnum = vector[j].edad;
 vector[j].edad = vector[k].edad;
 vector[k].edad = tempnum;
 }
 }
 }

 strcpy(vector[10].nombre, "");

 do {
 printf("Ingrese el nombre a insertar: ");
 fflush(stdin);
 gets(nombreins);
 printf("Ingrese la edad: ");
 scanf("%d", &edadins);

 m = 0;
 flag = 0;
 vsize++;

 do {
 if (strcmp(vector[m].nombre, nombreins) > 0 || strcmp(vector[m].nombre, "") == 0)
 flag = 1;
 m++;
 } while (flag == 0);

 m--;
 for (n = vsize; n >= m; n--) {
 if (n == m) {
 strcpy(vector[n].nombre, nombreins);
 vector[n].edad = edadins;
 }
 else {
 strcpy(vector[n].nombre, vector[n - 1].nombre);
 vector[n].edad = vector[n - 1].edad;
 }
 }

 for (l = 0; l < vsize; l++)
 printf("%s %d\n", vector[l].nombre, vector[l].edad);

 printf("Desea salir (S/N)? \n");
 fflush(stdin);
 scanf(" %c", &vsal);

 } while (vsal != 's');

 return 0;
}

Entradas relacionadas: