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

#1
Java / final class
6 Enero 2016, 23:42 PM
Hola,
Si declaramos una clase final, sus métodos son automáticamente definidos como finales o hay que declararlo explicitamente?

Gracias anticipadas.

Un saludo.
#2
Java / Método list Clase File
29 Diciembre 2015, 13:35 PM
Hola,

Tengo un problema con este método, os  pongo el código que tengo:

Código (java) [Seleccionar]

public class TestFile {
    public static void main(String[] args) {
        File f = new File("Files\\red");
        f.mkdirs();
        f = new File(f, "red.txt");
        String[] m = f.list();

        for (String str : m) {
            System.out.println(str);
        }
    }
}


El resultado es:
Exception in thread "main" java.lang.NullPointerException

Alguien sabe por qué falla?
#3
Hola,

Por qué en el caso medio tenemos 3(n^2-n)/4. Entiendo que viene de (n-1)/2 * (3/2)*n
Pero no entiendo por qué el (3/2) * n.

Gracias anticipadas.

Un cordial saludo
#4
Hola,
Tengo esta porción de código:


while( (dest[ind] = orig[ind++]) != 0)


El compilador me saca este error:

Unsequenced modification and access to 'ind'.

¿Alguien sabe el por qué de este error?

Gracias anticipadas.

Un cordial saludo
#5
Java / @Override
8 Diciembre 2015, 16:25 PM
Hola,
¿Cuál es la utilidad de poner Override encima de un método? No lo llego a entender bien, supuestamente es para sobreescribir la funcionalidad de un método heredado, pero si lo escribimos tal cuál está definido ya se sobreescribe, ej:

Código (java) [Seleccionar]

class A {
   public String toString() {
       return "hola mundo";
   }
}

public class TestOverride {
   public static void main(String[] args) {
       System.out.println(new A());
   }
}



Gracias anticipadas.

Un cordial saludo
#6
Java / Leer bytes
6 Diciembre 2015, 21:42 PM
Hola,
Tengo este código:

Código (java) [Seleccionar]
package research;

import java.io.IOException;

public class ArrayBytes {
   public static void main(String[] args) {
       byte[] b = new byte[10];

       try {
           System.in.read(b);
       } catch (IOException e) {}

       for (int i = 0; i < b.length; i++) {
           System.out.println(b[i]);
       }
   }
}



Cuando lo ejecuto e introduzco á obtengo lo siguiente:

á
-61
-95
10
0
0
0
0
0
0
0


No entiendo por qué sale -61 y -95. Alguien podría explicarme el por qué de esto.

Gracias anticipadas.

Un cordial saludo
#7
Bases de Datos / Problema con relación 1:1
25 Noviembre 2015, 14:01 PM
Tengo esta base de datos:

Código (sql) [Seleccionar]

CREATE TABLE ehbd.Clientes (
idClientes INT NOT NULL AUTO_INCREMENT ,
    nombre VARCHAR(64) NOT NULL,
    PRIMARY KEY (idClientes),
    FOREIGN KEY (idUsuarios) REFERENCES ehbd.Usuarios(idUsuarios)
) engine=innodb;

create table ehbd.Usuarios (
idUsuarios int not null auto_increment ,
   username varchar(64) not null,
   email varchar(64) not null,
   primary key(idUsuarios),
   foreign key(idClientes) references ehbd.Clientes(idClientes)
) engine=innodb;



Necesito relacionar estas dos bases de datos con una relación 1:1. Esto me da error porque en la primera tabla defino una foreign key a una tabla Usuarios que todavía no existe.

¿Cómo podría hacer esto sin juntar las tablas?

Gracias anticipadas.

Un cordial saludo
#8
Hola,
Tengo un problema con este programa. Como podéis ver cuando muestro los registros del fichero los duplica.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "MemoryManager.h"

#define N 80
#define SALIR 4

typedef struct {
char nombre[N];
char direccion[N];
int telefono;
} t_persona;


int tolower(int);
int menu(void);
void crearFichero(FILE **pf);
void introducirRegistros(FILE *pf);
void visualizarFichero(FILE *pf);

/**
* Punto de entrada y salida al programa principal
*/
int main()
{
int op = 0;
FILE *pf = NULL;

do {
op = menu();

switch (op)
{
case 1: // crear fichero
crearFichero(&pf);
break;

case 2: // introducir registros
introducirRegistros(pf);
break;

case 3: // visualizar registros
visualizarFichero(pf);
break;

case 4: // salir
printf("bye bye\n");
break;
}
} while (op != SALIR);

fclose(pf);
MemoryManager_DumpMemoryLeaks();
return 0;
}

int tolower(int c)
{
const int dsp = 'a' - 'A';

if (c >= 'A' && c <= 'Z')
return c + dsp;
return c;
}

int menu(void)
{
int op = 0;
char linea[N] = { 0 };

do {
printf("\n");
printf("1. Crear fichero\n");
printf("2. Introducir registros\n");
printf("3. visualizar registros\n");
printf("4. salir\n");

printf("\topcion: ");
fgets(linea, N, stdin);
sscanf(linea, "%d", &op);
} while (op < 1 || op > 4);

return op;
}

void crearFichero(FILE **pf)
{
char nomFichero[N] = { 0 };
char resp = 0;
char linea[N] = { 0 };

printf("Nombre del fichero: ");
fgets(nomFichero, N, stdin);
nomFichero[strlen(nomFichero) - 1] = 0;

if (*pf != NULL) {

// existe, preguntar si se sobreesribe
do {
printf("Desea sobreescribir el fichero");
fgets(linea, N, stdin);
sscanf(linea, "%c", &resp);
} while (tolower(resp) != 's'
&& tolower(resp) != 'n');

if (tolower(resp) == 'n')
return;
}

*pf = fopen(nomFichero, "w+b");
}

void introducirRegistros(FILE *pf)
{
char resp = 0;
char linea[N] = { 0 };

t_persona *p_per = malloc(sizeof(t_persona));
memset(p_per, 0, sizeof(t_persona));
if (p_per == NULL)
{
printf("memoria insuficiente");
exit(-1);
}


do {
printf("\n------\n");
printf("Nombre: ");
fgets(p_per->nombre, N, stdin);
p_per->nombre[strlen(p_per->nombre) - 1] = 0;

printf("Direccion: ");
fgets(p_per->direccion, N, stdin);
p_per->direccion[strlen(p_per->direccion) - 1] = 0;

printf("Telefono: ");
fgets(linea, N, stdin);
sscanf(linea, "%d", &p_per->telefono);

rewind(pf);
fwrite(p_per, sizeof(t_persona), 1, pf);

do {
printf("\nDesea introducir otro registro: ");
fgets(linea, N, stdin);
sscanf(linea, "%c", &resp);
} while (tolower(resp) != 's'
&& tolower(resp) != 'n');
} while (tolower(resp) == 's');

free(p_per);
}

void visualizarFichero(FILE *pf)
{
char linea[N] = { 0 };
int pos = 0;

t_persona *p_per = malloc(sizeof(t_persona));
if (p_per == NULL)
{
printf("memoria insuficiente");
exit(-1);
}

rewind(pf);

while (!feof(pf) && !ferror(pf)) {
fread(p_per, sizeof(t_persona), 1, pf);
printf("%s\n", p_per->nombre);
printf("%s\n", p_per->direccion);
printf("%d\n", p_per->telefono);
}

free(p_per);
}




1. Crear fichero
2. Introducir registros
3. visualizar registros
4. salir
        opcion: 1
Nombre del fichero: red.datos

1. Crear fichero
2. Introducir registros
3. visualizar registros
4. salir
        opcion: 2

------
Nombre: Marina
Direccion: vereda
Telefono: 234
Desea introducir otro registro: n

1. Crear fichero
2. Introducir registros
3. visualizar registros
4. salir
        opcion: 3

Marina
vereda
234
Marina
vereda
234


Gracias anticipadas.

Un cordial saludo
#9

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define SUP 33799

int main()
{
   int *cad = NULL;
   int i;

   cad = malloc(sizeof(int) * 2);

   for (i = 0; i < SUP; i++) {
       cad[i] = i;
       printf("%d ", cad[i]);
   }
   printf("\n");
   
   return EXIT_SUCCESS;
}


Si SUP es, por ejemplo, 20, no hay Segment fault. Si le doy un valor, por ejemplo, 33799 lanza este error al ejecutar el programa.

¿Por qué no da error de segmento a partir de cad[2]?

Gracias de antemano