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

#1
Programación C/C++ / Duda con Archivos en C++
29 Julio 2012, 01:18 AM
Buenas, alguno sabe que sentencia puedo usar en C++ para verificar si cierto archivo existe y dependiendo de la respuesta hacer cierta accion? Basicamente lo que necesito es:

Si(Archivo_Existe_en_la_ruta)
 hago_algo()
sino
 hago_otra_cosa()

He leido en varios sitios pero ninguno resuelve mi duda, de antemano gracias.

PD: No me refiero a si el archivo pudo ser abierto con exito o no, sino que si existe o no, gracias!!
#2
Estoy sobrecargando el operador de asignación en una clase fecha que he creado y me lanza este error. La primera vez compilo y me funciono perfecto, luego me empezo a aparecer este error y no tengo ni idea. Creo que el error viene dado por llamar como const a algo que no lo es, si me pueden ayudar se los agradeceria!

Código (cpp) [Seleccionar]
#ifndef FECHA_H
#define FECHA_H
#include <iostream>

using namespace std;

class Fecha
{
 //Atributos de la clase
 private:
   int dia,mes,ano;
 //Metodos de la clase
 public:
Fecha() : dia(0),mes(0),ano(0){};
Fecha(int dia_,int mes_,int ano_) : dia(dia_),mes(mes_),ano(ano_){};
Fecha(Fecha &F);
void set_dia(int dia_);
void set_mes(int mes_);
void set_ano(int ano_);
int get_dia();
int get_mes();
int get_ano();
       Fecha& operator=(const Fecha&f); // operador de asignación
~Fecha();
//Sobrecarga del operador <<
friend ostream& operator<<(ostream &os,const Fecha &F){

       os << F.get_dia() << "/" << F.get_mes() << "/" << F.get_ano() << endl;
       return(os);
}
};

/* Definicion de metodos*/

//Modificar el dia
void Fecha::set_dia(int dia_){dia = dia_;}
//Modificar el mes
void Fecha::set_mes(int mes_){mes = mes_;}
//Modificar el ano
void Fecha::set_ano(int ano_){ano = ano_;}
//Obtener el dia
int Fecha::get_dia(){return dia;}
//Obtener el mes
int Fecha::get_mes(){return mes;}
//Obtener el ano
int Fecha::get_ano(){return ano;}
//Constructor copia
Fecha::Fecha(Fecha &F)
{
 dia = F.get_dia();
 mes = F.get_mes();
 ano = F.get_ano();
}
//Operador de asignacion
Fecha& Fecha::operator=(const Fecha&f){
 
  if(this != &f){
     this->set_dia(f.get_dia());
     this->set_mes(f.get_mes());
     this->set_ano(f.get_ano());    
         
  }  
  return *this;    
}
//Destructor
Fecha::~Fecha(){}
#endif  //FECHA_H
#3
Este es el caso, tengo un archivo de esta forma:

21
Shukra P
Io L
Aisa A
Sirio S
Mangala P
Alfa_Centauri S
Europa L
Guru P
Beta_Crucis S
Laquesis A
Ganimedes L
Cloto A
Vega S
Capella S
Atropos A
Shani P
Rigel S
Calisto L
Afrodita_Urania A
Budha P
Alfa_Crucis S


Leo el numero de cuerpos n que en este caso es 21 e inicio este ciclo para guardarlos en un vector de registro:

fscanf(pf,"%d",&n); 

for (i=1;i<=n;i++){   

fscanf(pf,"%s",planet_info[i-1].nombre);
fscanf(pf,"%c",planet_info[i-1].cod);

}


Donde planet_info es un vector de tipo cuerpos y cuerpos es un registro que contiene dos elementos, una cadena nombre y un char cod. El problema es que solo me almacena hasta Ganimedes y no me llega hasta el final. y la verdad no entiendo cual pueda ser el problema! el archivo abre y cierra perfectamente y el vector esta declarado para 200 posiciones. si me echan una mano seria de gran ayuda, saludos!
#4
Tengo que hacer un ejercicio para mi facultad y me necesito dos algoritmos de grafos, uno es el conocido algoritmo de kruskal para el árbol recubridor mínimo, he googleado pero la verdad solo lo he visto en Java y en C++ y solo domino lenguaje C. Y el otro es un algoritmo que me calcule el camino mas corto entre un par de vértices pero no en cuanto al peso, sino en cuanto a la cantidad de aristas o arcos que recorre y la verdad de este si no he conseguido nada. De verdad se los agradecería mucho!!