Trabajo Práctico Número 6: Cadenas de caracteres y estructuras

Aquí vas a encontrar algunos ejercicios de cómo son implementadas las Cadenas de Caracteres o strings y trabajar con estructuras en C/C++.

  • Manejo cadena de caracteres

Diseñe y codifique un programa que pueda realizar los siguientes procesos utilizando un menú que le permita al usuario escoger la acción a ejecutar:
  1. Capturar dos cadenas, concatenarlas y visualizar el resultado.
  2. Capturar dos cadenas e intercambiarlas.
  3. Capturar una cadena y pedir la búsqueda de una cadena en ella. Visualizar su posición.
  4. Capturar dos cadenas, compararlas y visualizarlas en orden.
  5. Capturar una cadena y visualizar su longitud.
  6. Capturar dos cadenas y copiar n caracteres de la primera en la segunda. Visualizar el resultado.
  7. Finalizar

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>
void conca();
void inter();
void busco();
void compara();
void longi();
void copia();
 
int main()
{
 
int op;
printf("***************MENU***************\n1:Concatenaci¢n\n2:Intercambio\n3:B£squeda y posici¢n de caracter\n4:Comparaci¢n y visualizaci¢n de orden\n5:Longitud\n
6:Copiar caracteres de una cadena a otra\n7:Salir\n***************MENU**************");
do
{
printf("\nElija opci¢n: ");
scanf("%d",&op);
fflush (stdin);
switch (op)
{
case 1:conca();break;
case 2:inter();break;
case 3:busco();break;
case 4:compara();break;
case 5:longi();break;
case 6:copia();break;
}
}
while (op!=7);
}
 
void conca (void)
{
char c1[50];
char c2[50];
system("cls");
printf("\nCargue la primer cadena: ");
gets(c1);
printf("\nCargue la segunda cadena: ");
gets(c2);
puts(c1);
puts(c2);
strcat(c1,c2);
printf("La concatenaci¢n resultante es : %s ",c1);
printf("\n***************MENU***************\n1:Concatenaci¢n\n2:Intercambio\n3:B£squeda y posici¢n de caracter\n4:Comparaci¢n y visualizaci¢n de orden\n5:Longitud\n
6:Copiar caracteres de una cadena a otra\n7:Salir\n***************MENU**************");
 
return;
}
void inter (void)
{
system("cls");
char c1[50];
char c2[50];
char c3[100];
char aux[100];
printf("\nCargue la primer cadena: ");
gets(c1);
strcpy(aux,c1);
fflush(stdin);
printf("\nCargue la segunda cadena: ");
gets(c2);
strcpy(c1,c2);
printf("\nCadena 1: %s", c1);
strcpy(c2,aux);
printf("\nCadena 2: %s", c2);
printf("\n***************MENU***************\n1:Concatenaci¢n\n2:Intercambio\n3:B£squeda y posici¢n de caracter\n4:Comparaci¢n y visualizaci¢n de orden\n5:Longitud\n
6:Copiar caracteres de una cadena a otra\n7:Salir\n***************MENU**************");
return;
}
void busco (void)
{
system("cls");
char c1[50];
char d[5]; int t;
printf("\nCargue la cadena: ");
gets(c1);
printf("\nElija el caracter o cadena que desea buscar de la cadena: ");
scanf("%s",&d);
t=strcspn(c1,d);
printf("\nLa ubicaci¢n del caracter buscado es: %d", t);
printf("\n***************MENU***************\n1:Concatenaci¢n\n2:Intercambio\n3:B£squeda y posici¢n de caracter\n4:Comparaci¢n y visualizaci¢n de orden\n5:Longitud\n
6:Copiar caracteres de una cadena a otra\n7:Salir\n***************MENU**************");
return;
}
void compara (void)
{
system("cls");
char c1[50];
char c2[50];
int m;
printf("\nCargue la primer cadena: ");
gets(c1);
printf("\nCargue la segunda cadena: ");
gets(c2);
m=strcmp(c1,c2);
if (m==0)
{
printf("\nLas cadenas son iguales");
}
if (m>0)
{
printf("\nCadena 1 es mayor que cadena 2: %s    %s", c1,c2);
 
}
if (m<0)
{
printf("\nCadena 2 es mayor que cadena 1: %s    %s", c2,c1);
}
printf("\n***************MENU***************\n1:Concatenaci¢n\n2:Intercambio\n3:B£squeda y posici¢n de caracter\n4:Comparaci¢n y visualizaci¢n de orden\n5:Longitud\n
6:Copiar caracteres de una cadena a otra\n7:Salir\n***************MENU**************");
return;
}
void longi (void)
{
system("cls");
char c1[50];
char c2[50];
int p, q;
printf("\nCargue la primer cadena: ");
gets(c1);
printf("\nCargue la segunda cadena: ");
gets(c2);
p=strlen(c1);
printf("\nLa longitud de la cadena uno es: %d",p);
q=strlen(c2);
printf("\nLa longitud de la cadena dos es: %d",q);
printf("\n***************MENU***************\n1:Concatenaci¢n\n2:Intercambio\n3:B£squeda y posici¢n de caracter\n4:Comparaci¢n y visualizaci¢n de orden\n5:Longitud\n
6:Copiar caracteres de una cadena a otra\n7:Salir\n***************MENU**************");
 
return;
}
void copia (void)
{
system("cls");
char c1[50];
char c2[50];
int y;
printf("\nCargue la primer cadena: ");
gets(c1);
printf("\nCargue la segunda cadena: ");
gets(c2);
printf("\nIndique la cantidad de caracteres que desea copiar de la cadena uno a la dos: ");
scanf("%d", &y);
strncpy(c2, c1, y);
printf("\nLa cadena resultante es: %s",c2);
printf("\n***************MENU***************\n1:Concatenaci¢n\n2:Intercambio\n3:B£squeda y posici¢n de caracter\n4:Comparaci¢n y visualizaci¢n de orden\n5:Longitud\n
6:Copiar caracteres de una cadena a otra\n7:Salir\n***************MENU**************");
return;
}
 
  • Manejo de array de estructura

Programa que almacena en memoria los datos de 10 artículos y los visualiza.
#include<stdio.h>
#include<string.h>
int fmenu(void);
void finicializa(void);
void fvisualiza(void);
void fconsulta(char code);
struct articulos
{
char codigo;
char nom[15];
int precio;
}var[10];
int main()
{
int opcion,flag;
char res,code;
do
{
opcion=fmenu();
switch(opcion)
{
case 1:{
finicializa();
flag=1;
}
break;
case 2:if (flag!=1)
puts("Primero hay que inicializar la estructura\n");
else
fvisualiza();
break;
case 3:if (flag!=1)
puts("Primero hay que inicializar la estructura\n");
else
{
do
{
puts("Introduzca el codigo del articulo a buscar\n");
fflush(stdin);
code=getchar();
fconsulta(code);
puts("Desea conocer datos de otro articulo?\n");
fflush(stdin);
res=getchar();
}
while(res=='s' || res=='S');
}
break;
case 4:break;
}
}
while(opcion!=4);
}
int fmenu(void)
{
int opcion;
puts("ESTE PROGRAMA REALIZA LOS SIGUIENTES PROCESOS\n");
puts("---------------------------------------------------------------\n");
puts("1.-Toma de consola y guarda en memoria los datos de codigo, nombre y precio de los 10 articulos\n");
puts("2.-Visualiza los datos guardados en la memoria de los articulos\n");
puts("3.-Permite consultas sucesivas de los articulos\n");
puts("4.-Finaliza\n");
puts("Elija la opcion deseada\n");
scanf("%d",&opcion);
return(opcion);
}
void finicializa(void)
{
int i,j;
puts("Inicializando estructura:\n");
for(i=0;i<10;i++)
{
j=i+1;
printf("Teclee codigo del %dº articulo:\n",j);
fflush(stdin);
(var[i]).codigo=getchar();
printf("Teclee nombre del %dº articulo:\n",j);
fflush(stdin);
gets((var[i]).nom);
printf("Teclee precio del %dº articulo:\n",j);
scanf("%d",&(var[i]).precio);
}
}
void fvisualiza(void)
{
int i;
char pausa;
puts("\t\t\t LISTADO DE PRECIOS");
puts("\t\t\t ---------------------------------");
puts("");
puts("CODIGO\tNOMBRE\t\tPRECIO");
puts("------------\t--------------\t\t-----------");
for (i=0;i<10;i++)
{
printf("%c\t%s\t\t%d\n",var[i].codigo,var[i].nom,var[i].precio);
}
puts("");
puts("Pulse INTRO para continuar\n");
fflush(stdin);
pausa=getchar();
}
void fconsulta(char code)
{
int i;
char pausa;
i=0;
while((var[i]).codigo!=code && i<10)
i++;
if ((var[i]).codigo==code)
printf("El codigo %c corresponde a %s con precio %d ptas\n",code,(var[i]).nom,(var[i]).precio);
else puts("El codigo no esta registrado\n");
puts("Pulse INTRO para continuar\n");
fflush(stdin);
pausa=getchar();
}