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ú

Mensajes - Beginner Web

#501
Programación C/C++ / Re: Archivos binarios
5 Octubre 2018, 23:26 PM
Bueno, ya encontre el error no era lo que decian por aca, ahora quiero que los que piensen sean ustedes, no hace falta que me digan como arreglar el error, como mucho se puede decir la linea donde esta el error nada mas(faltan dos funciones, o sea 2 lineas de codigo)  ;-)
#502
Programación C/C++ / Re: Archivos binarios
5 Octubre 2018, 18:59 PM
NEBIRE, solo me lee el primer elemento del archivo los demas no, esta bien el recorrido o tengo que hacer otro especial para archivos binarios?
#503
Programación C/C++ / Re: Archivos binarios
5 Octubre 2018, 17:57 PM
Bueno la funcion consulta no me esta retornando valores validos, en un momento mi codigo retornaba puros 0 ahora retorna puros 1
#504
Programación C/C++ / Archivos binarios
5 Octubre 2018, 11:49 AM
Hola, miren no se que estoy haciendo mal a  la hora de agregar un nuevo registro, quiero que guardar registros de alumnos teniendo en cuenta que sus codigo de alumno no se deben repetir, no se que estoy haciendo mal  :(

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

using namespace std;

typedef char tcad[50];
typedef struct talumno{
int libreta;
tcad nombre;
tcad carrera;
};
typedef FILE *parchivo;

void carga(talumno &a);
void cargar_alumnos(parchivo alumnos);
void mostrar(parchivo alumnos);
void borrar(parchivo alumnos, int buscado);
bool consulta(parchivo alumnos, int codigo);

main()
{
int codigoBuscado;
parchivo estudiantes;
cargar_alumnos(estudiantes);
mostrar(estudiantes);
cout<<"Buscar alumno, ingrese LU: ";cin>>codigoBuscado;
borrar(estudiantes,codigoBuscado);
system("pause");
}

void carga(talumno &a)
{
fflush(stdin);
cout<<"Ingrese LU: ";cin>>a.libreta;
fflush(stdin);
cout<<"Ingrese nombre: ";gets(a.nombre);
fflush(stdin);
cout<<"Ingrese carrera: ";gets(a.carrera);
fflush(stdin);
}

void cargar_alumnos(parchivo alumnos)
{
talumno a;
int cantidad;
alumnos=fopen("alumnos.txt","wb");//Modo escritura, se pierde el contenido, si no existe el archivo lo crea
cout<<"Cuantos registros desea guardar?: ";cin>>cantidad;
while(cantidad>0){
carga(a);
if(consulta(alumnos,a.libreta)==false){
fwrite(&a,sizeof(a),1,alumnos);
cantidad--;
}
else{
cout<<"YA EXISTE UN USUARIO CON LA MISMA LIBRETA"<<endl;
}
}
fclose(alumnos);
}

void mostrar(parchivo alumnos)
{
talumno a;
alumnos=fopen("alumnos.txt","rb");//Apertura solo modo escritura
if(alumnos==NULL){
cout<<"Archivo inexistente"<<endl;
}
else{
while(!feof(alumnos)){
fread(&a,sizeof(a),1,alumnos);
if(!feof(alumnos)){
cout<<a.libreta<<endl;
cout<<a.nombre<<endl;
cout<<a.carrera<<endl;
}
}
}
fclose(alumnos);
}

void borrar(parchivo alumnos, int buscado)//Copia todos los alumnos excepto uno en especifico y lo guarda en otro archivo temporal
{
talumno a;
parchivo aux;
alumnos=fopen("alumnos.txt","rb");
aux=fopen("temporal.txt","wb");
if(alumnos!=NULL){
while(!feof(alumnos)){
fread(&a,sizeof(a),1,alumnos);
if(a.libreta!=buscado && !feof(alumnos)){
fwrite(&a,sizeof(a),1,aux);
}
}
fclose(aux);
fclose(alumnos);
}
if(remove("alumnos.txt")==0){//Desde aqui borra el archivo original y renombra el archivo temporal a "alumnos.txt"
cout<<"ELIMINADO EXITOSAMENTE"<<endl;
if(rename("temporal.txt","alumnos.txt")==0){
cout<<"RENOMBRADO EXITOSAMENTE"<<endl;
}
else{
cout<<"ERROR AL RENOMBRAR"<<endl;
}
}
else{
cout<<"ERROR AL ELIMINAR"<<endl;
}
}

bool consulta(parchivo alumnos, int codigo)
{
talumno a;
bool existe=false;
alumnos=fopen("alumnos.txt","rb");
if(alumnos!=NULL){
while(!feof(alumnos) && existe==false){
fread(&a,sizeof(a),1,alumnos);
if(a.libreta==codigo){
existe=true;
}
}
}
fclose(alumnos);
return existe;
}
#505
Emm si entiendo lo de !feof(archivo)  ahi en el codigo lo puse , no se porque me lo explicas una y otra vez , ahh con que era MIENTRAS NO LE CAMBIE EL VALOR A EXISTE, ahi estaba el chiste  ;-)
#506
Te paso todo el codigo mejor, de esta forma no lo entiendo
Código (cpp) [Seleccionar]
bool existe(parchivo alumnos, int codigo)
{
talumno a;
bool existe=false;
alumnos=fopen("alumnos.txt","rb");
if(alumnos!=NULL){
while(!feof(alumnos) && !existe){
fread(&a,sizeof(a),1,alumnos);
if(a.libreta==codigo){
existe=true;
}
}
}
fclose(alumnos);
return existe;
}

Pero de esta forma si
Código (cpp) [Seleccionar]
bool existe(parchivo alumnos, int codigo)
{
talumno a;
bool existe=false;
alumnos=fopen("alumnos.txt","rb");
if(alumnos!=NULL){
while(!feof(alumnos) && existe==false){
fread(&a,sizeof(a),1,alumnos);
if(a.libreta==codigo){
existe=true;
}
}
}
fclose(alumnos);
return existe;
}
#507
Pero bool existe estaba inicializado en false, no seria NO(false)? me siento confudidisima  :huh:
#508
El otro dia llegue a entenderlo pero hoy me olvide, se me hace algo confuso ese signo de exclamacion  :huh:
Código (cpp) [Seleccionar]
while consulta(file archivo, int codigo)
{
...
bool existe=false;
if(archivo==NULL){
...
}
else{
while(!feof(archivo) && !existe){// En castellano como seria este recorrido? Mientras no sea final del archivo y ...?
...
}
}
}
#509
El case esta limitado solo a enteros o caracteres que tambien son enteros en el codico ASCII

Código (cpp) [Seleccionar]
Ese switch a mi parecer, creo que solo esta limitado a enteros o caracteres, y aca tienes otro error
  const int USD = 7.40;
  const int EUR = 9.60;
  const int MXN = 0.60;
 

Esas constantes enteras te van a dar un error en tu calculo ya que no son flotantes
#510
Errores

Código (cpp) [Seleccionar]

if (numero>numero);{
if else {