martes, 8 de diciembre de 2015

ARREGLOS EN C++

014  ARREGLOS EN C / C++
Actualizado 2020
Ing, Honoria Reyes Macedo

Arreglos son un conjunto de datos que se almacenan de forma contigua con el mismo nombre y mismo tipo de datos. Se hace referencia a los dartos mediante un indice encerrado entre corchetes.
Hay arreglos de una dimensión (llamados tambien vectores), y los arreglos de 2 dimensiones llamados matrices

1.-     Funciones para implementar en un programa de manejo de arreglos

a)
void arregloUnidInicializado(){
    //Ejemplo de un arreglo de una dimension inicializado
    int numero;
    //Cuando el arreglo esta inicializado, no es obligatorio especificar el tamaño para la primer dimensión
    //Declarar el arreglo inicializandolo con datos de tipo string
    string arreglo002[]={"LUNES","MARTES","MIERCOLES","JUEVES","VIERNES","SABADO","DOMINGO"};
    cout<< "QUE NUMERO DE DIA QUIERES?:";
    cin>> numero;
    cout <<"El dia es: "<< arreglo002[numero-1] <<endl;
}

b)
void arregloUnidLLenar(){
    //Ejemplo del llenado de un arreglo de una dimension
    double valor;
    double calificaciones[3]; //Declarar el arreglo con longitud de 3
    //Llenado del arreglo, recorriendo cada posicion
    for(int i=0; i<3;i++){
        cout <<"INTRODUCE CALIFICACION EN EL INDICE [" <<i <<"]:";
        cin>> valor;
        calificaciones[i]=valor;
    }
    cout<<"Tengo en el indice [1]: " << calificaciones[1] <<endl;
    cout<<"Tengo en el indice [2]: " << calificaciones[2] <<endl;

}

c)
void arregloMultiInicializado(){
    // Ejemplo de un arreglo de 2 dimensiones inicializado
    int indice1,indice2;
    //Declarar el Arreglo con 2 filas y 3 columnas, e inicializarlo con datos tipo double
    double arreglo003[2][3]={2.4, 3.7, 6.8,
                                                     9.6, 5.9, 9.8};

    cout<< "TIENES UNA MATRIZ DE 2X3, QUE INDICE QUIERES?:";
    cin>> indice1 >>indice2;
    cout <<"El valor en ese indice es= "<< arreglo003[indice1][indice2] <<endl;

}

d)
void arregloMultiLlenar(){
    //Ejemplo del llenado de un arreglo de 2 dimensiones
    int valor;
    int arreglo004[3][2];                       // Declarar el arreglo con 3 filas y 2 columnas
    //Recorrer primero una por una las filas
    for(int i=0; i<3; i++){
        //Recorrer las dos columnas en la fila
        for(int j=0; j<2; j++){
            cout <<"INTRODUCE UN ENTERO EN EL INDICE [ " <<i <<"][ " <<j <<" ]=";
            cin>> valor;
            arreglo004[i][j]=valor;
        }
    }
    cout<<"Tengo en el indice [1][1]= " << arreglo004[1][1] <<endl;
    cout<<"Tengo en el indice [2][1]= " << arreglo004[2][1] <<endl;
}


e)
void comparaOrdenando(){
   // Ejemplo de ordenar un arreglo inicializado tipo string
    //                                0                1             2              3                4
    string  nombres[]={"Magda","Laura","Angelica","Raquel","Benito"};
    string auxiliar;
   // Ordena de dos en dos
    if(nombres[0] > nombres[1]){
       auxiliar= nombres[0];
       nombres[0] = nombres[1];
       nombres[1] = auxiliar;
    }
    if(nombres[1] > nombres[2] ){
       auxiliar = nombres[1];
       nombres[1] = nombres[2];
       nombres[2] =auxiliar;
    }
    if(nombres[2] > nombres[3] ){
       auxiliar = nombres[2];
       nombres[2] = nombres[3];
       nombres[3] = auxiliar;
    }
    if(nombres[3] > nombres[4] ){
       auxiliar = nombres[3];
       nombres[3] = nombres[4];
       nombres[4] = auxiliar;
    }

    // Para que quede totalmente ordenado
   // Vuelve a empezar pero termina en la posicion 3, y
   // Vuelve a empezar pero termina en la posicion 2, y
   // Vuelve a empezar pero termina en la posicion 1, y

   // Al final mostrar el resultado
    cout <<"Mi Arreglo queda asi:{ " << nombres[0] <<" , "<< nombres[1]<<" , "
        << nombres[2] <<" , " << nombres[3] <<" , "<< nombres[4] <<" }" <<endl;


}


//Como pondrias el proceso de ordenar, usando  ciclos de control para no repetir lo mismo?


f)
        





    g)
        








-------------------0--0--------------------------------------
----------------000--000-----------------------------------

CADENAS EN C++

013  CADENAS EN C / C++
Ing, Honoria Reyes Macedo

Para manipular cadenas de texto existen diferentes funciones incluidas en la biblioteca <string.h>. A continuación se listan algunas de dichas funciones

Strchr             Busca un carácter en una cadena
Strstr               Busca una cadena en otra cadena y retorna un puntero(direccion de su ubicacion)
Strcmp            Compara los primeros caracteres de una cadena con los primeros caracteres de otra cadena
Strcmpi           Compara los primeros caracteres de una cadena con los primeros caracteres de otra cadena(No importan si son mayusculas o minusculas)
Strcat              Concatena dos cadenas
Strcpy             Reemplaza una cadena por otra
Strlwr              Convierte a minusculas una cadena
Strrev              Invierte el orden de los caracteres en una cadena
Strupr             Convierte a mayusculas una cadena
Strlen              Indica la longitud de una cadena
Strtok             Segmenta una cadena
Strset              Cambia los caracteres de una cadena por otro caracter


Ejemplo de manejo de cadenas

#include <iostream>
#include <string.h>
using namespace std;
void cadenaString();
void cadenasChar();

int main(){
    cadenasChar();
    cadenaString();
    return 0;
}

void cadenasChar(){
    char cadena1[50];
    char cadena2[50];
    char *chrbuscaDir;
    char *chrbuscaStr;
    int comparar;

    cout << "Ingresar cadena 1: ";
    cin.getline(cadena1,50,'\n');    //Define el tamaño/
    cout << "Ingresar cadena 2: ";
    cin.getline(cadena2,50,'\n');    //Define el tamaño/

    //Ejemplo de strchr
    chrbuscaDir=strchr(cadena1,'r'); //Busca el caracter indicado
    if (chrbuscaDir!=NULL){
        cout <<"Corta en donde encuentra la r= " << strchr(cadena1,'r') +1 << endl<< endl;
        cout <<"Primera posicion en donde se encuentra la r= " << chrbuscaDir-cadena1+1  << endl<< endl;
    }
    //Ejemplo de strstr
    chrbuscaStr=strstr(cadena1, cadena2);  //Busca la cadena2
    if (chrbuscaStr!=NULL){
        cout<< "Encontro la cadena2= " <<chrbuscaStr << endl << endl;
    }

    //Ejemplo de strcmp y strcmpi
    comparar=strcmp(cadena1,cadena2);   //Si importa si son minusculas o mayusculas
    comparar=strcmpi(cadena1,cadena2);  //No importa si son minusculas o mayusculas

    cout <<"comparar= "<< comparar <<" ";
    if (comparar>0) cout <<"cadena1 es MAYOR  que cadena2" << endl << endl;
    else if (comparar<0) cout <<"cadena1 es MENOR  que cadena2"  << endl << endl;
    else if (comparar==0) cout <<"cadena1 es IGUAL que cadena2" << endl << endl;

    //Ejemplo de strcat
    strcat(cadena1, cadena2);   //Concatena dos cadenas
    cout <<"Cadena1 concatenada= "<< cadena1 << endl << endl;

    //Ejemplo de strcpy
    strcpy(cadena1, cadena2); //reemplaza cadena2 encima de cadena1
    cout <<"Cadena1 reemplazada= "<< cadena1 << endl << endl;

    //Ejemplo de strlwr
    cout <<"Convierte a minusculas= " <<strlwr (cadena1) << endl <<endl;

    //Ejemplo de strrev
    cout <<"Invierte la cadena= " <<strrev (cadena1) << endl <<endl;

    //Ejemplo de strupr
    cout <<"Convierte a Mayusculas= " <<strupr (cadena1) << endl <<endl;


    //Ejemplo de strlen
    cout <<"Longitud de caracteres= " <<strlen (cadena1) << endl <<endl;

   //Ejemplo de strtok
      chrbuscaStr = strtok(cadena1," ");  //Segmenta en donde hay espacios y pone el marcador NULL
      chrbuscaStr = strtok(NULL, " ");
      cout << "Token= " << chrbuscaStr << endl << endl;

  //Ejemplo de strset
    cout <<"Cambia los caracteres por la letra a= " <<strset (cadena1,'a') << endl <<endl;

}

void cadenaString(){

    string cad1, cad2;
    cout << "Ingresar cadena 1: ";
    getline(cin,cad1);
    cout << "Ingresar cadena 2: ";
    getline(cin,cad2);

    cout <<"Mostrar: " << cad1 <<" y " <<cad2<< endl <<endl;
    cout <<"Inserta en la posicion 4 de la cadena1= "<< cad1.insert(4,cad2) << endl <<endl;
    cout <<"Reempla a partir de la posicion 4, 6 caracteres= "<< cad1.replace(4,6,cad2)<<"\n";
}


miércoles, 2 de diciembre de 2015

I/O EN ARCHIVO DE TEXTO Y BINARIO EN C++

012  I/O en Archivos de texto y binarios C / C++
Ing. Honoria Reyes Macedo


Funciones que se implementaran en un programa que maneja archivos de texto y archivos binarios


a) Archivos de texto ( *.txt ,  *.cpp)




b)  Archivos binarios  (*.dat)
















c) stream automáticos(cout, cin, cerr, clog)

void streamAutomaticos(){
    cout.setf(ios_base::left);   //justifica a la izquierda
    cout.setf(ios_base::showbase);
    for(int i=1; i<=100;i++){
        cout << setw(8) ;       //Lo integra en una longitud de 8
        cout << setfill('-') <<i;   //rellena los espacios restantes
    }
}

miércoles, 25 de noviembre de 2015

ESTRUCTURAS Y CLASES EN C++

011 ESTRUCTURAS Y CLASES EN C / C++
Ing, Honoria Reyes Macedo

Las estructuras se utilizan para organizar los datos en la memoria de una computadora.
Existen desde estructuras básicas: las variables, apuntadores y constantes, arreglos: vectores y matrices, hasta estructuras compuestas: struct, unión y clases.

Las estructuras son un grupo de datos bajo un mismo nombre, estos datos pueden ser de diferente tipo y longitud.

struct: Agrupa los datos en un solo registro.
-       Pueden ser anónimas o con nombre.     
-       Pueden heredar por extensión
-       Pueden heredar por composición o agregación  (estructuras anidadas)
-      Los miembros por default son publico

class:    Contiene las definiciones de las propiedades y el comportamiento de un                     tipo de objeto

              - Posee las caracteristicas de abstracción, polimorfismo, encapsulamiento y herencia.
              -  Pueden heredar por extensión.
              -  Pueden heredar por composición.
              -  Los miembros por default son privados.
              - Esta compuesto por atributos(estado) y metodos(comportamiento).

a) Ejemplo de struct:


b) Ejemplo de clase








***************************************

ANEXO I: Ejemplo: 

a) Hacer una clase de persona (archivo en c++)


#include <iostream>
#include <string.h>
using namespace std;
class persona{
  private:
    string nombre;
    string apPaterno;
    string apMaterno;
    int edad;
    string rfc;
  protected:
    string saludo;  /*Las clases derivadas por extension si la pueden manipular*/
  public:
    persona(){};
    ~persona(){};
    void setNombre(string nombre1);
    string getNombre();
    void setApPaterno(string apPat1);
    string getApPaterno();
    void setApMaterno(string apMat1);
    string getApMaterno();
    void setEdad(int edad1);
    int getEdad();
    void setRFC(string nombre1);
    string getRFC();
};

 -  Agregar al final la IMPLEMENTACION de los prototipos declarados


   

 -  Agregar al final el metodo main(), probar o ejecutar:





b) EN UN NUEVO ARCHIVO DE C++: 

       - Copiar todo lo del archivo anterior menos el metodo main()

        -  Agregar al final  la siguiente clase de estudiante:




    -  Agregar al final del nuevo archivo la siguiente clase de docente:



    -  Agregar al final el metodo main(). 
                    No capturar las lineas tachadas porque carrera es un atributo privado

























--------------------------0--0------------------------------------
-----------------------000--000---------------------------------




miércoles, 4 de noviembre de 2015

lunes, 26 de octubre de 2015

FUNCIONES Y PROCEDIMIENTOS EN C++

009 FUNCIONES Y PROCEDIMIENTOS
Ing. Honoria Reyes Macedo

INTRODUCCION
- Se utilizan para dividir grandes programas en varios segmentos mas pequeños (en procedimientos o funciones) que cumplen una tarea especifica y pueden retornar un valor.
- Se pueden utilizar mas de una vez-
- Los procedimientos no retornan valor alguno
- Las funciomes si regresan algun tipo de valor
- Estas funciones o procedimientos pueden recibir parámetros o argumentos que modifican su comportamiento.
- El paso de parámetros puede ser por valor o por referencia
- Los parámetros pasados por valor no reflejaran modificaciones en el  parámetro original

  Y los parámetros pasados por referencia si podrán ser modificados por la función que los recibe y       reflejarse en el parámetro original.

Ejemplo:
a)Programa que identifica el numero mayor entre dos números





DESCRIPCION DEL PROGRAMA:  
UTILIZA CUATRO FUNCIONES: 
1) main()
2) bienvenida() 
3) capture(int valide)
4) calculeMayor(int valor1, int valor2)
OBSERVA QUE AL INICIO DE CADA FUNCION INDICA QUE TIPO DE VALOR REGRESA Y ENTRE SUS PARENTESIS INDICA LAS VARIABLES QUE RECIBIRA... 
A CADA VARIABLE SE LE ASIGNA VALOR ANTES DE ENVIARLA.

AL INICIO DEL PROGRAMA SE DEBEN DECLARAR LAS FUNCIONES A UTILIZAR, A ESTA DECLARACION SE LE LLAMA "DECLARACION DE PROTOTIPOS"




b) Programa que permite hacer suma, resta, división, multiplicación, y sacar el residuo