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
    }
}