Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - Ja_90

#1
Programación C/C++ / Duda con memoria dinamica
20 Octubre 2015, 05:32 AM
Buenas noches,

Tengo una duda respecto a este codigo... creo un arreglo con memoria dinamica de la siguiente manera...

Código (cpp) [Seleccionar]

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main() {

    int *ptro_arreglo = NULL;

    ptro_arreglo = new int[3];

    for(int i=0 ; i<3 ; i++) {
       *(ptro_arreglo + i) = i;
       cout << ptro_arreglo[i] << " ";
    }

    delete []ptro_arreglo;

    cout << endl;
   
    for(int i =0 ; i<3 ; i++) {
        cout << *(ptro_arreglo + i) << "  ";
    }
   
    cin.get();
    return 0;
}


Mi duda es cuando utilizo
Código (cpp) [Seleccionar]
delete []ptro_arreglo, si ya elimine la memoria utilizada....
cuando imprimo de nuevo el arreglo sigue alli..no se deberia eliminar?...Gracias por sus respuestas...


#2
Buenas Noches, ando resolviendo algunos ejercicios de un libro, pero quede en este

Escriba segmentos de programa que lleven a cabo cada una de las siguientes tareas:
a) Calcular la parte entera de un cociente, cuando el entero a se divide entre el entero b.
b) Calcular el residuo entero, cuando el entero a se divide entre el entero b.
c) Utilice los segmentos de programa desarrolladas en a) y b), para escribir una función que introduzca un entero
entre 1 y 32767 y que imprima una serie de dígitos, y que cada par de ellos se encuentre separado por dos espacios. Por ejemplo, el entero 4562 se debe imprimir como:
4 5 6 2.

La parte a y b es sencilla ya lo hice pero no he podido con la parte c, si alguien me puede guiar en como, se que debo jugar con el cociente y residuo pero no he encontrado una manera que me de solucion a lo que me piden. Muchas gracias

Código (cpp) [Seleccionar]

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

/// Prototipo funciones
int cociente(int, int);
int residuo(int, int);

int main() {

   cout << "\t  FUNCIONES Ejercicio #3      \n\n";

   int a, b, num;

   cout << " Ingrese valor de a: ";
   cin >> a;
   cout << " Ingrese valor de b: ";
   cin >> b;
   cout << endl;

   cout << " Cociente: " << cociente(a,b);
   cout << " Residuo: " << residuo(a,b);
   cout << endl << endl;

   cout << " Ingrese un valor entre 1 y 32767: \n";
   cin >> num;

   if(num>0 && num<32768) {
     
        // Aca iria la funcion
   }
   else
      cout << " Ingrese valores correctos.\n\n";

   return 0;
}

int cociente(int x, int y) {

   return x/y;
}

int residuo(int x, int y) {

   return x%y;
}


#3
Programación C/C++ / Punteros creacion de matriz
7 Septiembre 2015, 19:59 PM
Buenas,

En este codigo se trata de crear una matriz utilizando memoria dinamica con punteros, mi pregunta es porque al indicar la creacion de la segunda dimension no se antepone el (*) asterisco. donde esta esta parte del codigo (Vec = new int[y];)

Código (cpp) [Seleccionar]

#include <iostream>

using namespace std;

int main()
{
 int x = 3;
 int y = 3;
 int **Vec;

 Vec = new int*[x]; //crear la primera dimension

 for(int i=0; i<x; i++)
 {
   Vec[i] = new int[y]; // Aqui porque no se antepone el * como en el caso de arriba.
 }

 for(int i=0;i<x;i++){
        for(int j=0;j<y;j++){
           Vec[i][j] = 1;r
           cout<<Vec[i][j]<< " ";
        }
        cout<<endl;
      }
 return 0;

}




#4
Buenas, ando por aca empezando con POO y tengo una duda con el siguente ejercicio:

CitarConstruir una clase llamada Rectangulo que tenga miem-
bros de datos en número de precisión doble llamados largo
y ancho. La clase deberá tener una función miembro llamada
perímetros() y area() para calcular el perímetro y el área de
un rectángulo, una función miembro llamada getDatos() que
despliegue el largo, ancho, perímetro y área de un rectángulo.

Por Ahora ya tengo lo que es el Area y el el pereimetro de la siguiente manera pero como hago la funcion miembro getDatos()... porque en cada funcion me devuelve un valor especifico, pero cuando tengo que mostrar todos esos datos como seria la sintaxis del metodo.... Muchas gracias a quien pueda orientarme....

Código (cpp) [Seleccionar]

#include <iostream>

using namespace std;

class Rectangulo{
                   double Ancho, Largo;  // atributos

                   public:
                          Rectangulo(double An, double La); // Constructor
// Metodos
                          void set_Ancho(double An);
                          void set_Largo(double La);

                          double get_Area();
                          double get_Perimetro();

                };

// Implementacion de metodos
Rectangulo::Rectangulo(double An, double La){ Ancho = An;
                                              Largo = La;
                                            }
void Rectangulo::set_Ancho(double An){ Ancho = An;}
void Rectangulo::set_Largo(double La){ Largo = La;}

double Rectangulo::get_Area(){ return Ancho*Largo;}
double Rectangulo::get_Perimetro(){ return (2*Ancho)+(2*Largo);}

int main()
{
  Rectangulo rectangulo(5,7);

  cout << " AREA: " << rectangulo.get_Area() << endl;
  cout << " PERIM: " << rectangulo.get_Perimetro() << endl;


  return 0;
}
#5
Programación C/C++ / Problema con Array
9 Febrero 2015, 18:30 PM
Buenas Companieros tengo el siguiente problema del libro Deitel:

(Sistema de reservaciones para una aerolínea.) Una pequeña aerolínea acaba de comprar una computadora para su
nuevo sistema automático de reservaciones. A usted se le ha pedido que programe el nuevo sistema. Usted debe es-
cribir un programa que asigne los asientos, en cada vuelo, del único avión de la aerolínea (capacidad: 10 asientos).
Su programa debe desplegar el siguiente menú de alternativas:
Por favor, digite 1 para "primera clase"
Por favor, digite 2 para "económico"
Si la persona digita 1, su programa debe asignar un asiento en la sección de primera clase (asientos 1 a 5). Si la
persona digita 2, su programa debe asignar un asiento en la sección económica (asientos 6 a 10). Su programa de-
be imprimir un pase de abordar que indique el número de asiento de la persona y si está en la sección de primera
clase o en la sección económica del avión.
Utilice un arreglo con un solo subíndice para representar la tabla de asientos del avión. Inicialice en 0 todos los ele-
mentos del arreglo para indicar que todos los asientos están vacíos. Mientras se asigna cada asiento, el valor de los
elementos correspondientes del arreglo se establece en 1, para indicar que el asiento ya no está disponible.
Por supuesto, su programa nunca debe asignar un asiento que ya está asignado. Cuando la sección de primera clase
está llena, su programa debe preguntar a la persona si acepta que se le coloque en la sección económica (y viceversa).
Si acepta, entonces haga la asignación apropiada del asiento. Si no acepta, entonces despliegue el mensaje "El
siguiente vuelo parte en tres horas".

Código (cpp) [Seleccionar]

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

void Mostrar(int Sillas[]);

int main()
{
    cout << "\t RESERVACIONES AEROLINEA \n\n";

    int Asientos[10] = {};
    int k=0; // contador de los 10 turnos

    cout << " Por favor, digite 1 para 'primera clase'\n";
    cout << " Por favor, digite 2 para 'economico'\n\n";

    cout << " Asientos: ";
    Mostrar(Asientos);

    do{
        int puesto, x;
        cout << "\n\nDigite su asiento: ";
        cin >>  puesto;

        if(puesto == 1)
        {
            for(int i=0 ; i<5 ; i++)
            {
                if(Asientos[i] == 0 && i<5)
                {
                    Asientos[i] = 1;
                    x = i+1;
                    break;
                }
            }
            cout << "\nPASE DE ABORDAJE:" << endl;
            cout << "El asiento asignado es: " << x << endl;
            cout << "Se encuentra en 1ra clase" << endl << endl;
        }

        if(puesto == 2)
        {
            for(int i=5 ; i<10 ; i++)
            {
                if(Asientos[i] == 0 && i<10)
                {
                    Asientos[i] = 1;
                    x = i+1;
                    break;
                }
            }
            cout << "\nPASE DE ABORDAJE:" << endl;
            cout << "El asiento asignado es: " << x << endl;
            cout << "Se encuentra en clase economico" << endl << endl;
        }

        Mostrar(Asientos);

        k++;
    }while(k<10);

    return 0;
}

void Mostrar(int Sillas[])
{
    for(int i=0 ; i<10 ; i++)
    {
        cout << " " << Sillas[i];
    }
}



Ahora bn hasta aca el programa pide 10 veces la entrada o la asignacion de los puestos pero no logro ver como hacer para que cuando ya no hallan puestos disponibles el programa pregunte si desea un puesto en la otra clase y si la respuesta es SI que lo asigne... Si alguien me puede guiar se lo agradeceria.
#6
Buenas Me surgio un problema luego de actualizar OpenSuse 13.1 a 13.2, lo hice por medio del DVD. No puedo navegar en internet, a pesar de que me aparecen las redes inalambricas y me puedo conectar a estas. como puedo configurar la red, ya he seguido varios tutoriales y ninguno me ha funcionado. Muchas gracias a quien pueda ayudarme.

Fuente:
Citarhttp://www.forosuse.org/forosuse/showthread.php?t=25435
Citarhttp://cuchillac.net/archivos/pre_virtual_cloud_computing/1_cloud_privadas/guias/guia_config_red_opensuse.pdf
#7
Programación C/C++ / Vector(STL) con estructuras
8 Diciembre 2014, 01:18 AM
Buenas, queria resolver una duda referente a el uso de vectores con estructuras. A lo que me refiero es a que si puedo hacer esto:

Código (cpp) [Seleccionar]

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
     
struct Estructura
{
     string nombre;
     int Edad;
};
     
int main()
{
      Estructura persona[2];   
   
      for (int i=0 ; i<2 ; i++)
      {
          cout << "Ingrese nombre: ";
          getline(cin,persona[i].nombre);
          cout << "Ingrese edad: ";
          cin >> persona[i].edad;
          cin.ignore();
      }
     
     // Y para imprimirlo seria:
     
      for (int i=0 ; i<2 ; i++)
      {
          cout << persona[i].nombre << endl;
          cout << persona[i].edad << endl;
      }
}


Ahora en vez de
Código (cpp) [Seleccionar]
Estructura persona[2];
Hacer algo como
Código (cpp) [Seleccionar]
vector<Estructura>Arreglo; // Hasta aqui declare un vector de tipo Estructura

Pero como hago la parte de:
Código (cpp) [Seleccionar]

for (int i=0 ; i<2 ; i++)
      {
          cout << "Ingrese nombre: ";
          getline(cin,persona[i].nombre);
          cout << "Ingrese edad: ";
          cin >> persona[i].edad;
          cin.ignore();
      }

Como asigno el nombre y la edad que pida al usuario a el vector que cree del tipo Estructura??...

Esto se puedo hacer?. Gracias por su colaboracion.
#8
Hacking / Error Wireshark kali linux
5 Diciembre 2014, 06:38 AM
Buenas, estoy empezando y aprendiendo a usar ciertas herramientas de esta distro kali linux y me he encontrado con un problema. Cuando abro el WIRESHARK me aparece el siguiente error:

Citar
Lua: Error during loading:
[string "/usr/share/wireshark/init.lua"]:601: attempt to call field '?' (a nil value)

He estado buscando y buscado y solo encontre una solucion pero a otro error que era :

Citar
Error during loading:[string "/usr/share/wireshark/init.lua"]:46: dofile has been disabled due to running Wireshark as superuser. See http://wiki.wireshark.org/CaptureSet...turePrivileges for help in running Wireshark as an unprivileged user.

Si alguien me puede indicar como solucionar el error que me aparece (601) o indicarme donde puedo encontrar la solucion se lo agradeceria.  :huh:
#9
Buenas noches,
Formatie el pc y quiero instalar de nuevo codeblocks para programar en c++
pero luego de instalarlo, trate de compilar un archivo y no me fue posible.
Me sale el siguiente error:

Citar
programitas\VECTORS\Vector-string.o"
mingw32-g++.exe: error: D:\Personal\PROGRAMACION C/C++\SOLO---C++\Mis programitas\VECTORS\Vector-string.cpp: No such file or directory
mingw32-g++.exe: fatal error: no input files
compilation terminated.
Process terminated with status 1 (0 minute(s), 0 second(s))
1 error(s), 0 warning(s) (0 minute(s), 0 second(s))

Me descargue e instale la version de codeblocks 13.12 con MinGw.

En settings - compiler me detecta el GNU GCC Compiler.

En settings - compiler en la pestana toolchain excecutables le doy auto-detect y me detecta el MinGw

CitarC:\Program Files (x86)\CodeBlocks\MinGW

Entonces no se porque me sale el error, si alguien me puede colaborar lo agradeceria mucho.  :huh:
#10
Programación C/C++ / Punteros a estructuras...???
11 Noviembre 2014, 04:38 AM
Buenas por aqui otra vez jejeje..tratando de resolver dudas...
Estoy aprendidendo y leyendo acerca de los punteros...
Mi duda surge cuando quiero utilizar los punteros con estructuras..

Código (cpp) [Seleccionar]

#include <iostream>
using std::cout;
using std::cin;
using std::endl;

struct Estructura
{
    string nombre;
    int Edad;
};

int main()
{
   Estructura persona[2];  
 
   Estrucputa *ptr_persona = NULL; // Declaro puntero y lo inicializo

   // Hasta aqui todo va bien, pero como asigno el nombre y la edad que se
   // pida al usuario para llenar el arreglo persona[2]

   // Normalmente sin punteros seria asi:
 
  for (int i=0 ; i<2 ; i++)
  {
      cout << "Ingrese nombre: ";
      getline(cin,persona[i].nombre);
      cout << "Ingrese edad: ";
      cin >> persona[i].edad;
      cin.ignore();
  }

 // Y para imprimirlo seria:

  for (int i=0 ; i<2 ; i++)
  {
      cout << persona[i].nombre << endl;
      cout << persona[i].edad << endl;
  }
}


 Como haria esto con punteros??...Quiero ver como hacerlo con un ejemplo sencillo a ver si
 Puedo lograr algo mas complicado y entender como funcionan los punteros con las estructuras.
 He leido bastante pero no he visto un ejemplo concreto donde pueda ver esto que quiero hacer...

Muchas Gracias a quien me pueda colaborar, ando de autodidacta y no tengo a quien preguntar
en mi entorno acerca de estos temas.

EDITO: Es mediante la asignacion dinamica de memoria (eso creo), seguire leyendo, igualmente si alguien me  puedo dar una breve explicacion lo apreciaria mucho...
#11
Programación C/C++ / Agenda C++ con estructuras
8 Noviembre 2014, 05:44 AM
Buenas
Por acá dejo el código de la agenda que estoy haciendo....Solo me falta la parte de Eliminar...
Quisiera que me dieran ideas de como hacerlo, solo me falta eso...el resto funciona perfecto...lo pueden compilar y verán que funciona...(no guarda los datos luego de cerrar el programa..Ese es el paso siguiente que quiero hacer y adicional a eso usar vectores pero lo haré mas adelante) por ahora quiero terminar este de esta manera.

Esta hecho y compilado en codeblocks en linux, si utilizan windows y sale algún error posiblemente sea el de system("clear").... en windows se cambia por system("cls") y ya.

Código (cpp) [Seleccionar]

//----------------------- LIBRERIAS -----------------------------------//
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <cstring>
using std::string;

#include <cstdlib>   // system("clear")

//----------------------- PROTOTIPO FUNCIONES --------------------------//

void menu();                                       // Muestra el menu principal
void Ingresar(struct Datos Persona[],int,int);     // Ingreso de contactos

// Funciones para mostrar la info de los contactos
void Mostrar(struct Datos Persona[],int);           // Muestra todos los contactos
void ImprFicha(struct Datos Persona[],int,int);     // Imprime la informacion de los contactos

// Funciones de Busqueda
void Buscar(struct Datos Persona[],int);          // Busqueda con menu
void BuscaFicha(struct Datos Persona[],int);      // Buscar por # Ficha
void BuscaNombre(struct Datos Persona[],int);     // Buscar por Nombre
void BuscaTel(struct Datos Persona[],int);       // Buscar por Telefono

// Funcion Modificar
void Modificar(struct Datos Persona[],int);

//----------------------- ESTRUCTURAS ----------------------------------//
struct Cumpleanos
{
    string Nacimiento;
};

struct Datos
{
    string Nombre;
    string Direccion;
    string Telefono;

    Cumpleanos Fecha;
};

//------------------------ FUNCION PRINCIPAL ----------------------------//
int main()
{
    const int LEN = 2;   // Cantidad de Contactos a guardar

    Datos Persona[LEN];  // Defino la variable Persona del tipo Datos (estructura)

    int index = 0;  // Variable para el Indice cada contacto
    int opcion;     // Opcion Menu principal
    bool salir;     // Variable Para salir del menu principal

    do
    {
        menu();  // Llamada funcion menu();

        cout << "\n\t Elija la opcion: ";
        cin >> opcion;
        cin.ignore();

        switch (opcion)    // Menu principal
        {
            case 1:
                    system("clear");
                    Ingresar(Persona,index,LEN); // Llamo funcion Ingresar();
                    index++;
                    break;
            case 2:
                    system("clear");
                    Mostrar(Persona,index);  // Llamo funcion Mostrar();
                    break;
            case 3:
                    system("clear");
                    Buscar(Persona,index);  // LLamo funcion Buscar();
                    break;
            case 4:
                    system("clear");
                    Modificar(Persona,index);
                    break;
            case 6:
                    salir = true;
                    break;
            default:
                    system("clear");
                    cout << "Ingrese Opcion valida\n\n";
                    break;
        }
    }while(salir == false);

    return 0;
}

//--------------------- FUNCIONES ---------------------------//

/// FUNCION MENU ///
void menu()
{
    cout << "\t AGENDA INFORMATIVA \n\n";

    cout << "\t 1. Ingresar." << endl;
    cout << "\t 2. Mostrar todos." << endl;
    cout << "\t 3. Buscar contacto." << endl;
    cout << "\t 4. Modificar." << endl;
    cout << "\t 5. Eliminar." << endl;
    cout << "\t 6. SALIR." << endl;
}

/// FUNCION INGRESAR ///

void Ingresar(struct Datos Persona[], int numero, int TAM)  // Paso como parametros la estructura,index y LEN
{
    if(numero < TAM)  // Comparo el numero de contactos con la cantidad que se pueden guardar
    {
        cout << "\t Igresar Datos Ficha: #" << numero << endl << endl;

        cout << " Nombre: ";
        getline(cin,Persona[numero].Nombre);
        cout << " Direccion: ";
        getline(cin,Persona[numero].Direccion);
        cout << " Telefono: ";
        getline(cin,Persona[numero].Telefono);
        cout << " Fecha Nacimiento (DD/MM/AAAA): ";
        getline(cin, Persona[numero].Fecha.Nacimiento);
        cout << endl << endl;
    }
    else
        cout << "LLEGO AL LIMITE DE CONTACTOS PERMITIDOS" << endl << endl;
}

/// FUNCION IMPRFICHA ///
void ImprFicha(struct Datos Persona[], int x) // x ==> paso parametro iterador i  // Funcion Imprimir info
{
    cout << "\t Informacion ficha: #" << x << endl << endl;
    cout << " Nombre: " << Persona[x].Nombre << endl;
    cout << " Direccion: " << Persona[x].Direccion << endl;
    cout << " Telefono: " << Persona[x].Telefono << endl;
    cout << " Fecha Nacimiento (DD/MM/AAAA): " << Persona[x].Fecha.Nacimiento;
    cout << endl << endl;
}

/// FUNCION MOSTRAR ///
void Mostrar(struct Datos Persona[], int numero)
{
    for(int i=0 ; i<numero ; i++)
    {
        ImprFicha(Persona,i);     // Llamada Funcion para imprimir la info
    }
    cin.get();        // Pausa
    system("clear");  // Lipmpia
}

/// FUNCION BUSCAR ///
void Buscar(struct Datos Persona[], int numero)
{
    bool exit;  // variable para salir del menu Busqueda
    do
    {   // Menu de Busqueda
        cout << "\t BUSQUEDA: \n\n";
        cout << " 1. # Ficha" << endl;
        cout << " 2. Nombre" << endl;
        cout << " 3. Telefono" << endl;
        cout << " 4. SALIR" << endl << endl;

        unsigned int op;
        cout << " Indique Opcion: ";
        cin >> op;
        cin.ignore();
        cout << endl;

        switch(op)  // Opciones Menu de Busqueda
        {
            case 1:
                system("clear");
                BuscaFicha(Persona,numero);  // Llamada funcion BuscaFicha(); ==> Busca por # de Ficha
                break;
            case 2:
                system("clear");
                BuscaNombre(Persona,numero); // Llamada funcion BuscaNombre(); ==> Busca por Nombre
                break;
            case 3:
                system("clear");
                BuscaTel(Persona,numero); // Llamada funcion BuscaTel(); ==> Busca por Telefono
                break;
            case 4:
                exit = true;
                break;

            default:
                cout << "ERROR, DIGITE OPCION CORRECTA\n";
                break;
        }
    }while(exit == false);

    system("clear");     // Limpiar
}

/// FUNCION BUSCAFICHA ///
void BuscaFicha(struct Datos Persona[], int numero)
{
    cout << "\t Busqueda por ficha: \n\n";

    unsigned int Ficha;
    cout << " Digite # Ficha: ";
    cin >> Ficha;
    cin.ignore();
    cout << endl;

    for(int i=0 ; i<numero ; i++)
    {
        if(Ficha == i)
        {
            ImprFicha(Persona,i);
        }
    }
    cin.get();        // Pausa
    system("clear");  // Limpia
}

/// FUNCION BUSCANOMBRE ///
void BuscaNombre(struct Datos Persona[], int numero)
{
    cout << "\t Busqueda por nombre: \n\n";

    string nomb;
    cout << " Digite el nombre: ";
    getline(cin,nomb);
    cout <<  endl;

    for(int i=0 ; i<numero ; i++)
    {
        if(nomb == Persona[i].Nombre)
        {
            ImprFicha(Persona,i);
        }
    }
    cin.get();
    system("clear");
}

/// FUNCION BUSCAFECHA ///
void BuscaTel(struct Datos Persona[], int numero)
{
    cout << "\t Busqueda por Telefono: \n\n";

    string tel;
    cout << "Digite Telefono: ";
    getline(cin,tel);
    cout << endl;

    for(int i=0 ; i<numero ; i++)
    {
        if(tel == Persona[i].Telefono)
        {
            ImprFicha(Persona,i);
        }
    }
    cin.get();
    system("clear");
}

/// FUNCION MODIFICAR ///
void Modificar(struct Datos Persona[], int numero)
{
    cout << " Modificar o Editar la informacion: \n\n";

    string tel;
    cout << "Digite Telefono: ";
    getline(cin,tel);
    cout << endl;

    for(int i=0 ; i<numero ; i++)
    {
        if(tel == Persona[i].Telefono)
        {
            ImprFicha(Persona,i);

            cout << " Nombre: ";
            getline(cin,Persona[i].Nombre);
            cout << " Direccion: ";
            getline(cin,Persona[i].Direccion);
            cout << " Telefono: ";
            getline(cin,Persona[i].Telefono);
            cout << " Fecha Nacimiento (DD/MM/AAAA): ";
            getline(cin, Persona[i].Fecha.Nacimiento);
            cout << endl << endl;
        }
    }
}

#12
Buenas tardes, me encuentro realizando una agenda de contactos con un menu que me permita anadir, ver contacto, editar, eliminar, salir.

Pues bien ya comence con la primera opcion que es anadir un contacto, y lo he guardado en un archivo de texto. Ahora quiero que al cerrar el programa y vuelva a entrar le pueda dar la opcion de ver contacto y que me lo muestre en pantalla.

Se que con la funcion ifstream puedo leer el archivo y comparando un string que le pida al usuario con el string que me idica el nombre para encontrarlo... pero, Como hago para que leea el archivo y me busque el contacto que le indique, y sobre todo que me lo muestre en pantalla??...

Código (cpp) [Seleccionar]

#include <iostream>
#include <fstream>   // read and write outfile .txt
#include <cstring>
#include <cstdlib>   // To use system("clear")

using std::ofstream;  // write outfile .txt
using std::ifstream;  // read outfile .txt
using std::ios;
using std::cout;
using std::cin;
using std::endl;
using std::string;

const int LEN = 2;

void Addd(struct Data people[], int reg);  // add_contact_funtion

struct Data
{
   string Naame;
   unsigned int age;
};

int main()
{
   Data people[LEN];  //struct

   cout << endl;
   cout << "\t ////////  ////////  //        //  /////////  //////////  //////// " << endl;
   cout << "\t //        //    //  ////      //      //     //      //  //       " << endl;
   cout << "\t //        //    //  //  //    //      //     //      //  //       " << endl;
   cout << "\t //        //    //  //    //  //      //     //////////  //       " << endl;
   cout << "\t //        //    //  //      ////      //     //      //  //       " << endl;
   cout << "\t ////////  ////////  //        //      //     //      //  //////// " << endl;
   cout << endl;
   cout << "CONTACTS" << endl << endl;

   cout << "1. Add contact." << endl << endl;
   cout << "2. Show contact." << endl << endl;
   cout << "3. Exit" << endl << endl;

   int regi_ter = 0;

   int option;
   cout << "Numero de operacion a realizar: ";
   cin >> option;
   cin.ignore();
   cout << endl;

   switch (option)
   {
      case 1:
      system("clear");
      Addd(people,regi_ter);
      break;

      case 2:
         cout << "Show contact";
      break;

      case 3:
         cout << "EXIT";
         exit(0);
      break;

      default:
      cout << "Operation invalid.";
      system("clear");
      main();
      break;
   }

   return 0;
}

/// ADD_CONTACT_FUNTION ///

void Addd(struct Data people[], int reg)
{
   cout << "Write the contact information.";
   cout << endl << endl;
   cout << "1. Name: ";
   getline(cin,people[reg].Naame);
   cout << endl;
   cout << "6. Age: ";
   cin >> people[reg].age;
   cin.ignore();
   cout << endl;

   char sn[5];

   do
   {
      cout << "Add contact in the agenda? [S/N]: ";
      cin >> sn;

      if((strcmp(sn,"s")==0)||(strcmp(sn,"S")==0))
      {
         ofstream archivo;
         archivo.open("ContactsAgenda.txt", ios::app);
         archivo << "Name: " << people[reg].Naame << endl;
         archivo << "Age: " << people[reg].age << endl;
         archivo << endl << "---------------------------------------------" << endl << endl;
         archivo.close();

         reg++;

         cout << endl << "Contacto anadido." << endl;

         system("clear");
         main();
      }

      if((strcmp(sn,"n")==0)||(strcmp(sn,"N")==0))
      {
         cout << endl << "Contacto no anadido." << endl;

         system("clear");
         main();
      }
   }while ((sn!="S")||(sn!="s")||(sn!="N")||(sn!="n"));
}


Muchas gracias....Espero que me puedan entender.

PD: Quiero hacerlo sin punteros,  clases o vectores... Luego la pienso hacer de esa manera, por ahora solo con estructuras.
#13
GNU/Linux / Archivos temporales OpenSUSE 13.1
2 Noviembre 2014, 20:04 PM
Buenas, Tengo un pequeno inconveniente a la hora de eliminar los archivos temporales en mi sistema operativo Open SUSE 13.1...

He leido en varias paginas y he visto en casi todas o en todas la misma solucion la cual es:

Abrimos una consola como superusuario root, copiamos el archivo /usr/lib/tmpfiles.d/tmp.conf con el mismo nombre tmp.conf y en otra carpeta distinta /etc/tmpfiles.d.

Citar
sudo cp /usr/lib/tmpfiles.d/tmp.conf /etc/tmpfiles.d/tmp.conf

Por defecto esta así: Cada 10 días elimina el contenido de la carpeta /tmp y cada 30 días el de la carpeta /var/tmp.

Citar
d /tmp 1777 root root 10d
d /var/tmp 1777 root root 30d

Luego dice lo siguiente:

Para dejarlo en 1 día o cada vez que arranque el sistema para /tmp y /var/tmp, solo tenemos que dejarlo así, cambiado los parámetros d por D y 10d y 30d por 1d.

Citar
D /tmp 1777 root root 1d
D /var/tmp 1777 root root 1d

Pues bien, en el archivo que debo editar las lineas me aparecen de esta manera:

Citar
d /tmp 1777 root root -
d /var/tmp 1777 root root -

Aparte de esto cuando lo voy a guardar luego de editarlo, no me deja, me sale el siguiente mensaje:

Citar
El docuemnto no se puede guardar porque no fue posible escribir en /etc/tmpfiles.d/tmp.conf

Compruebe que tiene permiso de acceso o si hay sufuciente espacio disponible en el disco.

Espacio en el disco tengo y de sobra....Lo de el permiso no lo entiendo....como puedo obtener dicho permiso para poder editar el archivo.

Muchas Gracias, si alguien me puede colaborar...
#14
Programación C/C++ / Duda con strings y punteros
31 Octubre 2014, 22:41 PM
Buenas, quisiera saber como declarar un puntero a un string de c++... para saber como recorrer el string.

Aca tengo la manera en que se deben usar los punteros con arreglos de tipo entero y con cadenas de tipo char... Pero...

Lo que quiero saber no es recorrer una cadena de tipo char[5] = {'H', 'E', 'L', 'L', 'O', '\0'};

sino una cadena de tipo string:   string = "HELLO";  mediante el uso de punteros.

Código (cpp) [Seleccionar]

/// PUNTEROS ///

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

// Aritmetica de punteros

int main()
{
  cout << "Aritmetica de punteros:\n\n";

  int V[10] = {5,4,3,2,1};  //Declaramos arreglo de tipo int y lo inicializamos
  int *p1 = V;             // asignamos un puntero de tipo int que apunte al arreglo 'V'

  // De esta manera solo estamos apuntando hacia el valor del primer indice del arreglo
  // en este caso seria el indice 0 que contiene el valor de 5.
  cout << "El valor del indice 0 del arreglo: " << *p1 << endl;
  cout << "La direccion del indice 0 del arreglo: " << p1 << endl;

  cout << "\nAccedemos a cada uno de los valores del arreglo con el puntero \n\n";
  cout << "Valor del indice 1: " << *(p1 + 1) << " y su direccion es: " << p1+1 << endl;
  cout << "Valor del indice 2: " << *(p1 + 2) << " y su direccion es: " << p1+2 <<endl<<endl;

  cout << "Para recorrer todo el arreglo con punteros lo hago con un ciclo \n\n";
  for(int i=0 ; i<10 ; i++)
  {
     cout << *(p1 + i) << endl; // imprimo los valores del arreglo
  }

  return 0;
}


Código (cpp) [Seleccionar]

/// PUNTEROS ///

#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
  cout << "Recorrer cadena de caracteres con punteros:\n\n";

  cout << "Cadena = PUNTEROS \n";

  char cadena[] = {'P','U','N','T','E','R','O','S','\0'};

  char *p1 = cadena; // Declaro un puntero que apunte a cadena

  while(*p1 != '\0')  // Cilo mientras que llegamos al final de la cadena
  {
     cout << *p1 << endl;  // Imprimo cada caracter de la cadena
     p1++;                 // incremento en cada iteracion la direccion de memoria de cada caracter.
  }

  return 0;
}



De antemano. Muchas Gracias por su colaboracion

#15
Buenas, estoy realizando una agenda en c++ con menu....que me guarde los datos en un archivo .txt y hasta ahora llevo la primera opcion del menu...(Adicionar un contacto)...Estoy haciendo la 2da opcion del menu...(encontrar o buscar contacto)...pero tengo problemas en la funcion, cuando quiero leer los datos del archivo para comprarlo con el nombre dado por el usuario...No tengo claro como leer los datos del archivo....o si los estoy guardando de manera correcta... aca dejo el codigo quien pueda darme algun consejo le agradeceria....

Código (cpp) [Seleccionar]

/*_____LIBRARIES______*/

#include <iostream>
#include <iomanip>   // setw()
#include <fstream>   // read and write outfile .txt
#include <string>

using std::setw;      // tab
using std::ofstream;  // write outfile .txt
using std::ifstream;  // read outfile .txt
using std::cout;
using std::cin;
using std::endl;
using std::string;


/*_____GLOBAL VARIABLS______*/

const int LEN = 2;

/*_____FUNTIONS______*/

void menu();

void ADD_friend (struct FRIENDS people[], int);

void LOOK_FOR (struct FRIENDS people[], int);

/*_____STRUCTS________*/

struct FRIENDS
{
  string Naame, email, Adress, phone;
};

/*_____MAIN FUNTION_____*/

int main()
{
  cout << "\t *************---------------****************\n";
  cout << "\t *************  MY CONTACTS  ****************\n";
  cout << "\t *************---------------****************\n\n";

  int option;       // options of switch case loop
  int index = 0;    //Position of each contact.

  struct FRIENDS Data[LEN];     // STRUCT //

  do
  {
    menu(); // call funtion => show the MENU

    while(true)    // CHOOSE OPTION //
    {
      cout << "Enter your option: ";
      cin >> option;
      cin.ignore();

      if(option >= 1 && option <= 7)
      {
      break;
      }
      else
      {
        cout << "ERROR, Enter correct value.\n\n";
      }
    }

    switch(option)  // OPTIONS FUNTIONS //
    {
      case 1:
        ADD_friend (Data,index);
        break;

      case 2:
        cout << "Find a contact \n";
        LOOK_FOR(Data,index);
        break;

      case 3:
        cout << "Edit funtion";
        break;

      case 4:
        cout << "Clear funtion";
        break;

      case 5:
        cout << "show all contacts";
        break;

      case 6:
        cout << "GOOD BYE" << endl;
        break;
    }
  }while(option != 6);

  cin.get();
  return 0;
}

/// MENU FUNTION ///

void menu()
{
  cout << "\n/////////  MENU  //////////" << endl;
  cout << "---------------------------" << endl;
  cout << "Choose an option:" << endl << endl;

  cout << "1. Add friend." << endl;
  cout << "2. find a friend." << endl;
  cout << "3. Edit." << endl;
  cout << "4. Clear." << endl;
  cout << "5. Show all friends." << endl;
  cout << "6. Exit." << endl << endl;
}

/// ADD_FRIEND_outFile.txt FUNTION ///

void ADD_friend (FRIENDS people[], int index)
{
  cout << "Name: ";
  getline(cin,people[index].Naame);

  cout << "Phone: ";
  getline(cin,people[index].phone);

  cout << "E-mail: ";
  getline(cin,people[index].email);

  cout << "Address: ";
  getline(cin,people[index].Adress);

  index++;     // increment the index for the next position to add a contact
  cout << endl;

  ofstream out_data("CONTACTS.txt"); //Out-file information in CONTACTS.txt

  out_data << "\t ***************** MY CONTACTS *****************\n\n";

  for(int i=0 ; i<index; i++)
  {
    out_data << setw(5); out_data  << people[i].Naame;
    out_data << setw(30); out_data << people[i].phone;
    out_data << setw(30); out_data << people[i].email;
    out_data << setw(30); out_data << people[i].Adress << endl;
  }
  out_data.close();
}

/// LOOK_FOR a FRIEND FUNTION ////

void LOOK_FOR (struct FRIENDS people[], int index)
{
  ifstream read_data("CONTACTS.txt");

  if(read_data.is_open())
  {
    string NN;               // Nombre ingresado por el usuario para comprar con datos del archivo .txt

    cout << "Enter a name: ";
    getline(cin,NN);

    for(int i=0 ; i<index ; i++)
    {
      if(NN.compare(people[i].Naame) == 0)
      {
        cout << "Name: "   << people[i].Naame << endl;
        cout << "Phone"    << people[i].phone << endl;
        cout << "E-mail: " << people[i].email << endl;
        cout << "Address: "<< people[i].Adress<< endl;
      }
    }
  }
  read_data.close();
}
#16
Buenas quiero resolver este ejercicio y esto es lo que llevo... Mi duda es en como ordenar alfabeticamente los nombres de los empleados, (Se que puedo hacerlo por el metodo Burbuja y se como funciona este metodo) como comparo los string Naame.....ya que se hacerlo con strcmp pero esto es con cadenas de caracteres char. Ademas como inserto la variable auxiliar sabiendo que es una structura.... MUCHAS GRACIAS POR SUS RESPUESTAS....

Código (cpp) [Seleccionar]

/* Leer 3 estructuras del arreglo "empleado" que contiene la siguiente info:
   nombre
   dirección ( calle, numero, localidad)
   edad
   sexo ( M = masculino, F = femenino)
   a) Listar los empleados menores de 25 anos
   b) Ordenar el vector por nombre y listarlo  */

/*---- LIBRARIES ----*/

#include <iostream>
#include <string>   

#define LEN 3

using std::cout;
using std::cin;
using std::endl;
using std::string;

/*---- FUNTIONS ----*/

void Read_Data(struct Employees people[],int);    //Read input data

void Less_25years(struct Employees people[],int); //Show the employees under 25 years old

//--------------------------------------------------//
//void Sorted_Data();  //sorted alphabetically       <<<<----| Funtion
//--------------------------------------------------//

void Show_Data(struct Employees people[],int);    //Show the employees names

/*---- STRUCTS -----*/

struct Direction
{
    char street[15];
    char Number[15];
    string local;
};

struct Employees
{
    string Naame;
    unsigned int age;
    char sex;

    struct Direction home;
};

/*---- Main Funtion -----*/

int main()
{
    cout << "********* STRUCT, INFO - EMPLOYEES **********\n\n";

    struct Employees Data[LEN];

    int i;

    Read_Data(Data,i);

    cout << "-------EMPLOYEES UNDER 25 YEARS OLD-------- \n\n";

    Less_25years(Data,i);

    cout << "-------EMPLOYEES SORTED ALPHABETICALLY----- \n\n";
   
    //---------------------------------------------------------//
    // funtion //sorted alphabetically  (BUBBLE SORT)            <<<----Here Funtion
    //--------------------------------------------------------//
   
   
    Show_Data(Data,i);  //Show the employees names

    return 0;
}

/// READ_DATA FUNTION ///

void Read_Data(struct Employees people[], int i)
{
    for(i=0 ; i<LEN ; i++)
    {
        cout << "Employee Name: ";
        getline(cin,people[i].Naame);

        cout << "Age: ";
        cin >> people[i].age;
        cin.ignore();

        cout << "Sex (M)-(F): ";
        cin >> people[i].sex;
        cin.ignore();

        cout << "\nDIRECTION \n";

        cout << "Street: ";
        cin.getline (people[i].home.street, 15);

        cout << "Number: ";
        cin.getline(people[i].home.Number, 15);

        cout << "Location: ";
        getline(cin,people[i].home.local);

        cout << endl;
    }
}

/// LESS_25years FUNTION ///

void Less_25years(struct Employees people[],int i)
{
   for(i=0 ; i<LEN ; i++)
   {
        if(people[i].age < 25)
        {
            cout << "Name: " << people[i].Naame << endl;
            cout << "Age: " << people[i].age<< endl;
            cout << "Sex: " << people[i].sex << endl;
            cout << "Street: " << people[i].home.street << endl;
            cout << "Number: " << people[i].home.Number << endl;
            cout << "Location: " << people[i].home.local << endl;
        }
    }
    cout << endl;
}

/// Sorted_Data FUNTION ///   //Show the employees names sorted alphabetically



/// SHOW_DATA FUNTION ///

void Show_Data(struct Employees people[],int i)
{
    for(i=0 ; i<LEN ; i++)
    {
        cout << "Name: " << people[i].Naame << endl;
        cout << "Age: " << people[i].age<< endl;
        cout << "Sex: " << people[i].sex << endl;
        cout << "Street: " << people[i].home.street << endl;
        cout << "Number: " << people[i].home.Number << endl;
        cout << "Location: " << people[i].home.local << endl;
    }
}



Sugerencias sobre el programa, como mejorarlo o simplificarlo si es posible.....

PD: Que no sea con vectores ya que todavia no he visto el tema....jejeje estoy de autodidacta y no he llegado alli...   ;D ;D ;D ;D
#17
Buenas, ando por aca queriendo aclarar el porque no me ejecuta de manera correcta este codigo.

Aclaro: En el codigo las variables estan en ingles por que necesito practicar mi ingles ;D

Código (cpp) [Seleccionar]

#include <iostream>
#include <string>

using std::cout;
using std::cin;
using std::endl;
using std::string;

struct Employees   // struct's name
{
    string name;
    string sex;
    float pay;
};

int main()
{
    int number;  // # employees 

    cout << "Enter # Employees: ";
    cin >> number;

    struct Employees data[number];  // declare data type of Employees

    int i;

    for(i=0 ; i<number ; i++)   // Loop to save all data
    {
        cout << "Name: ";
        getline(cin,data[i].name);
        cout << "Sex: ";
        getline(cin,data[i].sex);
        cout << "Payment: ";
        cin >> data[i].pay;
    }
   
   //Loop to print out

    for(i=0 ; i<number ; i++)
    {
        cout << data[i].name << endl;
        cout << data[i].sex << endl;
        cout << data[i].pay <<"\n\n";
    }

    return 0;
}


Cuando lo ejecuto me sale esto:
------------------------------------------

Enter # Employees: 2   // (coloco el #)

Name: Sex:

----------------------------------
No me deja ingresar el Nombre, sino que me sale seguido Sex cuando deberia salir en la siguiente linea luego de yo digitar el nombre y que quede guardado en:
Código (cpp) [Seleccionar]

data[i].name

Muchas gracias por su colaboracion, cualquier consejo, critica constuctiva bienvenida sea.
#18
Programación C/C++ / Pregunta libreria <ctype.h>
11 Octubre 2014, 01:16 AM
Buenas, tengo una pregunta sobre la libreria <ctype.h>
Esta libreria es estandar de C, ahora bien programando en C++.

quiero que ingresada una cadena de caracteres me cuente cuantos son mayusculas o minusculas o digitos o del alfabeto....en fin se como se hace pero la pregunta es que cuando lo hago no necesito usar la libreria <ctype.h>....por ejemplo:


Código (cpp) [Seleccionar]

/*Escribir un programa que cuente las mayusculas de una cadena de caracteres*/

#include <iostream>
using namespace std;

int main()
{
    string word;

    cout<<"Enter the word: ";
    cin>>word;

    int cont = 0;

    for(int i=0 ; i<word.length(); i++)
    {
       if(isupper(word[i])) // Si quiero ver las minusculas es con islower(word[i])
       {
           cont++;
       }
    }
    cout<<"\nThe word has: "<<cont<<"capital letters"endl;

    cin.get();cin.get();
    return 0;
}



El programa me compila y funciona perfecto....Entonces en c++ no necesito declarar esta libreria??...o en que casos debo declararla??

GRACIAS de antemano. Espero que alguien me pueda aclarar esto, para no estar usando librerias sin ser necesarias.  ;D ;D
#19
GNU/Linux / Que hago en este caso?
25 Septiembre 2014, 08:06 AM
Buenas por aca nuevamente, tengo particionado mi disco duro asi.

Disco C: Windows
Disco D: Informacion (Aca guardo toda la informacion de ambos sistemas operativos, archivos, imagenes, trabajos)
Disco L: Linux

Lo que pasa es que luego de instalar openSUSE que todo fue bien y de maravilla instale CodeBlocks y realizo los programas y me compila todo va bien, siempre y cuando guarde el archivo en el disco de linux. Pero yo tengo un disco en el cual esta toda la informacion, sea para guardar archivos de windows o linux. Entonces cuando guardo un programa que compile en linux en ese disco (disco D => informacion), cuando voy abrirlo y compilarlo me sale en la ventanita del XTerm "Acceso denegado".  Como puedo corregir esto? o necesariamente debo guardar el archivo que compile en linux en ese disco?.

Gracias por sus respuestas.
#20
GNU/Linux / Qué distribución utilizar en este caso?
21 Septiembre 2014, 04:47 AM
Buenas noches, estoy por acá interesado en incursionar en Linux y quisiera un consejo, estoy utilizando windows 7 professional. En estos momentos tengo que utilizar varios programas de Win7 que no hay para linux, entonces la idea sería instalar alguna distribución en otra partición teniendo en cuenta:

Procesador intel Core 2 duo 1.83Ghz
Memoria Ram de 2 Gb
Disco Duro de 232Gb.

Actualemnte tengo en la partición C: (78Gb) Win7 y en el D: (154Gb) La información..

Me gustaría dejar el C así, y particionar el D para poner el linux y el resto que siga para la información.

Por ahora solo utilizaría linux para irme acostumbrando y conociendo y para instalar Codeblocks que es el que utilizo para programar en C++.

He leido y mirado distribuciones como Ubuntu y linux Mint. Pero no estaría seguro de cual utilizar u otra ya que no cuento con un gran pc.
Muchas Gracias.
#21
Programación C/C++ / Array con numeros primos.
5 Septiembre 2014, 07:22 AM
Buenas Noches es mi primera vez en el foro, espero estar por acá un poco mas y ampliar mis conocimientos y apoyar y colaborar con los demás cuando este en capacidad y conozca de algún tema.  Quiero hacer un arreglo donde se visualicen los números primos del 1 al 100. Hice el siguiente código pero nada me imprime.
Alguna corrección o mejoría es bienvenida. gracias.

Código (cpp) [Seleccionar]
/* Escribir un programa que almacene en un arreglo los
   números primos comprendidos entre 1 y 100. */

#include <iostream>
#include <stdlib.h>
using namespace std;

int main()
{
   int array_prime[100];
   int z,x,num=1,add=0;

   for(x=0;x<100;x++)  // recorro y lleno el arreglo con los # del 1 al 100
   {
       array_prime[x]=num++;
   }
     for(x=0;x<100;x++) //Recorro el arreglo
     {
       for(z=1;z<=x;z++) // for para probar cada numero del arreglo es primo
       {
         if(x%z==0)add++;  // si el residuo es 0, contador add cuenta.
       }
       if(add==2)  // si el contador es igual a 2, el #del arreglo es primo.
       {
          cout<<array_prime[x]; //asigno el #primo al array. imprimo
       }
     }
    cin.get();cin.get();
    return 0;
}