Continuando con las clases, en esta ocacion trataremos el tema de las estructuras en c++ .En esta clase les he preparado mucho material para que se entienda con profundidad el tema, incluyendo algunos tips para el ingreso de cadenas y la correcta forma de hacer búsquedas.
El uso incorrecto del fflush(stdin); y como compensar la manera de limpiar el buffer de entrada de teclado, todo esto podrán aprender en la clase de hoy, disfrútenla!
IMPORTANTE:para ver los videos en alta resolución, basta con abrirlos en youtube y seleccionar 720 px
- Parte 1 ( conceptos e ingreso [cin] ) -
- Parte 2 ( conceptos [fgets] y muestreo ) -
- Parte 3 ( limpieza del buffer y varios tips ) -
El código es el siguiente:
28.) Realizar una estructura de un estudiante, donde se pide:
Continuando con las clases en c++ en esta ocacion trataremos el tema de la manipulación de las cadenas de caracteres, o el como hacer operaciones sobre cadenas. Aquí les dejo dos videos hechos por mi, espero les sea de ayuda:
IMPORTANTE: para ver los videos en alta resolución, basta con abrirlos en youtube y seleccionar 720 px
- Parte 1 -
- Parte 2 -
El código es el siguiente:
27.) Operaciones basicas con cadenas de caracteres
#include <iostream.h>#include <string.h>#include <conio.h>void copia (char*,char*);void copian (char*,char*);void agrega (char*,char*);void agregan (char*,char*);void compara (char*,char*);void comparan (char*,char*);void longitud (char*);void ignora (char*,char*);void ignoran (char*,char*);void error ();void normalidad();char cadena1[80]="Programando paso A paso" , cadena2[50]=" el blog de Eddy";main(){A:cout<<"\n MANEJO DE CARACTERES EN C++ \n" <<"\n [ parte1 - operaciones basicas con cadenas ] \n\n" <<"\n cadena1 = \"Programando paso A paso\"\n" <<" cadena2 = \" el blog de Eddy\"\n\n\n";short opcion; cout<<"Seleccione una opcion: \n" <<"1) Strcpy (copia de caracteres) \n" <<"2) Strncpy (copia n caracteres) \n" <<"3) Strcat (agrega una cadena a otra) \n" <<"4) Strncat (agrega n caracteres de una cadena a otra) \n" <<"5) Strcmp (compara dos cadenas) \n" <<"6) Strncmp (compara los n caracteres de dos cadenas) \n" <<"7) Strlen (calcula la longitud de la cadena) \n" <<"8) Strcasecmp (version de strcmp que ignora las mayusculas/minusculas) \n" <<"9) Strncasecmp (ignora n caracteres de mayusculas y minusculas para comparar) \n" <<"10) Strerror (convierte un numero de error en mensaje) \n" <<"11) SALIR \n\n"; cin>>opcion;while (opcion<1 || opcion>11){ cout<<"[ERROR, digite una opcion valida]: "; cin>>opcion;}switch (opcion){ case 1: copia(cadena1,cadena2); break; case 2: copian(cadena1,cadena2); break; case 3: agrega(cadena1,cadena2); break; case 4: agregan(cadena1,cadena2); break; case 5: compara(cadena1,cadena2); break; case 6: comparan(cadena1,cadena2); break; case 7: longitud(cadena1); break; case 8: ignora(cadena1,cadena2); break; case 9: ignoran(cadena1,cadena2); break; case 10: error(); break; case 11: break;}if (opcion == 11) { system("pause"); }else { system ("cls"); goto A; }}void copia (char *cadena1, char *cadena2){ cout<<"\nHaciendo: strcpy ( cadena1,cadena2 );"; strcpy ( cadena1,cadena2 ); cout<<"\nLas cadenas quedaron: \ncadena1: "<<cadena1<<" \ncadena2: "<<cadena2; normalidad(); getch();}void copian (char *cadena1, char *cadena2){ cout<<"\nHaciendo: strncpy ( cadena2,cadena1,8 );"; strncpy ( cadena2,cadena1,8 ); cout<<"\nLas cadenas quedaron: \ncadena1: "<<cadena1<<" \ncadena2: "<<cadena2; normalidad(); getch();}void agrega (char *cadena1, char *cadena2){ cout<<"\nHaciendo: strcat ( cadena1,cadena2 );"; strcat ( cadena1,cadena2 ); cout<<"\nLas cadenas quedaron: \ncadena1: "<<cadena1<<" \ncadena2: "<<cadena2; normalidad(); getch();}void agregan (char *cadena1, char *cadena2){ cout<<"\nHaciendo: strncat ( cadena1,cadena2,14 );"; strncat ( cadena1,cadena2,14 ); cout<<"\nLas cadenas quedaron: \ncadena1: "<<cadena1<<" \ncadena2: "<<cadena2; normalidad(); getch();}void compara (char *cadena1, char *cadena2){ int respuesta; cout<<"\nHaciendo: strcmp ( cadena1,cadena2 );"; respuesta = strcmp ( cadena1,cadena2 ); cout<<"\nLa respuesta es: "<<respuesta; normalidad(); getch();}void comparan (char *cadena1, char *cadena2){ int respuesta; cout<<"\nHaciendo: strncmp ( cadena1,cadena2,3 );"; respuesta = strncmp ( cadena1,cadena2,3 ); cout<<"\nLa respuesta es: "<<respuesta; normalidad(); getch();}void longitud (char *cadena1){ int longitud; cout<<"\nHaciendo: strlen ( cadena1 );"; longitud = strlen ( cadena1 ); cout<<"\nLa longitud de la cadena es: "<<longitud; normalidad(); getch();}void ignora (char *cadena1, char *cadena2){ int respuesta; cout<<"\nHaciendo: strcasecmp ( cadena1,cadena2 );"; respuesta = strcasecmp ( cadena1,cadena2 ); cout<<"\nLa respuesta es: "<<respuesta; normalidad(); getch();}void ignoran (char *cadena1, char *cadena2){ int respuesta; cout<<"\nHaciendo: strncasecmp ( cadena1,cadena2,8 );"; respuesta = strncasecmp ( cadena1,cadena2,8 ); cout<<"\nLa respuesta es: "<<respuesta; normalidad(); getch();}void error (){ for (int x=0; x<6; x++) { cout<<strerror(x)<<endl; } getch();}void normalidad(){ strcpy ( cadena1,"Programando paso A paso" ); strcpy ( cadena2," el blog de Eddy" );}
Continuando con las clases en c++ en esta ocacion trataremos el tema de las funciones recursivas o procedimientos recursivos. Aquí les dejo dos videos hechos por mi, espero les sea de ayuda:
IMPORTANTE: para ver los videos en alta resolución, basta con abrirlos en youtube y seleccionar 720 px
- Parte 1 -
- Parte 2 -
El codigo es el siguiente:
26.) Funciones recursivas, realizar el factorial de un numero y mostrarlo por pantalla
#include <iostream.h>
int factorial_recursivo (int); int factorial_normal(int);
main()
{ int numero,respuesta;
cout<<”\n FACTORIAL DE UN NUMERO \n\n” <<”\n ingrese una cantidad: “; cin>>numero; while (numero<0) { cout<<”\n ERROR, aplicable solo a numeros naturales \n” <<” ingrese una cantidad: “; cin>>numero; } respuesta = factorial_normal(numero); //respuesta = factorial_recursivo(numero); cout<<”\n\n El factorial de “<<numero<<” es: “<<respuesta<<endl<<endl; system(“pause”); }
int factorial_recursivo (int viene) { if (viene == 0 || viene == 1) { cout<<viene; return 1; } else { cout<<viene<<” x “; return viene * factorial_recursivo(viene -1); } }
int factorial_normal(int viene) { if (viene == 0 || viene == 1) { return 1; } else { int x=viene , acumulador=1; // x va a tener el valor que viene for (x; x>=1; x–) { acumulador = acumulador * x; if (x>1) { cout<<x<<” x “; } else cout<<x; } return acumulador; } }