|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Luciano9
Páginas: [1]
1
« en: Martes 6 de Octubre de 2009, 18:27 »
Por ahí cuando dice "REAL" se refiere al conjunto de números reales R... pero en programación decir real = float = decimal no? NUMERO REAL "El que se expresa por un número entero o decimal".
2
« en: Jueves 1 de Octubre de 2009, 17:36 »
Me maree, qué tiene que ver eso con las etiquetas de código?
:
3
« en: Lunes 28 de Septiembre de 2009, 15:15 »
Bue no sería algo asi?:
int array[30];
int *p=array;
y asi, no puedo estar tan equivocado...
4
« en: Domingo 27 de Septiembre de 2009, 22:45 »
int *array[3];
array++ o array-- aumenta o disminuye el puntero.
5
« en: Sábado 26 de Septiembre de 2009, 19:14 »
se, postie y no vi nada JEJEJ....
6
« en: Sábado 26 de Septiembre de 2009, 19:01 »
cmath (math.h) header C numerics library cmath declares a set of functions to compute common mathematical operations and transformations: Trigonometric functions: cos Compute cosine (function) sin Compute sine (function) tan Compute tangent (function) acos Compute arc cosine (function) asin Compute arc sine (function) atan Compute arc tangent (function) atan2 Compute arc tangent with two parameters (function) Hyperbolic functions: cosh Compute hyperbolic cosine (function) sinh Compute hyperbolic sine (function) tanh Compute hyperbolic tangent (function) Exponential and logarithmic functions: exp Compute exponential function (function) frexp Get significand and exponent (function) ldexp Generate number from significand and exponent (function) log Compute natural logarithm (function) log10 Compute common logarithm (function) modf Break into fractional and integral parts (function) Power functions pow Raise to power (function) sqrt Compute square root (function) Rounding, absolute value and remainder functions: ceil Round up value (function) fabs Compute absolute value (function) floor Round down value (function) fmod Compute remainder of division (function)
7
« en: Sábado 26 de Septiembre de 2009, 18:59 »
el .h es para compiladores mas viejos, ni lo mires, pero es el que tengo a mano jajaj
8
« en: Sábado 26 de Septiembre de 2009, 18:57 »
#include <stdio.h> #include <string.h> #pragma warning (disable:4996) #define MAX 100 #define CANT 1000 typedef struct treg{ int dia; int mes; int anio; char nyap [MAX]; int doc; }; int menu(); void opcion(int opc,int cant,treg agenda, FILE *arch); void alta (treg agenda,int cant); int main (){ FILE *arch; treg agenda[5]; int opc=0, cant=0; opc=menu(); opcion(opc,cant,agenda[CANT],arch); return 0; } int menu (){ int op; printf("nnn1- Alta personasn2- Baja personasn3- Verificar si el primer nombre es capicuan4- Imprimir datos personan5- Guardar persona en un archivon6- Modificar personan7- Ordenar por Apellidon8- SalirnnElija la Opcion desada:n"); return op; } void opcion(int op,int cant,treg agenda, FILE *arch){ while(op!=8){ if(op==1){ alta(agenda,cant); } op=menu(); } } void alta (treg agenda, int cant){ int i; while(cant<CANT || i!=-1){ puts("Nombre y Apellido:n"); printf("Numero de documento:n"); printf("Fecha de Nacimiento:n"); printf("Presione 1 para continuar, o -1 para finalizarn"); cant=cant+1; } }
Si te fijas, ahí compila... pero de todas formas la lógica no está funcionando muy bien que digamos. No entiendo muy bien tu programa y no tengo mucho tiempo ahora, pero te doy un consejo. Identá bien las cosas y comentá un poco que hacen tus funciones ya que sino hay que ser un dios para entender lo que vos quisiste pensar! Saludos espero que te sirva, ahora fijate como arreglarlo
9
« en: Sábado 26 de Septiembre de 2009, 18:42 »
#include <iostream.h> #include <math.h> #include <iomanip.h> #include <stdlib.h>// Para system?? //using namespace std; int main () { // definicion de variables int perimetro; int volumen; int area; int largo; int ancho; int profundidad_promedio; // Datos a Entrar cout <<"Entre el largo: "; cin >>largo; cout <<"Entre el ancho: "; cin >>ancho; cout <<"Entre la profundidad promedio: "; cin >>profundidad_promedio; // Aqui se realizaran los calculos perimetro= 2*(largo + ancho); volumen = largo*ancho*profundidad_promedio; area= 2*(largo + ancho )*profundidad_promedio + largo * ancho;//FALTABA ; cout<<"El Largo es: "<<largo<<endl; cout<<"El Acho es: "<<ancho<<endl; cout<<"La Profundidad es: "<<profundidad_promedio<<endl; //FALTABA _ en profundidad_promedio cout<<"El Perimetro es: "<<perimetro<<endl; cout<<"El Volumen es: "<<volumen<<endl; cout<<"El Area es: "<<area<<endl; return 0; }
Esto es para turboc++ no se que compilador usas, pero simplemente sacales los .h a los include y deberia funcionar.
10
« en: Domingo 20 de Septiembre de 2009, 17:05 »
Con respecto a lo de aberración, cada cual tiene sus formas de enseñar, es el ultimo cuatrimestre que vemos C++. Empezamos con java a partir de ahora, y estoy en un lugar que tiene bastante renombre, así que dudo que no sepan lo que hacen...
En fin volviendo al tema, gracias por la respuesta. Lo que noté es que en algunas PCS con windows XP funciona, incluso en una pc mia con una 9800GT funciona y Windows XP SP1. En todas las demás no me está funcionando, así que supongo que no es un problema de las tarjetas de video. También me llama la atención que no funcione en DosBOX...
Estoy intentando cambiar a Borland 5.5 pero tengo algunos problemas de stdlib (el modo grafico anda perfecto), me dice que tengo algunos errores de sintaxis en el .h Gracias por la ayuda..
11
« en: Sábado 19 de Septiembre de 2009, 01:59 »
Hola gente, escribo porque tengo el siguiente problema. En donde estudio, estamos empezando con el modo graphico. Utilizamos el viejo y conocido IDE Borland Turbo C++ (el de DOS). Mi programa hace una simple tabla, en algunas PCS la puedo visualizar perfectamente, en cambio, en mis 3 pcs de mi casa, no puedo porque me arroja un error del NTVDM. Busqué mil y un soluciones, y ninguna funcionó.. Probé usar DOSBOX y tampoco puedo ver los graficos... El programa compila perfectamente, cuando lo ejecuto se cierra el turbo o me tira el error de NTVDM 16 bits subsystem algo asi.
Alguien sabe a qué se debe?, tiene que ver con windows xp sp3?...
(Intente cambiar de IDE pero tengo problema en la compatibilidad de algunas librerias... por ejemplo uso stdlib y me tira errores en la libreria así que no tengo idea como hacer...)
espero que alguien me pueda ayudar!
12
« en: Lunes 24 de Agosto de 2009, 16:11 »
Si no sabés hacer un main, que es lo primero de todo, qué haces buscando un código en inet? void main () { llamada(parametro1,parametro2); }
13
« en: Jueves 23 de Julio de 2009, 06:55 »
posteá aunque sea que hiciste hasta el momento, en código..
14
« en: Lunes 11 de Mayo de 2009, 17:40 »
en 3 lineas:
char*tmp; while((tmp=strchr(cadena,32))!=NULL) sprintf(tmp,"%s",tmp+1);
32 es el codigo de el caracter de espaciado
ademas asi no necesitas el string.h los programadores terminamos vagos D: jajaj
15
« en: Lunes 11 de Mayo de 2009, 17:35 »
Muy útil este thread para mi, gracias
16
« en: Domingo 10 de Mayo de 2009, 19:14 »
Gracias por la ayuda.. Te soy sincero, estuve toda la mañana tratando de implementar esto pero no me sale.
En pocas palabras lo que pense es esto:
Antes de leer el archivo, voy a tener que posicionarme en el inicio del archivo. Así cuando lea, voy a poder leer desde el inicio hasta que termine el archivo. Ahora bien, hay una funcion que me dijiste que se llama fseek la cual, supuestamente, me permite retroceder pasandole el Arch, el offset y el whence (SEEK_...) Pero también lei que hay otras como ftell y rewind... No se cómo aplicar este código a mi razonamiento.
Si me podes dar una mano a nivel codigo, te agradezco. ...
1) AbroArchivodeEntrada(RESULT.....) 2) Vuelvoelpunteroalinicio(....) 3)Leo el archivo 4)Mientras !Fin 5)LEo el archivo
gracias ...
17
« en: Domingo 10 de Mayo de 2009, 16:38 »
Abro el archivo de salida en modo a+b (el ejercicio lo pidio en append) Leo el archivo while(!FIn){ leo el archivo Muestro el registro leido getch(); } Cierro archivo...
Lo curioso es que me lee el último registro.. La verdad ya no se que probar, voy a tener q entregarlo asi XD
18
« en: Domingo 10 de Mayo de 2009, 05:39 »
No es muy raro que en tu primer programa aparees vectores? Yo que vos primero reviso como funcionan los vectores. Tenés que ver las formas de moverte a través de los vectores, cuando tenga tiempo te mando 1 poco de info.
saludos
19
« en: Domingo 10 de Mayo de 2009, 02:39 »
no puedo creer el laburo que te has tomado para contestar.
como e dicho antes .... FUIRA! Todo depende de que quiera el chico.. si saber programar, o aprobar la materia , no me cuesta nada tipear un par de líneas estoy al pedo JEJE y en el proyecto q estoy haciendo tengo 1 problema con el leer archivo :@:@:@
20
« en: Domingo 10 de Mayo de 2009, 01:36 »
Primero fijate que hace el ciclo while. Después tenes que saber que es sacar un promedio. Qué necesitas? Un alumno, notas, cantidad de notas. Con esto podes hacer "PROMEDIO DEL ALUMNO: " = (NOTAS SUMADAS)/CANT NOTAS Ahora tenes que pensar que vas a usar para guardar la informacion de 10 alumnos y como te viene la informacion: La ingresas vos paso a paso y que si ingresas -1 o * termina? Te viene de un archivo ordenado por alumno? De acuerdo a eso plantearás el problema. Suponiendo que la ingresás vos manualmente ... Agarrá 1 papel y planteá una estrategia de cómo lo vas a hacer y un lote de prueba para ver si funciona:
LOTE DE PRUEBA 1) campos: nomb, nota, contnota |0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0| 0 1 2 3 4 5 6 7 8 9 VEC_ALUMNOS
|__| Variable Nombre |__| Variable Nota
2) campos: nomb, nota, contnota |Josecito-5-1|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0| 0 1 2 3 4 5 6 7 8 9 VEC_ALUMNOS |Josecito| Variable Nombre |5| Variable Nota
3) |Josecito-5-1|Rosa-6-1|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0| 0 1 2 3 4 5 6 7 8 9 VEC_ALUMNOS |Rosa| Variable Nombre |6| Variable Nota
4) |Josecito-15-2|Rosa-6-1|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0|0-0-0| 0 1 2 3 4 5 6 7 8 9 VEC_ALUMNOS
|Josecito| Variable Nombre |10| Variable Nota
5)... 6)... 20) PROMEDIO MAXIMO: Jose - 8
SALIDA: ROSA - 7 PEPITO - 4 JOSE - 3 (...)
ESTRATEGIA DE RESOLUCION: Voy a necesitar un vector en donde pueda guardar las calificaciones de los alumnos que voy ingresando. En dicho vector voy a almacenar la cantida de notas sumadas para luego poder sacar un promedio por cada alumno ingresado. Luego de ingresado todos los alumnos, voy a sacar el promedio de todos ellos y guardarlos en el campo prom del vector. Como necesito mostrar el mayor y luego mostrar los demas descendentemente, voy a ordenar el vector con algun método de ordenamiento. Voy a mostrar la primer posicion del vector y voy a decir que es la nota mayor. Luego voy a mostrar las demás posiciones por pantalla con las notas de los demás alumnos.
----------------------------
Si te fijas, tenes el problema parcialmente resuelto. Obviamente ahora tenes que implementarlo, y pensar que variables usar para organizar esto, si hay algun TOPE que declarar, que preguntas hacer en los ciclos, si hay alguna otra condicion. Luego que ya sabes esto, ya podes ponerte a implementarlo en c/c++. Es muy recomendable que siempre que estés estudiando para programar, te guíes por este tipo de metodologías, pesadas, pero útiles a la hora de abrir la cabeza en el momento de hacer un problema.
Es muy corta la información que das en el foro como para que alguien te haga un algoritmo en c++, ya que te lo pueden hacer con 1 archivo, un vector, etc depende de como venga la informacion. Tenés que ser más específico.
Saludos, espero que esto te ayude un poco.
Nota: Siempre es preferible intentar hacer algo antes de postear para que te lo hagan, a menos que quieras ser un programador mediocre en el futuro (yo estoy estudiando al igual que vos, no soy ningún master)
21
« en: Domingo 10 de Mayo de 2009, 00:47 »
Ya lo solucione... era un temita del while !bFin.
Yo grabo 1 archivo. Quiero que el archivo al leerlo, lea Todos los registros que le grabe. Luego voy a grabar otro registro abajo del registro grabado en el archivo. Voy a abrir el programa y leer el archivo devuelta, y necesito Que me leea TODOS los registros y no sólo uno.
¿En qué modo tengo que grabar?..
gracias por todas las respuestas.
22
« en: Sábado 9 de Mayo de 2009, 00:30 »
El grabar me anduvo PERFECTO.. hice un programa de prueba pero tengo inconvenientes al leer... PRUEBA.CPP #define FLASE 0 #define TRUE (1==1) typedef struct ty_strct { int num; char letra; typedef int bool; }; void main () ty_strct strct, strct2; FILE *Arch; FILE *Arch2; bool bFin, bPudo; clrscr(); strct.num = 97; strct.letra = 'A'; AbrirArchivo (Arch,bPudo,"C:\PRUEBA.DAT",'S'); cout << strct.num << endl; cout << strct.letra << endl; cout << "Pulse una tecla para grabar..."; getch(); for (int i=0;i<2;i++) { GrabarArchivo (Arch,(void*)&strct, sizeof(ty_strct)); cout << "grabado ok"; } CerrarArchivo(Arch); AbrirArchivo(Arch2,bPudo,"C:\PRUEBA.DAT",'E'); cout << "Pulse una tecla para leer el archivo" << endl; getch(); do { LeerArchivo (Arch2, (void*)&strct2,sizeof(ty_strct),bFin); cout << "Archivo cargado "<< endl; }while (bFin == FALSE); CerrarArchivo(Arch2); cout << "Fin de carga" <<endl; getch(); }
RUTINA DE GRABAR: void GrabarArchivo (FILE *Arch, void *Reg, unsigned int tam) {" fwrite (Reg,tam,1,Arch); }
RUTINA DE LEER: void LeerArchivo (FILE *Arch, void *Reg, unsigned int tam, bool &bFin) { if (!(feof(Arch))) { fread (Reg,tam,1,Arch); bFin == FALSE; }else { bFin == TRUE; } }
------------------------ El problema es este: 1) ABRO EL ARCHIVO DE SALIDA. 2) GRABO A97 DOS VECES EN EL ARCHIVO 3) CIERRO EL ARCHIVO 4) ABRO EL ARCHIVO DE ENTRADA 5) LEO EL ARCHIVO HASTA Q SEA EL FIN DEL MISMO **** LEE 4 REGISTROS Y YO GUARDE 2*****
23
« en: Viernes 8 de Mayo de 2009, 22:17 »
gracias, era eso lo q necesitaba...
24
« en: Viernes 8 de Mayo de 2009, 21:40 »
Te agradezco la respuesta, pero soy bastante novato en el tema... Lo que entendí hasta ahora es esto: Yo tendría que pasarle a mi rutina "genérica" de grabar, un puntero a la posicion de memoria donde empiece mi registro... supongo que será un void * reg... algo asi. Despues tengo que pasarle el sizeof(miregistro), la cantidad de veces q graba y el archivo con la estructura FILE. en stdio.h está el encabezado del fwrite como unsigned fwrite(const void *__ptr, size_t __size_t, size_t __size_n, FILE * __stream);
Esto es totalmente generico, porque siendo REG o REGASDAD o REGISTROASD o lo que le pase, va a funcionar. Lo que quiero saber es como implementarlo en mi rutina (que en definitiva es la misma pero con mis propios nombres) gracias.
25
« en: Viernes 8 de Mayo de 2009, 21:04 »
&ArchHola, antes que nada me presento. Me llamo Luciano, estudio Analisis de Sistemas y soy nuevo en el foro. Tengo una duda sobre lo siguiente: Estoy haciendo 1 proyecto que maneja archivos. Tengo varios cpps con sus respectivos .h de los cuales uno se llama "ARCH.CPP" y tiene su "ARCH.H". Estos tienen las funciones básicas de archivos (grabar, leer, abrir, cerrar) pero de forma más genérica: "AbrirArchivo(parametros), en lugar de fopen = (parametros)". El proyecto necesita grabar 2 archivos, cada uno de una estructura diferente. Lo que necesito es saber como hacer esta libreria arch.h genérica para aceptar cualquiera de las dos estructuras que le mande por parámetro. (No puedo usar un #define TIPODATOARCHIVO ty_miregistro porque tengo 2 registros...) Tampoco estoy familiarizado con el uso de punteros ni objetos. ARCH.h #ifndef __ARCH_H #define __ARCH_H //Librerias #include <stdio.h> #include "TDARCH.h" //Prototipos void AbrirArchivo (FILE * &Arch, bool &bPudo, char * dir, char tipo); //Procedimiento de apertura de archivos de Entrada y de Salida void LeerArchivo (FILE * &Arch, ty_TDArch &Reg, bool &bFin); //Procedimiento de lectura de archivo void GrabarArchivo (FILE * &Arch, ty_TDArch &Reg); //Procedimiento de guardado de archivo void CerrarArchivo (FILE * &Arch); //Procedimiento de cerrado de archivo #endif /*__ARCH_H*/
ARCH.cpp //Librerias #include "ARCH.h" #include <iostream.h> //////////////////////////////////////////////////////////////////////////////////////////// //Rutina LeerArchivo (FILE * &Arch, ESTRUCT &estructura, bool &bfin) //////////////////////////////////////////////////////////////////////////////////////////// void LeerArchivo (FILE * &Arch, ty_TDArch &Reg, bool &bFin) //Rutina para leer un Archivo { if (!(feof(Arch))) { //Si no es fin de archivo fread (&Reg, sizeof(ty_TDArch),1,Arch); //Leo el archivo bFin = FALSE; //No termino la lectura, porque lo lei } else { //Caso contrario, Termino la lectura bFin = TRUE; } } //Fin de Rutina - LeerArchivo (FILE * &Arch, ESTRUCT &estructura, bool &bfin) - //////////////////////////////////////////////////////////////////////////////////////////// //Rutina - AbrirArchivo (FILE*Arch,bool&bPudo,char*dir,char tipo) - //////////////////////////////////////////////////////////////////////////////////////////// void AbrirArchivo (FILE * , bool &bPudo, char * dir, char tipo) //Rutina para abrir un archivo de Entrada o de Salida { if (tipo == 'E') { //Si el tipo de archivo es de Entrada Arch=fopen (dir,"rt"); //Abro el archivo de entrada if (Arch == NULL) { //Si no encuentra el archivo cout << "No se pudo abrir el archivo de Entradan"; bPudo=FALSE; //bPudo Abrirlo es FALSO }else{ bPudo=TRUE; //Caso contrario bPudo Abrirlo es VERDADERO } } else { //Caso contrario el archivo es de Salida Arch=fopen (dir,"a+"); //Abro el archivo de salida if (Arch == NULL) { //Si no encuentra el archivo cout << "No se pudo abrir el archivo de Salidan"; bPudo=FALSE; //bPudo Abrirlo es FALSO }else{ bPudo=TRUE; //Caso contrario bPudo Abrirlo es //VERDADERO } } } //Fin de Rutina - AbrirArchivo (FILE*Arch,bool&bPudo,char*dir,char tipo) - //////////////////////////////////////////////////////////////////////////////////////////// //Rutina - GrabarArchivo1 (FILE*Arch,ESTRUCT &estructura) - //////////////////////////////////////////////////////////////////////////////////////////// void GrabarArchivo1 (FILE * &Arch, ty_TDArch &Reg) { //Rutina para grabar un archivo fwrite (&Reg, sizeof(ty_TDArch),1,Arch); //Graba el archivo } //Fin de Rutina - GrabarArchivo (FILE*Arch,ESTRUCT &estructura) - //////////////////////////////////////////////////////////////////////////////////////////// //Rutina - CerrarArchivo (FILE * &Arch) //////////////////////////////////////////////////////////////////////////////////////////// void CerrarArchivo (FILE * &Arch) { //Rutina para cerrar un archivo fclose(Arch); //Cierra el archivo } //Fin de Rutina - CerrarArchivo (FILE * &Arch)
La idea de esta libreria propia, es que esté encapsulada. Para acceder a los datos de ella, pense hacer un TDARCH.h que la maneje, de esta forma no tendria que romper el encapsulamiento cada vez que quiera cambiar algo. TDARCH.h#include "STRCTP3.h" #define FALSE 0 #define TRUE (1 == 1) typedef int bool;
Ahora bien, tengo 2 registros que contienen lo siguiente: STRCTP3.Htypedef struct ty_RegOrig{ ty_VecV VecV; ty_VecVB VecVB; }; //estructura para registro de archivo vectores originales typedef struct ty_RegResult{ ty_VecResB VecResBOrd; ty_VecResB VecResBDes; ty_VecResB VecResBBin; ty_VecReO VecResOrd; }; //estructura para registro de archivo vectores de resultados
Estos 2 registros tengo que guardarlos en 2 archivos diferentes utilizando el mismo procedimiento de guardar. Y ahí está el problema, los tipos de dato son diferentes. Si alguien me puede explicar como hacer para pasarle directamente una posicion de memoria para que lea "X" tamaño, indiferentemente del tipo, le agradezco mucho. Espero que se entienda, me cuesta 1 poco explicar esto por acá. Muchas gracias de antemano. Saludos.
Páginas: [1]
|
|
|