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

#1341
Esa operación está mal planteada. Tienes que poner paréntesis.
Actualmente tienes esto:
-b +        (   (sqrt(b*b-4*a*c) / 2)    *a)

Y quieres lograr esto:
(-b + sqrt(b*b-4*a*c) ) / (2*a)

Ahora hay 2 problemas: no hay raiz cuadrada de números negativos, que ha de ser el problema que tenías, y no se divide entre 0.

Así que:
-Si a y b son 0, error.
-Si a es 0 y b no, como dijo boctulus: -c/b
-Si b es 0 y a no: sqrt(-c/a), comprobando que -c/a sea positivo o cero.
-Si a y b son distintos de 0, la fórmula, salvo que b*b-4*a*c sea negativo, en tal caso error.
#1342
En C/C++ hay 2 tipos de arrays: los estáticos y los dinámicos, por así decirlo.
"char str[ 10 ]" sería  estático, es una variable de 10 bytes,
"char *str" sería dinámico, y realmente no es un array, sino un puntero a char.

Cuando le pasas un array estatico a la función, lo interpreta como simplemente un puntero. El tamaño de un puntero es de 4 bytes, y el tamaño de un char es de 1 byte (por lo general).
Así pues, 4/1 = 4. Ahí tu resultado, totalmente real.

Solo hay 2 formas reales de saber el tamaño de una cadena: o pasándoselo a las funciones (evidentemente, funciona siempre), o contando caracteres hasta encontrar un caracter nulo ('\0', funciona solo con cadenas de texto, no para binarias).
strlen lo que hace es contar hasta el caracter nulo.
#1343
Lo tienes también en Settings -> Editor -> Margins and caret.
Tienes para cambiar tipo, anchura, color y frecuencia de parpadeo.
#1344
Programación C/C++ / Re: Classes em Ficheiros
16 Abril 2016, 20:21 PM
Código (cpp) [Seleccionar]
#include "MyClass.h"
#include "MyClass.cpp"


Solo haz include del .h.

Los .cpp se compilan a parte.

¿Tienes un proyecto o compilas cada archivo por separado?

La compilación en este caso, va así:
test.cpp -> test.o
MyClass.cpp -> MyClass.o
test.o + MyClass.o -> test.exe


"Undefined reference" significa que no encuentra la clase en los ".o". Lo más probable es que estés haciendo:
test.o -> test.exe :: Error: falta MyClass

No sé como compilas, ni que IDE o editor usas, así que no puedo decir más.
#1345
El corrector ortográfico en Settings -> Editor -> SpellChecker (abajo del todo).

#1346
Programación C/C++ / Re: Copiar vectorr 2D
16 Abril 2016, 19:27 PM
Un vector tiene internamente un array, memoria dinámica de tamaño fijo.

Suponte que tuviera un array de 1 elemento. Cuando haces un push_back, tiene que reservar memoria para 2 elementos, luego copiar lo anterior junto al valor nuevo, y liberar la memoria antigua.

Si tiene un array de 100 elementos, y haces push_back, tendrá que copiar 100 elementos.

Si le das un tamaño fijo, te ahorras todas esas copias.


Edito: Cabe decir que esto es en la teoría. En la práctica, en vez de reservar de 1 en 1 por cada push_back(), se suele reservar más, ya sea de N en N, o de otros modos, para evitar en lo posible este problema de eficiencia.

Edito de nuevo:
Código (cpp) [Seleccionar]
#include <iostream>
#include <vector>

using namespace std;

class T{
public:
T(){cout << 'a';}  // Constructor
T(const T&){cout << 'b';}  // Constructor de copia
T(const T&&){cout << 'c';}  // Constructor de movimiento
};

int main( void ){
vector<T> v;
for(int i=0; i<10; i++){
v.push_back(T());
cout << v.capacity() << endl;
}
}


Y su salida es:
ac1
acb2
acbb4
ac4
acbbbb8
ac8
ac8
ac8
acbbbbbbbb16
ac16
#1347
Programación C/C++ / Re: Copiar vectorr 2D
16 Abril 2016, 19:14 PM
Código (cpp) [Seleccionar]
mpNetMasse.resize(m.size());
for(size_t i(0); i<m.size(); i++) {
    mpNetMasse[i].resize(m[i].size());
    for(size_t j(0); j<m[i].size(); j++) {
        mpNetMasse[i][j] = new Masse (m[i][j]);
    }
}


Si le das un tamaño inicial, ahorras bastante (aunque quizás nos e note, vaya)

Sino, con push_back:
Código (cpp) [Seleccionar]
for(size_t i(0); i<m.size(); i++) {
    mpNetMasse.push_back(std::vector<Masse*>());
    for(size_t j(0); j<m[i].size(); j++) {
        mpNetMasse[i].push_back(new Masse (m[i][j]));
    }
}
#1348
Insisto, hay una opción para que el tamaño de la barra izquierda sea dinámico (por no decir que se lo puedes fijar tú a N dígitos).
Settings -> Editor -> Margins and caret -> Left Margin
#1349
+1 a Code::Blocks. Simple, con manejo de proyectos, y plugins.

Cita de: boctulusCodeBocks es medio "basura", cuando agrandas el codigo los numeros de linea del costado empiezan a comerse toda la pantalla y tiene otros problemas grandes de interfaz

Mucho tienes que agrandar, y es muy poco lo que come ._.
Ten en cuenta que en opciones, le puedes marcar cuanto margen hay.

Y en cuanto a problemas de interfaz, nunca tuve.

Cita de: DeviiACutilice codeblock un tiempo pero cuando hay un error solo muestra la linea del error
y no muestra cual es el error
Abajo tiene varias pestañas. En una de ellas te muestra lso errores resumidos en uan tabla, y en la otra, todo lo que indicó el compilador/linker. El error está completo, con sugerencias y etc (lo que da el compilador, vamos)
#1350
En todo caso:
#include <stdio.h>
#include <time.h>

int main( void )
{

// solo como control adicional
  time_t tiempo1 = time(0);
  struct tm *tini = localtime(&tiempo1);
  char output[128];


  strftime(output,128,"%d/%m/%y %H:%M:%S",tini);
  printf("%s\n",output);

// programa
for(int i=0; i<1000000000; i++ ){
}

  time_t tiempo2 = time(0);
  struct tm *tfin = localtime(&tiempo2);
  strftime(output,128,"%d/%m/%y %H:%M:%S",tfin);
  printf("%s\n",output);

return 0;
}


Si llamas a time() al principio 2 veces, serán iguales.