|
Mostrar Mensajes
|
Páginas: 1 2 3 [4] 5
|
31
|
Programación / Programación C/C++ / Ayuda con Directorio en c++
|
en: 1 Junio 2015, 04:04 am
|
Hola buenas! Tengo problemas con este código, estoy leyendo un libro "Estructura de datos con C++" viene un ejercicio de crear un directorio apartir de un archivo de texto, viene el codigo y solamente lo estoy copiando, el problema está (creo) al asignar la memoria no sé como arreglarlo, ojalá puedan decirme que está mal :C gracias! Directory-Entry.h #include <iostream> using namespace std; class Entrada_Directorio{ public: Entrada_Directorio(string _Nombre, string _Numero) : Nombre(_Nombre), Numero(_Numero){} Entrada_Directorio(){} string dar_Nombre() const {return Nombre;} string dar_Numero() const {return Numero;} void mod_Numero(const string &nuevo_Numero) {Numero=nuevo_Numero;} private: string Nombre; string Numero; };
Arreglo_PD.h #include <string> #include "Directory-Entry.h" using namespace std; class Directorio_Tel{ public: Directorio_Tel(){} // Cuando lo pongo como Directorio_Tel(); me da error al crear el objeto ~Directorio_Tel(){} void cargar_datos(const string &nombre_arch); string buscar_nom(const string &Nombre) const; string anadir_modif(const string &Nombre, string &Numero); string eliminar(const string &Nombre); void guardar(); friend ostream& operator<<(ostream &os, const Directorio_Tel &Tel); private: int buscar(const string &Nombre) const; void agregar(const string &Nombre, string &Numero); void eliminar(int num); void realocar(); int tamano; int capacidad; Entrada_Directorio* Directorio; string nombre_arch; bool modificado; };
Arreglo_PD.cpp #include "Arreglo_PD.h" #include <fstream> #include <conio.h> using namespace std; void Directorio_Tel::cargar_datos(const string &nombre_arch){ this->nombre_arch=nombre_arch; ifstream in(nombre_arch.c_str()); if (in){ string Nombre; string Numero; while (getline(in,Nombre,'\n')){ if (getline(in,Numero,'\n')){ cout<<Nombre<<endl; cout <<Numero<<endl; //Coloqué esto para ver como se van agregando los nombres... agregar(Nombre, Numero); //Desde aqui todo bien al mandar a llamar esta funcion } } in.close();//No entiendo como es que (según el libro) esto logra cargar todo el archivo... } } string Directorio_Tel::buscar_nom(const string &Nombre) const { int num=buscar(Nombre); if(num!=-1){ return Directorio[num].dar_Numero(); } else { return ""; } } string Directorio_Tel::anadir_modif(const string &Nombre, string &Numero) { string numero_ant=""; int num=buscar(Nombre); if(num!=-1){ numero_ant=Directorio[num].dar_Numero(); Directorio[num].mod_Numero(Numero); } modificado=true; return numero_ant; } string Directorio_Tel::eliminar(const string &Nombre){ ; } void Directorio_Tel::guardar() { if (modificado){ ofstream out(nombre_arch.c_str()); for(int i=0; i<tamano; i++){ out << Directorio[i].dar_Nombre() <<endl; out << Directorio[i].dar_Numero() <<endl; } out.close(); modificado=false; } } int Directorio_Tel::buscar(const string &Nombre) const { for(int i=0; i<tamano; i++){ if (Directorio[i].dar_Nombre()==Nombre) return 1; } return -1; } void Directorio_Tel::agregar(const string &Nombre, string &Numero) { if(tamano==capacidad) realocar(); //Aquí llama a la función erronea Directorio[tamano]=Entrada_Directorio(Nombre,Numero); tamano++; } void Directorio_Tel::eliminar(int num) { ; } //Esta es la funcion que da error void Directorio_Tel::realocar() { capacidad*=2; Entrada_Directorio* nuevo_Directorio=new Entrada_Directorio[capacidad]; getch(); //Este getch lo puse por que después de aquí se hace el error for(int i=0; i<tamano; i++){ nuevo_Directorio[i]=Directorio[i]; } delete[] Directorio; Directorio=nuevo_Directorio; } ostream& operator<<(ostream &os, const Directorio_Tel &Tel) { for(int i=0; i<Tel.tamano; i++){ os<<Tel.Directorio[i].dar_Nombre()<<endl; os<<Tel.Directorio[i].dar_Numero()<<endl<<endl; } return os; }
main()... #include <iostream> #include "Arreglo_PD.h" using namespace std; int main(){ Directorio_Tel D1; D1.cargar_datos("Directorio.txt"); cout << D1; }
Nota: Crear el archivo de texto xD De antemano muchas gracias y espero que puedan ayudarme!
|
|
|
32
|
Programación / Programación C/C++ / Re: Función recursiva en C++
|
en: 22 Mayo 2015, 03:14 am
|
¿Quieres que pida el número por pantalla? si sí, CREO que buscas esto... #include<iostream> using namespace std; int suma(int x) { if(x==1) return 1; return x+suma(x-1); } int main() { int x; cout << "Ingresa un numero: "; cin>> x; cout<<suma(x)<<endl; cin.get(); cin.get(); return 0; }
|
|
|
33
|
Programación / Programación C/C++ / Re: [Aporte] fixedInteger.h
|
en: 19 Mayo 2015, 04:50 am
|
Se me hace más fácil esto #include <iostream> #include <stdlib.h> using namespace std; int main() { char datos[21]; int x; do{ cout << "Ingresa un numero: "; cin.getline(datos,20); x=atoi(datos); if (x==0) cout << "\nSolo ingresa numeros!!!\n\n"; }while(x==0); cout <<"El numero que ingresaste es: "<< x; return 0; }
|
|
|
34
|
Programación / Programación C/C++ / Re: AYUDA!!! URGENTE POR FAVOR
|
en: 8 Mayo 2015, 06:02 am
|
#include <cstdlib> #include <iostream> using namespace std; int main() { int c=1, t=0, r=0, res=0; cout<<"ingrese la tabla que desee resolver\n"; cin>>t; while (c<=10) { r=t*c; cout<<t<<"*"<<c<<"\n"; cin>>res; c++; if(res==r) //Pusiste un punto y coma que no era cout<<"correcto\n"; else cout<<"falso\n"; } system("PAUSE"); return EXIT_SUCCESS; }//Te faltaba cerrar la llave de tu funcion...
|
|
|
35
|
Programación / Programación C/C++ / Re: [Ayuda] Programa sobre tabla de multiplicar me tiene mal T_T
|
en: 1 Mayo 2015, 19:08 pm
|
Creo esto es lo que quieres, busca un buen libro de programación "Aprendiendo c en 21 días" tal ves te ayude un poco. #include <iostream> //Esto es solo si tu compilador lo necesita using namespace std; main() { //Variables a utilizar int n, res, cont=0; char S; do { cout << "Ingrese la tabla que quiere evaluar: "; //Ingresas la tabla cin >> n; //Crea un ciclo de 1 a 10 que son las veces que se va //a repetir y de igual manera el numero por el cual se //va a multiplicar. for (int i=1;i<=10;i++) { //Muestra por pantalla la opreacion cout << n <<" * "<< i << "= "; //Introduces el resultado cin >> res; //Evalua el resultado, si es igual al de la operacion //se le aumenta al contador +1 if (res==n*i) { cont++; } } //Imprime el resultado del contador cout << "\nTu resultado fue: "<< cont; //Pide al usuario una letra para continuar o no cout << "\n\nDesea continuar? S/N: "; //Ingresa la letra cin >>S; //evalua la letra para ver si repite el ciclo do-while }while (S=='S'||S=='s'); return 0; }
|
|
|
36
|
Programación / Programación C/C++ / Re: Duda sobre graficas en c.
|
en: 21 Abril 2015, 07:05 am
|
Mira... esta es una idea falta depurarlo un poco pero fue lo mejor que pude hacer en un rato, saludos! #include <iostream> #include <stdlib.h> #include <stdio.h> #include <windows.h> #include <conio.h> using namespace std; void gotoxy(int x,int y); #define MAX 40 class Grafica { public: Grafica(int y, int x) { MAX_X=x; MAX_Y=y; } void tabla() { cout << "\tGrafica" <<endl<<endl; for(int y=MAX_Y;y>=0;y--) { if(y<10) cout << " "; cout << y << "-" << char(179); if(y>0) { cout << endl; } if(y==0) { for(int x=0;x<MAX_X;x++) { cout << char (196)<< char(179); } } } } void llenar() { int j=0,x=5,y=2,cont=0; while(cont<MAX_X*2) { for(int i=MAX_Y;i>0;i--) { if(d[j]==i) { gotoxy(x,y++); cout << char (177)<< endl; d[j]--; } else {cout << endl; y++;} } j++; x++; cont+=2; if(j<MAX_Y) { x=5+cont; y=2; } } } void in_datos() { for (int i=0;i<MAX_X;i++) { cout << "Ingresa los datos de x"<<i+1<< ": "; cin >> d[i]; } } private: int MAX_X,MAX_Y; int d[MAX]; }; COORD coord={0,0}; void gotoxy(int x,int y) { coord.X=x; coord.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),coord); } main () { int x,y; cout << "Ingresa la cantidad maxima en Y: "; cin >> y; cout << "Ingresa cuantos datos hay en X: "; cin >> x; Grafica G1(y,x); G1.in_datos(); system("cls"); G1.tabla(); G1.llenar(); gotoxy(x,y); cout << endl<<endl<<endl; getch(); return 0; }
|
|
|
37
|
Programación / Programación C/C++ / Re: Ayuda para un contador
|
en: 17 Abril 2015, 03:41 am
|
Haz intentado poner la variable "c" como tipo static int ? por que como sales de la función de tu menú SUPONGO que muere la variable. Inténtalo, si no publica tu código. static int c=0;
Y tu código yo lo pondría así: switch(num_op) { case 1: printf("Consulta: %d\n\n", c); printf("Ingrese el nombre del lugar de origen del recorrido:\n"); scanf("%s", &s_origen); printf("\n"); printf("Ingrese el nombre del lugar de destino del recorrido:\n"); scanf("%s", &s_destino); printf("\n"); ValiHora(); ValiPresupuesto(); break; default: break; }
|
|
|
38
|
Programación / Programación C/C++ / Re: Menú ¿Dinámico? en C
|
en: 6 Abril 2015, 04:34 am
|
No se si te entendí bien con lo de la función menu(), pero si retoma la opción o bueno al regresar si se queda seleccionada, solo quería saber si el código que hice se puede simplificar x). Veré si puedo hacer lo de los arreglos y gracias aunque aún no se programar en C++
|
|
|
39
|
Programación / Programación C/C++ / Menú ¿Dinámico? en C
|
en: 5 Abril 2015, 20:22 pm
|
Buenas, no se si tenga algún nombre en especifico este tipo de menús, acabo de hacer esta "plantilla" por así decirlo, sólo que quiero saber si se puede simplificar más o que consejo me darían para hacer los menús así. #include <iostream> #include <conio.h> #include <stdlib.h> #include <stdio.h> #include <windows.h> using namespace std; //Define las opciones máximas. #define opmax 3 void SetBG(int ForgC, int BackC); void menu (); int tec(int *o1,int *o2,int *o3,int *y,int *t1,int *t2,int *t3); main () { while (1) { menu(); } } //Define la función de menú void menu () { SetBG(15,0); static int o1=14,o2=0,o3=0,y=0,t1=0,t2=15,t3=15; do{ system("cls"); cout << "\n MENU"; cout << "\n=========="; SetBG(t1,o1); cout << "\n\n*Opcion 1"; SetBG(t2,o2); cout << "\n\n*Opcion 2"; SetBG(t3,o3); cout << "\n\n*Opcion 3"; SetBG(15,0); }while (tec(&o1,&o2,&o3,&y,&t1,&t2,&t3)!=13); switch (y) { case 1: system("cls");cout << "Ejecutando 1"; break; case 2: system("cls");cout << "Ejecutando 2"; break; case 3: system("cls");cout << "Ejecutando 3"; break; default: break; } getch(); } //Define la función que lee las teclas usadas por el usuario. int tec(int *o1,int *o2,int *o3,int *y,int *t1,int *t2,int *t3) { int s; s=getch(); switch (s) { case char(72): *y-=1; break; case char(80): *y+=1; break; case char(13): return 13; break; default: break; } switch (*y) { case 1: *o1=14;*o2=0;*o3=0; *t1=0;*t2=15;*t3=15; break; case 2: *o1=0;*o2=14;*o3=0; *t1=15;*t2=0;*t3=15; break; case 3: *o1=0;*o2=0;*o3=14; *t1=15;*t2=15;*t3=0; break; default: break; } if (*y==0) *y+=1; if (*y>opmax) *y=*y-1; } void SetBG(int ForgC, int BackC) { WORD wColor = ((BackC & 0x0F) << 4) + (ForgC & 0x0F);; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColor); }
|
|
|
40
|
Programación / Programación C/C++ / Re:
|
en: 5 Abril 2015, 17:34 pm
|
If(grade=='a' || grade=='A') ++aCount else if(.....)
Exacto, debes hacerlo así, sólo que no te recomiendo ese libro para empezar de nuevo a programar, en lo particular pienso que su forma de enseñar es muy enredada busca "Aprendiendo C en 21 días" te cambiará la vida o si es que tienes la posibilidad de comprar "PROGRAMACIÓN EN C /C++ JAVA Y UML." De Luis Joyanes Aguilar / Ignacio Zahonero Martinez igual es muy bueno para los demás lenguajes y reafirmar el C. Saludos!
|
|
|
|
|
|
|