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

#1
Aquí la gente está para resolver dudas no resolverte el laboratorio, si quieres ayuda postea el código que tengas hecho y a partir de ahí se puede puntualizar que cosas tienes mal o que cosas te faltan.

Saludos  :D.
#2
Si que se ejecutara pero al crear el archivo con el ofstream no te dejara hacerlo ya que hay algunas carpetas restringidas en windows
#3
Cita de: K-YreX en 23 Julio 2020, 03:40 AM
Si lo has intentado y llegado a un punto no consigues avanzar, no pongas el enunciado del programa para que te lo den hecho, sino pon el código que llevas hecho, lo que estás intentando y lo que te falla.
De esta manera obtendrás mejores respuestas.

Estoy totalmente de acuerdo con este buen señor.

Te voy a dar una pista al menos hasta que pongas el código que llevas hecho:
Este problema se puede afrontar de varias maneras, mediante los típicos bucles (for, while...) o mediante unos bucles especiales que seguro habrás dado (recursividad).

Este tipo de problemas son más sencillos sin los resuelves por recursividad.
#4
No se de C pero puede que la nomenclatura en punteros sea la misma que en C++ asíi que por si acaso te dejo aquí unos consejos (si funcionan en C xD).

Primero: Yo usaría más los espacios, cuesta de leer el código:

char *nombre;
//o
char* nombre;


Se leen mejor que:

char*nombre;


y eso se aplicaría para las funciones o cualquier declaración con punteros.

Segundo: para hacer typedef de struct(al menos en C++) no hace falta poner struct

char *nombre
//o
char* nombre


Tercero: Cuando pasas un t_nodo estas pasando el puntero del nodo, por tanto no hace falta que lo desreferencies para luego pasar la dirección de memoria en el main y lo mismo. Si lo declaras asi:

void agregar(t_nodo &, t_dato);


Te evitas poner & en el main y queda más fácil de leer.

Cuarto: Por lo que he visto, podrías usar un puntero fin para evitar el coste de O(n) que supone recorrer toda la lista. Como no hay clases en C podrias crear una struct extra:

struct s_nodo_ini
{
    t_dato dato;
    struct s_nodo*sig;
    struct s_nodo *fin;
}

para el nodo cabeza y cuando añades un nodo al fin lo haces desde fin y luego actualizas el nodo fin y si quieres recorrer toda la lista lo haces desde el nodo sig.



En cuestión a tu problema: usa el nodo aux para moverte, no hace falta usar recursividad de forma innecesaria. 


void eliminar(t_nodo*nodo,char*texto)
{
    t_nodo aux= &nodo; //siendo nodo la cabeza/inicio

    while(aux != NULL) //recorres todo la lista
    {
        //Aqui haces la comprobación y en caso positivo lo eliminas
         
        aux = aux->sig; //no se si se escribe asi en C pero el concepto es el mismo
    }
}

#5
Si usas un metodo de la clase y esta clase no hereda de otra no hace falta usar clase::metodo() con metodo() sobra y hace el codigo más legible.
(Solo al llamar a la función, al definirla sí hace falta).

En caso de que herede y se llame igual y quieres especificar cual usar entonces sí.

Vale nada, intenta poner el codigo tabulado, que no se ve bien el código.

Consejo, cuando uses setter haz que retornen un bool tipo:

<code>bool Matriz::SetMatriz(int fil, int col) </code>
#6
Si fuera tu tambien echaria un vistazo a algunas guias de estilo, yo uso la de tipo camello que es la que mas me gusta, pero bueno cada empresa tiene su forma de escribir o incluso programas como Unreal tiene su propias guias porque a la hora de compartir codigo es mucho mas facil de leer a simple vista.
#7
Programación C/C++ / Re: Duda con Ficheros C++
17 Septiembre 2019, 16:46 PM
Cita de: Loretz en 16 Septiembre 2019, 05:04 AM
Mis disculpas, pero la cosa no era contigo que eres la víctima. Sucede que por alguna razón hay una manía de enseñar C++ como si se estuviera en los 70s, con construcciones y rutinas propias de los 50. Y no sé muy bien por qué, pero me disgusta de sobremanera. Yo también he tenido que pasar por el mismo tratamiento de quienes enseñar vicios y usan el poder de una cátedra para que todo el mundo esté obligado a reproducirlos. Me parece francamente despreciable, y no conseguí decirlo bien.

Va una aclaración por si sirviera:

La construcción
while (!Archivo.eof()){


es por lo menos incompleta, ya la suspensión de la lectura con getline puede deberse a más de una causa.

std::ifstream tiene un operator bool, que equivale a !fail(), que es lo que permite la lectura en ciclos.
Documentación: https://en.cppreference.com/w/cpp/io/basic_ios/operator_bool

La forma canónica sería:

Código (cpp) [Seleccionar]
   while (std::getline(Archivo, Frase)) {
       std::cout << Frase << std::endl;
   }

   // Si interesa saber que ha resultado:
   // (puedes consultar la documentaciOn:
   // https://en.cppreference.com/w/cpp/io/ios_base/iostate

   if (Archivo.good())
       std::cout << "Sin error.\n";
   else if (Archivo.eof())
       std::cout << "End of file.\n";
   else if (Archivo.fail())
       std::cout << "Error de lectura.\n";
   else if (Archivo.bad())
       std::cout << "Error irrecuperable.\n";



Lo siento yo tambien, por que mi contestación está demas y fuera fe tono :( , solo busco aprender cosas nuevas y soy de las personas que le cuesta mucho entender e interiorizar todo lo nuevo si no tengo con que referenciarlo. Le echare un vistazo aun que cuando es código suelto y lo ponen con nombres complicados como: std::basic_ios<CharT,Traits> ya no se ni como escribirlo en mi código xD, al menos hay ejemplos para que me figure mas o menos como va.
#8
Programación C/C++ / Re: Duda con Ficheros C++
17 Septiembre 2019, 16:43 PM
Cita de: EdePC en 15 Septiembre 2019, 23:47 PM
- Jeje, a Loretz le faltó justificar algo más para que no se le mal-interprete. He estado revisando el ebook (gratuito en inglés) C++ Notes for Professionals: https://books.goalkicker.com/CPlusPlusBook/ Capítulo 12: File i/O, Sección 12.3 Reading from a file, habla otros métodos para leer ficheros, veo no usa EOF directamente.

- Luego en la Sección 12.7: Checking end of file inside a loop condition, bad
practice?, veo algo muy similar a lo que comenta Loretz, aunque no le entiendo bien XD, e hecho algunas pruebas y no noto diferencias XD.

- Por cierto, si estás iniciando en C++, te recomendaría estos ebooks gratuitos en español:
https://openlibra.com/es/book/fundamentos-de-programacion-con-el-lenguaje-de-programacion-c-ed-2017
http://arco.esi.uclm.es/~david.villa/pensar_en_C++/pensar_en_cpp-vol1.pdf
http://arco.esi.uclm.es/~david.villa/pensar_en_C++/pensar_en_cpp-vol2.pdf

-- Ya luego revisas ebooks avanzados de tips como el de Notes for Professionals o las Referencias Oficiales.

Gracias!, Les echare un vistazo ^.^
#9
Programación C/C++ / Ficheros AutoStart
17 Septiembre 2019, 15:19 PM
Hola buenas, estoy aprendiendo ficheros y he caido que puedes crear un .bat y como buena mente perversa y bromista se me ha ocurrido gastarle una broma a un compañero de clase.

La cosa es crear un .bat que contenga:
Código (cpp) [Seleccionar]
shutdown -s -t 500 -c "(O.o)  (o.O)"

(Le pongo 500 seg para que haya tiempo suficiente para cancelarlo usando: shutdown -a)

La cosa es que se ejecute ese .bat cada vez que inicie el pc. Aunque haga falta permisos de administrador o algo. Se me ocurrio crear el .bat directamente en la carpeta de AutoStart de windows 10 pero esta bloqueado y no se como en Dev C++ se puede hacer un .exe que pide permisos de admin para ejecutarse.

O si hay alguna otra manera. Es solo para acojonarlo un poco y luego quitarselo xD

PD: Tengo ya el programa hecho para que cree el .bat y que lo ejecute pero como he ficho antes no puedo crearlo en la carpeta de AutoStart

#10
Programación C/C++ / Re: Duda con Ficheros C++
15 Septiembre 2019, 22:34 PM
Cita de: Loretz en 15 Septiembre 2019, 04:08 AM
while (!Archivo.eof()){
std::getline(Archivo,Frase);
std::cout << Frase << std::endl;
}


ese es un error muy común, un trozo de código fósil, que vaya a saber por qué se repite meticulosamente en los primeros palotes. ¿Mucho copiar y pegar el código de malos programadores del siglo XX?  (Ah, por las dudas, XX se lee "veinte")

Bueno, si te fijas un poco en lo que hace ese fragmento de código, Archivo no tiene activa la señal de eof hasta que no se pretenda leer más allá de la última linea, o ¿de qué otra manera sabría Archivo que se ha alcanzado la última?

A modo de curiosidad histórica, hace muchos, muchos años, creo que la última vez que se vio fue alrededor de 1960, los archivos se guardaban en cintas magnéticas, y cuando un archivo tenía una parte en una cinta y otra parte en otra, era necesario poner una "marca de fin de archivo" (de ahí el nombre eof - end of file). Entonces, un archivo tenía al final esa marca, normalmente 0xFFFF, que si fuera un int se leería como -1. Pero eso era así en la época en tus abuelos se conocieron, desde entonces las cosas han cambiado un poco, y algo que cambió son los filesystems, de modo que los archivos ya no llevan una "marca de fin de archivo", nunca más, desde hace muuuuucho tiempo.


Sabes que mas de perdió de aquella época? parece ser el respeto, tu sarcasmo sobra.

Primero, estoy aprendiendo a programar y así es como me lo están enseñando. Segundo, si eres un amargado de la vida mejor postea en otro sitio, gracias ^.^