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

#2
vamos suponer que hayas leído una linea de un archivo:
Código (dos) [Seleccionar]
linea1 campo1,linea1 campo2,linea1 campo3,linea1 campo4,linea1 campo5

Lo que se pueda hacer(Y no digo que sea el metodo más efectivo) es una especie de strtok así como:
Código (cpp) [Seleccionar]
#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main(){
    std::string linea("linea1 campo1,linea1 campo2,linea1 campo3,linea1 campo4,linea1 campo5");
    std::istringstream ss(linea);
    std::string token;
    int nColumnas = 0;
   
    while (std::getline(ss, token, ',')){
        //std::cout << token << std::endl;
        nColumnas++; //contador de columnas
    }
   
    cout<< "El numero de columnas es: " << nColumnas << endl;
   
    return 0;
}

Se puede montar una fácilmente una función y pasar una string, y que esa string le retorne el numero de columnas que tiene el tal csv.

Espero que sirva... De todos modos puedes buscar en google algo así: "Como saber el numero de columnas de un archivo csv en c++"

Suerte
#3
 Ola, saludos.

Alguien sabe si es posible, y como se hace, para mudar la extensión de un makefile en windows? Es decir... cuando tengo un simples makefile debemos llamarlo dentro del cmd con la siguiente linea:
Código (dos) [Seleccionar]
C:\Users\loco\Desktop>make makefile.win
Sé que en linux no tiene extención pero la pregunta es... ¿Se puede configurar make en windows para aceptar extención?

Algo tipo:
Código (dos) [Seleccionar]
C:\Users\loco\Desktop>Make=*.mak;*.mk;GNUmakefile;makefile;Makefile;makefile.*;Makefile.*;

A idea es hacer que make acepte nuevas exenciones y nombres.
#4
Mierd.... tuve media hora leyendo para decir lo que ha dicho YreX-DwX :laugh:¡Muy bien explicado! Debería haber esperado y así me ahoraba un buen tiempo yo también  :xD
Es correcto, hay creo 2 casos en los que es factible declarar una función como virtual pura según eh leido.


  • 1º Cuando no sea posible definir las funcionalidades en la clase madre. Tipo cuando tienes clases circulo, cuadrado, triangulo, etc, y que heredan de una clase madre como Shape(Forma), en esta clase shape una función como "getArea" no seria posible definir-la en la clase madre ya que se necesita "diferentes formas"(polmorfismo? :silbar:) para extraer el área de las figuras geométricas. Si fuera posible definir el funcionamiento de las subclases ya de entrada en la clase madre entonces no hace falta ser pura la función.

  • 2º Como ya comentó YreX-DwX... Sería para obligar a que se implemente en todas las subclases dicha función sea por el motivo que sea
YreX-DwX  ;-)
#5
Voy a dar un caso a ver si lo entiendes. Imagina una clase ave, todas as aves vuelan, el gorrión, las palomas, etc, pero hay una ave que no vuela... ¿Sabes cual es? El pengüino. En todos los demás pájaros será mas o menos igual pero en pengüino, al llamarla, el pengüino no debería volar >_<.

Te eh dado el caso del pengüino en que casi todas las funciones son iguales, pero imagina una clase mamíferos con un método virtual puro "comunicar". Un perro ladra, un gato maúlla, y ciertamente los hay los que no hacen ruido,  pero de algún modo se comunican, depende del caso, creo que ese seria el mejor ejemplo.
#6
Programación C/C++ / Re: Punteros y arrays.
3 Marzo 2018, 15:05 PM
x equivale a &x[0], por eso
No puedes hacer:
int * ptr = &x;

Pero puedes hacer:
int * ptr = &x[0];

x y &x[0] son lo mismo, como ya te lo han dicho.
#8
Ejercicios / re: ejercicio c++ estoy echo un lio
20 Febrero 2018, 11:30 AM
Te falta la parte del:...e indique cuantos están por encima y cuantos por debajo.

Púes en esta parte basta añadir 2 contadores tipo... si la nota está encima incrementas uno y si la nota está abajo de la media se incrementa otro. Se hace con simples if/else if dentro del for etc.
#9
Normalmente las librerías deberían estar configurada para que cuando mude el tipo de proyecto para relesed, como en la siguiente imagen, debería solucionar el problema:


Si no de una leída aquí:
https://stackoverflow.com/questions/13768515/how-to-do-static-linking-of-libwinpthread-1-dll-in-mingw

Puede dar una mirada aquí también, hay una explicación en castellano:
https://iie.fing.edu.uy/~vagonbar/gcc-make/gcc.htm#4.Enlazado

Básicamente para compilar de forma estática(dll adjuntos), en consola bastaría hacer algo como eso:
Código (cpp) [Seleccionar]
gcc -static -o circulo circulo.c
Su programa está compilando de forma dinámica por eso no incluye los dll dentro.

Para no tener que estar poniendo -static todo el tiempo en linea de comandos, o cuando usas el botón "compile" de Code::blocks, vete a la pestaña Settings/Compiler Settings...


E en la pestaña Other compiler settings:


...Escriba -static, con eso verás que al compilar sale -static en la linea que genera el codeblocks al compilar, como en la foto:


Básicamente cualquier comando puede ser inserido ahí de los que ves en la primera página que he puesto, y muchos otros, eso terá efecto em todos los programas que compiles de ahí adelante.

Espero que le ayude.

Seurte

Otra cosa más... Siempre de una mirada en la documentación de las bibliotecas que uses para saber como linkar de forma correcta, estática o dinámicamente, esas explicaciones que puse son para las bibliotecas padrón, las que no son padrón pueden variar algo.
#10
Programación C/C++ / Re: Bucle Infinito ayuda.
13 Febrero 2018, 09:42 AM
Hola!
Su programa tiene más errores de los que dices. Por ejemplo al escribir en el fichero con la función altas, en el fichero escribes esos datos:
Citarclave nombre apellido numero nombreMascota tipoMascota edadMascota

Que bem poderia ser algo como:
Código (cpp) [Seleccionar]
"007 Raul Vasquez 111222333 Roque perro 2"

Quedando los datos acima tal como:
Código (cpp) [Seleccionar]
clave = 007
nombre = "Raul"
apellido = "Vasquez"
numero = 111222333
nombreMascota = "Roque"
tipoMascota = "perro"
edadMascota = 2


Pero luego intentas leer desde el fichero con este trozo de código:
Código (cpp) [Seleccionar]
lectura >> clave;
      while (!lectura.eof()) {
         lectura >> nombre >> apellido >> grupo >> numero;
         cout << "\n";
         cout << "\tClave:    " << clave << endl;
         cout << "\tNombre:   " << nombre << endl;
         cout << "\tApellido: " << apellido << endl;
         cout << "\tNumero:     " << numero << endl;
         cout << "\tNombre mascota" << nombreMascota << endl;
         cout << "\tTipo mascota" << tipoMascota << endl;
         cout << "\tEdad mascota" << edadMascota << endl;
         lectura >> clave;
         cout << "\t________________________________\n";
      }


Y pregunto...¿Por qué intentas ler
Código (cpp) [Seleccionar]
clave >> nombre >> apellido >> grupo >> numero
cuando lo que tienes en el fichero es
Código (cpp) [Seleccionar]
clave >> nombre >> apellido >> numero >> nombreMascota >> tipoMascota >> edadMascota
???

Lo correcto seria que sú código fuera algo como eso:
Código (cpp) [Seleccionar]
lectura >> clave >> nombre >> apellido >> numero >> nombreMascota >> tipoMascota >> edadMascota;
        while (!lectura.eof()) {
            cout << "\n";
            cout << "\tClave:    " << clave << endl;
            cout << "\tNombre:   " << nombre << endl;
            cout << "\tApellido: " << apellido << endl;
            cout << "\tNumero:     " << numero << endl;
            cout << "\tNombre mascota" << nombreMascota << endl;
            cout << "\tTipo mascota" << tipoMascota << endl;
            cout << "\tEdad mascota" << edadMascota << endl;
            lectura >> clave >> nombre >> apellido >> numero >> nombreMascota >> tipoMascota >> edadMascota;
            cout << "\t________________________________\n";
        }


Revise su código, porque en la hora de leer estás haciendo mal. Tanto la función consulta como todas las demás repites el mismo error. Debes leer los mismos datos que has guardado, no puedes escribir siete datos y luego leer menos o más, debes leer siete.

Arregle esos puntos y luego vuelva y nos cuantas como ha salido.