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

#91
hola a todos, he estado investigando acerca de la asignacion dinamica de memoria en c++, pero necesito encontrar la diferencia entre malloc, calloc, realloc puesto que los tres se usan para reservar bloques de memoria libre, agradecere la orientacion...
#92
Un saludo a todos, necesito saber como obtener el tamaño de un fichero en C  ¿O solo se puede en C++?
Código (cpp) [Seleccionar]


/*estoy utilizando*/  FILE *fichero;// en c

//se que en c++ es

int tam;
fstream fichero;

fichero.seekg(0,ios::end);

tam=fichero.tellg();//esto siempre que el fichero sea binario secuencial

//o si quiero saber cuantas estructuras tengo escritas

tam=fichero.tellg()/sizeof(estructura);

agradecimientos de antemano
#93
Programación C/C++ / arreglo de doble buffer
22 Mayo 2014, 04:15 AM
Hola a todos, tengo que usar un arreglo con doble buffer para un analisis lexico, de modo que pueda retroceder, por medio de un monton de algoritmos que he leido he intentado declarar un arreglo de la siguiente manera aunque tengo error:
Código (cpp) [Seleccionar]

const int halfsize 1024;
const int size 2*halfsize;

char buffer[size];

necesito una orientacion sobre como declarar un arreglo similar para hacer un escaner y que pueda empezar llenando por la parte baja (halfsize)
#94
Un saludo a todos, solo tengo una pequeña duda, tengo un codigo de arboles B, pero necesito modificar el orden del arbol B, o sea cuantos subarboles puede tener pero en el codigo el orden es una constante para crear el arreglo, y me da error al intentar modificar porque esta declarada como una constante, en fin lo que necesito es modificar esa variable de modo que el usuario defina el orden aqui la parte del codigo
Código (cpp) [Seleccionar]

#include <stdio>
#include <stdlib>
#include <conio>

#define MAX_LONG 90
#define ARRIBA 72
#define ABAJO 80
#define ENTER 13

const int M=5;//aqui necesito modificar durante la ejecucion del programa
                         // pero me da error si solo la declaro como una variable no
                          // constante por lo del arreglo de claves que esta en la
                         //estructura del nodo
struct nodo
{
   int n; // n < M n? de claves en el nodo siempre ser? menor que el orden del B tree
   int arreglo_claves[M-1]; //arreglo de claves
   struct nodo *p[M]; // (n+1 punteros que van a ser usados
}*root=NULL;//la raiz lo inicializamos en NULL
#95
Un saludo a todos, estoy un poco confundido entre el uso de una variable tipo string y una variable tipo char, desde que empece en c++ cualquier cadena la he guardado en un arreglo tipo char, pero ultimamente estuve estudiando el uso del namespace y vi que puedo usar con esto una variable tipo string donde tambien guardo una cadena siempre con cin como que si fuera un entero y no con fgets que utilizo cuando es un arreglo tipo char lo que no se ahora cuando usar un string o un arreglo tipo char para guardar el nombre de una persona por ejemplo. Asimismo muchos ejemplos que he visto solo declaran using namespace std; y despues declaran string a;  pero me da error les dejo un codigo aunque no se si estoy implementando de manera correcta el uso de namespace y de string y si corre
Código (cpp) [Seleccionar]
#include <iostream>
#include <cstring>
#include <conio>

namespace std{
    string a;
   }
using namespace std;

int main() {
cout << "Introduciendo palabra: ";
cin>>a; // veo que me guarda hasta donde encuentre un espacio en blanco
//a = "d 91";

cout << "Mostrando lo que tiene a: "<<a;
getch();

return 0;
}
#96
Programación C/C++ / barra de progreso en c++
27 Abril 2014, 03:18 AM
hola a toda la comunidad, solo necesito implementar una barra de progreso en c++, por ejemplo tengo un archivo txt y lo necesito cargar a una determinada estructura; pero tengo que mostrar el avance de la carga, ya he buscado como hacer las barras, pero las que he hecho solo funcionan con un ciclo for o con la funcion sleep donde yo decido cuanto se tardara en llenar, lo que ya se como hacer es contar el tiempo que ha durado la carga del archivo, pero no se como contar el tiempo restante para la carga que creo ayudaria a llenar la barra  agradecere las ideas.
#97
Programación C/C++ / guardar nodos en txt
17 Abril 2014, 19:21 PM
hola a todos, estoy haciendo mi proyecto final con programacion orientado a objetos pero no he encontrado algun tutorial de estructura de datos con archivos, pero he intentado ingeniarmelas, usando una cola dinamica para los pacientes que llegan a una clinica, he trabajado con archivos pero con estructuras no con clases aunque al parecer la diferencia es que las estructuras no tienen metodos, constructores y destructores y como son dinamicas aumenta la dificultad, se muy bien que en este codigo estoy alternando c y c++ pero lo que es archivos se me es mas facil en c. Entonces mi  dificultad es como guardar una cola dinamica en txt y despues volver a cargarla, hice algunos procedimientos para guardar pero no se si esta bien aqui el codigo

Código (cpp) [Seleccionar]

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include<string.h>


class nodo {
   public:
    nodo(int num, char name[20], nodo *sig = NULL)
    {
    numero=num;
    strcpy(nombre,name);
    siguiente=sig;
    }//constructor
   private:
    int numero;
    char nombre[20];
    nodo *siguiente;

    friend class cola;
};

typedef nodo *pnodo; //definimos un tipo de dato personalizaodo. Tipo puntero de la clase NODO

class cola {
   public:
       cola() : primero(NULL), ultimo(NULL) { }
    ~cola();

    void encolar(int num, char name[]);
    int desencolar();
    void Mostrar();
    void Guardar(int cont);
  // private:
   pnodo primero, ultimo;
};
cola paciente;
cola::~cola()
{
   while(primero) desencolar();
}

void cola::encolar(int num, char name[])
{
   pnodo nuevo;
   nuevo = new nodo(num,name);
   if(ultimo) ultimo->siguiente = nuevo;
   ultimo = nuevo;
   if(!primero) primero = nuevo;
}

int cola::desencolar()
{
   pnodo nodo; /* variable auxiliar para manipular nodo */
   int v;      /* variable auxiliar para retorno */

   nodo = primero;
   if(!nodo) return 0; /* Si no hay nodos en la pila retornamos 0 */
   primero = nodo->siguiente;
   //v = nodo->valor;
   delete nodo;
   if(!primero) ultimo = NULL;
   return 1;
}            /*Procedimiento Mostrar Cola*/
/*--------------------------------------------------------*/
void cola::Mostrar(){                                     //
pnodo aux;                                                //
aux=primero;                                           //
   while(aux!=NULL){                                      //
      cout<<"\n\nnumero de paciente "<<aux->numero;
      cout<<"\nNombre "<<aux->nombre;                              //
      aux=aux->siguiente;                                 //
   }                                                      //
}                                                         //

/********************Guarda en txt*************************/

void cola::Guardar(int cont){
FILE *ptr=fopen("C:\\SaveStruct.txt","at+"); /*en esta parte no se si lo estoy hacien bien*/
   fwrite(&paciente,sizeof(paciente),1,ptr);    //intento guardar los nodos como una estructura normal
   fclose(ptr);
   cout<<"Operacion exitosa";
   getch();

}

void IngresoDatos(){
   int no;
   char nombre[15];
clrscr();
cout<<"Ingrese no: ";cin>>no;
   cout<<"Ingrese nombre: ";fgets(nombre,15,stdin);
   if(nombre[strlen(nombre)-1]=='\n')

   nombre[strlen(nombre)-1]='\0';
   paciente.encolar(no, nombre);
   getch();
}

void CargarTxt(){
clrscr();
   cout<<"en construccion";
   getch();
}
int main()
{
   cola Cola1;
   cola Cola2;

   int contador=0;
   int num=0;
   int no;
   char nombre[15];
   cola call;
   do{
   clrscr();
      cout<<"\n1. Ingresar datos \n";
      cout<<"2. Mostrar cola\n";
      cout<<"3. Desencolar\n" ;
      cout<<"4. Guardar en txt\n";
      cout<<"5. Leer txt\n";
      cout<<"6. Salir";
      cout<<"\n Seleccione su opcion: ";
      cin>>num;
      switch(num){
      case 1:
      cout<<"\nIngreso de datos \n";
      IngresoDatos();
         contador=contador+1;
      break;

      case 2:
      clrscr();
       cout<<"Mostrar cola\n";
paciente.Mostrar();
       //       barajar(Cola1,Cola2);
       getch();
      break;

      case 3:
      cout<<"desencolando";
      paciente.desencolar();
      getch();
      break;

      case 4:
      cout<<"Guardando";
      paciente.Guardar(contador);
      getch();
      break;

      case 5:
      cout<<"cargando";
      CargarTxt();
      }
   }while(num!=6);

}//encola y desencola correcta el problema guardar esa cola en txt y despues cargarla
#98
hola a todos, tengo un programita que debe recibir la fecha de nacimiento con enteros y despues mostrarlo unido como una cadena, lo recibo y paso a cadena los enteros, lo unico que al copiar o concatenar a una sola cadena no me lo copia aqui el codigo:
Código (cpp) [Seleccionar]
#include <string.h>
#include <stdio.h>
#include<stdlib.h>

int main(void)
{
   char destination[25];
   char *blank = "-";
   char dias[2];
   char mess[2];
   char age[4];

   int dia, anho;
   int mes;

   printf("ingrese dia: ");scanf("%d",&dia);
   printf("ingrese mes; ");scanf("%d",&mes);
   printf("ingrese anho: ");scanf("%d",&anho);

      //int char base
   itoa(dia,dias,10);  //paso entero a cadena
   itoa(mes,mess,10);//aqui no hay problema porque ya debugge
   itoa(anho,age,10);

   //aqui creo que esta el problema porque solo aparece el anho
   strcpy(destination, dias);  //copiar a una sola variable
   strcat(destination, blank);
   strcat(destination, mess);   //concatenando lo demas
   strcat(destination, blank);
   strcat(destination, age);

   printf("\nla cadena %s", destination); //mostrando la nueva cadena
   system("pause");
   return 0;
}


agradecere su orientacion,
#99
Programación C/C++ / vaciar una variable
14 Abril 2014, 15:14 PM
hola a todos, me tope con un poblemita en un codigo de c, necesito saber que tecla presione conforme el ascii de cada letra, pero lo hago dentro de un bucle y la captura la hago asi
Código (cpp) [Seleccionar]
int num=getch();
printf("El codigo de la tecla es %d",num);

al presionar la primera vez funciona perfectamente pero al presionar otra tecla
nuevamente me sale la primer tecla que presione, entonces lo que quiero saber como vaciar lo que tiene num para presionar otra tecla y capture el codigo, he probado con fflush(stdin); pero no hace nada
#100
hola a todos tengo que hacer mi proyecto final en estructura de datos pero tengo que validar entradas, en c++ se puede comprobando la cadena despues del enter, pero yo quiero hacerlo caracter por caracter casi lo logro, lo unico es que no puedo borrar un caracter presionando backspace, porque solo tengo comprendidas las teclas del abecedario y espacio y las envio a una funcion para que las guarde en un arreglo alguien me puede ayudar aqui esta el codigo


Código (cpp) [Seleccionar]
#include<conio.h>
#include<iostream.h>
#include<stdio.h>
#include<string.h>

char bufletras[25];
int contletras=0;
int num, lon;

char emite(int numero){
  bufletras[contletras]=numero;
  contletras+1;

   return *bufletras;
}
main(){

cout<<"Escriba su nombre: ";
   do{
   num=getch();
if(num>='a' && num<='z')
      {cout<<emite(num);}
   else if(num>='A' && num<='Z')
     { cout<<emite(num);}
   else if(num==0x20)//space
{cout<<emite(num);}
    //else if(num==0x8)  //de la tecla backspace

   }while(num!=13); //enter
}