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 - 98Fran

#11
Programación C/C++ / Duda con Ficheros C++
15 Septiembre 2019, 00:27 AM
Cuando imprime el contenido del .txt por la consola, al final del programa me imprime 2 endl, por? No debería ser 1 solo endl?

Código (cpp) [Seleccionar]
#include <iostream>
#include <fstream>

void LecturaArchivo();

int main(){

LecturaArchivo();

return 0;
}

void LecturaArchivo(){
std::string Ruta, Frase;
std::ifstream Archivo;

std::cout << "Digite la ruta del archivo para abrir entre \"\"\nRuta: ";

std::getline(std::cin,Ruta);

Archivo.open(Ruta.c_str(),std::ios::in);

if (Archivo.fail()){
std::cout << "No se pudo abrir el Archivo";
exit(1);
}

std::cout << "\n\n";
while (!Archivo.eof()){
std::getline(Archivo,Frase);
std::cout << Frase << std::endl;
}
}
#12
Programación C/C++ / Problema con las Listas C++
8 Septiembre 2019, 11:12 AM
Estoy viendo Listas y no entiendo muy bien que estructura tiene que tener la lista.
He visto listas que usan el mismo método que las colas, luego que el usar el primer valor como inicio de la lista y los siguientes valores entran como si fueran una cola (pero el primer valor sigue teniendo la misma posición) o colas ordenadas por tamaño

Con colas ordenadas con tamaño me refiero a:
Cola normal: Nodo1 (Nodo1->Siguiente) ->Apunta a-> Nodo2(Nodo2->Siguiente) ->Apunta a-> Nodo3(Nodo3->Siguiente) ->Apunta a-> NULL


Cola ordenada por tamaño: Nodo1 (Nodo1->Siguiente) ->Apunta a-> Nodo3(Nodo3->Siguiente) ->Apunta a-> Nodo2(Nodo2->Siguiente) ->Apunta a-> NULL

siendo N1<N3<N2;

La conclusión que he llegado yo es que si no esta ordenado como una cola o una pila es una lista xD.

Se que de listas hay varios tipos como doblemente enlaza y circulares pero me refiero que cuando se hace una sucesión de nodos, sino es LIFO y no es FIFO ya se convierte automáticamente en una lista no?
#13
Programación C/C++ / Re: Ayuda
4 Septiembre 2019, 12:07 PM
Código (cpp) [Seleccionar]
#include <iostream>

int main(){
float x = 12.9, aux;
int y = x;

aux = x - y; //aux = 12.9 - 12 = 0.9

if (aux >= 0.5){
++y; // Es igual a y += 1 que es igual a y = y + 1
}

std::cout << y;


std::cin.get();
return 0;
}
Si usas
Código (cpp) [Seleccionar]
using namespace std;

quita los [std::] y ya estaría
#14
Ya esta resuelto, soy muy tonto xD.
Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

struct Nodo{
char dato;
Nodo *siguiente;
};

void menu(Nodo *&);

}


Las había puesto antes de hacer el menu y cuando lo hice se me olvido quitarlas xD
#15
Programación C/C++ / Re: COMPARAR FECHAS
31 Agosto 2019, 20:23 PM
Me acabo de dar cuenta de que puede que no sepas que es una estructura xD.
ignora:

Código (cpp) [Seleccionar]
struct fecha{
int dia, mes, año;
}d1,d2;


Cambia:

d1.dia  por d1
d1.mes por m1
d1.an-io por a1
------------------
d2.dia == d2
d2.mes == m2
d2.año == a2

y

int main()
{
  int d1,m1,a1,d2,m2,a2;
#16
Programación C/C++ / Re: COMPARAR FECHAS
31 Agosto 2019, 20:13 PM
Voy a decirte un par de cosas del código para que veas algunos fallos (ya que yo también estoy aprendiendo y me están ayudando por aquí en el foro)

Lo primero:
Código (cpp) [Seleccionar]
void imprimir_fecha(int d, int m, int a)
{
   cout<< d << "/" << m << "/" << a;
}

int comparar_fechas(int d1, int m1, int a1, int d2, int m2, int a2)
{
   if (a1 < a2)
       return -1;
   else if (a1 > a2)
       return 1;
   else
       if (m1 < m2)
           return -1;
       else if (m1 > m2)
           return 1;
       else
           if (d1 < d2)
               return -1;
           else if (d2 > d1)
               return 1;
           else
               return 0;
}


Has creado 2 funciones y no las has llamado en el main(), por tanto cuando inicialices el programa, este va ir a buscar la función main(), va a leer todas las instrucciones de main(), (que en este caso solo es meter valores a las variables) y se va a terminar y no va a hacer nada más.

Para que funcione tus funciones tienes que llamarlas con:


Código (cpp) [Seleccionar]
int main(){
   int d1,m1,a1,d2,m2,a2;

    //Solicito ingreso primer fecha
    cout << "Ingrese dia de la primer fecha: "<<endl;
    cin >> d1;

    cout << "Ingrese mes de la primer fecha: "<<endl;
    cin >> m1;

    cout << "Ingrese año de la primer fecha: "<<endl;
    cin >> a1;

    //Solicito ingreso segunda fecha
    cout << "Ingrese dia de la segunda fecha: "<<endl;
    cin >> d2;

    cout << "Ingrese mes de la segunda fecha: "<<endl;
    cin >> m2;

    cout << "Ingrese año de la segunda fecha: "<<endl;
    cin >> a2;

// y

    int x = comparar_fecha(d1,m1,a1,d2,m2,a2); //Todo esto importante después de los cout/cin de las variables.

    if(x == 0)
cout<<"Son el mismo dia";
    if(x == 1)
    imprimir_fecha(d1,m1,a1); //En el caso de la fecha 1;
    if(x == -1)
    imprimir_fecha(d2,m2,a2); //En el caso de la fecha 2;
}


Y

Código (cpp) [Seleccionar]
{
   if (a1 < a2)
       return -1;
   else if (a1 > a2)
       return 1;
   else
       if (m1 < m2)
           return -1;
       else if (m1 > m2)
           return 1;
       else
           if (d1 < d2)
               return -1;
           else if (d2 > d1)
               return 1;
           else
               return 0;
}

esta mál, el ultimo else if es lo mismo.
d1 <d2 == d2 > d1.

#17
Programación C/C++ / Re: COMPARAR FECHAS
31 Agosto 2019, 19:49 PM
Cita de: 98Fran en 31 Agosto 2019, 19:46 PM
Esto puede que te sirva échale un ojo.

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

using namespace std;

struct fecha{
int dia, mes, año;
}d1,d2;

void pedirFecha();
fecha mayor();
void mostrarMayor(fecha);

int main(){

pedirFecha();
fecha fechaMayor = mayor();
mostrarMayor(fechaMayor);




cin.get();
return 0;
}

void pedirFecha(){

cout<<"Defina Fecha[1] --- dia/mes/año: ";
cin>>d1.dia>>d1.mes>>d1.año;
cout<<"\nDefina Fecha[2] --- dia/mes/año: ";
cin>>d2.dia>>d2.mes>>d2.año;

}

fecha mayor(){
fecha m;

if(d1.año == d2.año){
if(d1.mes == d2.mes){
if(d1.dia == d2.dia){
cout<<"Lo 2 son el mismo dia";
}
else{
if(d1.dia > d2.dia){
m = d1;
}
else{
m = d2;
}
}
}
else{
if(d1.mes > d2.mes){
m = d1;
}
else{
m = d2;
}
}
}
else{
if(d1.año > d2.año){
m = d1;
}
else{
m = d2;
}
}

return m;
}

void mostrarMayor(fecha mayor){
cout<<"\n-------------------------------------------";
cout<<"\nLa mayor fecha es: "<<mayor.dia<<"/"<<mayor.mes<<"/"<<mayor.año<<endl;
}

/*PD: usa [code=cpp]*Tu Codigo aquí*
así se vera mucho mejor el código. Saludos*/[/code]

PD: No uso año sino ani-o (sin el -) pero el foro lo cambia automaticamente por que le da la gana xD. No se puede usar el caracter Ñ en C++. Saludos.

Si son más de 2 fechas se pueden usar vectores y es más fácil la verdad pero hice este programa cuando no tenía mucha idea de C++ solo lo básico.
#18
Programación C/C++ / Re: COMPARAR FECHAS
31 Agosto 2019, 19:46 PM
Esto puede que te sirva échale un ojo.

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

using namespace std;

struct fecha{
int dia, mes, año;
}d1,d2;

void pedirFecha();
fecha mayor();
void mostrarMayor(fecha);

int main(){

pedirFecha();
fecha fechaMayor = mayor();
mostrarMayor(fechaMayor);




cin.get();
return 0;
}

void pedirFecha(){

cout<<"Defina Fecha[1] --- dia/mes/año: ";
cin>>d1.dia>>d1.mes>>d1.año;
cout<<"\nDefina Fecha[2] --- dia/mes/año: ";
cin>>d2.dia>>d2.mes>>d2.año;

}

fecha mayor(){
fecha m;

if(d1.año == d2.año){
if(d1.mes == d2.mes){
if(d1.dia == d2.dia){
cout<<"Lo 2 son el mismo dia";
}
else{
if(d1.dia > d2.dia){
m = d1;
}
else{
m = d2;
}
}
}
else{
if(d1.mes > d2.mes){
m = d1;
}
else{
m = d2;
}
}
}
else{
if(d1.año > d2.año){
m = d1;
}
else{
m = d2;
}
}

return m;
}

void mostrarMayor(fecha mayor){
cout<<"\n-------------------------------------------";
cout<<"\nLa mayor fecha es: "<<mayor.dia<<"/"<<mayor.mes<<"/"<<mayor.año<<endl;
}

/*PD: usa [code=cpp]*Tu Codigo aquí*
así se vera mucho mejor el código. Saludos*/[/code]
#19
Por que al seleccionar la opción 3 se salta los breaks???
Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

struct Nodo{
char dato;
Nodo *siguiente;
};

void menu(Nodo *&);
void agregar(Nodo *&);
void mostrar(Nodo *);
void salir(Nodo *&);

int main(){
Nodo *pila = NULL;

menu(pila);
agregar(pila);
mostrar(pila);
salir(pila);

cin.get();
return 0;
}

void menu(Nodo *& pila){
int n;

do{
cout<<"1. Insertar un caracter a la pila"<<endl;
cout<<"2. Mostrar todos los elementos de la pila"<<endl;
cout<<"3. Salir\n";
cin>>n;
cin.ignore();
switch(n){
case 1: agregar(pila); break;
case 2: mostrar(pila); break;
case 3: salir(pila); break;
}
}while(n != 3);
}

void agregar(Nodo *&pila){
Nodo *nuevo_nodo = new Nodo();
cout<<"\nDigite un nuevo Caracter: ";
cin>>nuevo_nodo->dato;
cin.ignore();
nuevo_nodo->siguiente = pila;
pila = nuevo_nodo;
}

void mostrar(Nodo *pila){
Nodo *aux = pila;
cout<<"\nLos elemmentos de la pila son: ";

while(aux != NULL){
cout<<aux->dato<<" , ";
aux = aux->siguiente;
}

cout<<endl;
delete aux;
}

void salir(Nodo *&pila){

while(pila != NULL){
Nodo *aux = pila;
pila = aux->siguiente;
delete aux;
}
}
;

Si uso la opción 2 de mostrar no salta la opción 1, pero si ejecuto el caso 3 se ejecutan todos los casos, que me estoy perdiendo? (y en la función salir() no estoy llamando a las otras 2 funciones).
#20
Con los ejemplos que he visto de puntero a estructura no ponía la -> por que todos los ejercicios que había visto usaba un puntero al vector estructura y poniendo por ejemplo:
Código (cpp) [Seleccionar]
cout<<"Digite su nombre: ";
<<cin.getline(persona[i].nombre,30,'\n');


Se guardaba sin problemas y no hacía falta usar ->. Supongo que es por que:
Código (cpp) [Seleccionar]
persona[i] //equivales a
*(personas + i)
Y ya tiene el * implícito en el nombre.

PD: Los punteros me dan mucho dolor de cabeza xD. Con tus explicaciones poco a poco me estoy volviendo en un Master de los punteros jajaja.