|
Mostrar Temas
|
Páginas: 1 2 [3] 4 5 6
|
21
|
Sistemas Operativos / GNU/Linux / (Consulta) Instalar Dual-Boot desde Ubuntu 16.04
|
en: 12 Noviembre 2016, 22:52 pm
|
Hola, muy buenas. En mi afán por preservar Windows, pero a su vez poder usar Ubuntu sin una molesta máquina virtual, decidí instalar Ubuntu desde Windows. Después de una serie de problemas (básicamente Ubuntu no detectaba Windows 8.1), desde Windows creé una partición para Ubuntu, creé desde el instalador de Ubuntu las particiones swap, el directorio raíz, y un MB de partición para (supongo) la MBR (seleccioné algo de BIOS). El caso es que no esperaba que directamente me dejara la opción de seleccionar sistema operativo, pero lo que si esperaba es que el ordenador arrancara desde Windows. No es un problema grave (creo), porque no he perdido mis datos. En resumidas cuentas, me gustaría saber cómo puedo instalar algo parecido (sino este) al Dual-Boot desde Ubuntu. Muchas gracias! ______________________________________ Cuando ejecuto "sudo fdisk -l | grep sda", me sale: Disk /dev/sda: 465,8 GiB, 500107862016 bytes, 976773168 sectors /dev/sda1 2048 616447 614400 300M Windows recovery environment /dev/sda2 616448 821247 204800 100M EFI System /dev/sda3 821248 1083391 262144 128M Microsoft reserved /dev/sda4 1083392 554534911 553451520 263,9G Microsoft basic data /dev/sda5 554534912 554536959 2048 1M BIOS boot /dev/sda6 970913792 976771071 5857280 2,8G Linux swap /dev/sda7 554536960 970913791 416376832 198,6G Linux filesystem
|
|
|
22
|
Foros Generales / Dudas Generales / (wxMaxima) Consulta sobre enunciado de un ejercicio (conjuntos y ordenación)
|
en: 4 Noviembre 2016, 00:04 am
|
Hola, muy buenas. Antes de nada, quiero aclarar que no voy a pedir que se me haga el ejercicio. Simplemente me gustaría que se me explicase una parte del enunciado que, sinceramente, no entiendo. El enunciado es el siguiente: Sea X = {1, 2, 3, 4, 5, 6, 7}, e Y = X x X x X. Consideramos en X el orden lexicográfico. Dadas las siguientes parejas x,y pertenecientes a Y determina quien es mayor, y encuentra el conjunto de todos los elementos de Y comprendidos entre x e y.
* x = (4, 2, 1), y = (5, 6, 2) * x = (1, 4, 7), y = (7, 4, 1) * x = (6, 4, 5), y = (2, 4, 1) El ejercicio lo tengo que hacer en wxMaxima, el cual es un programa para el manejo de varios objetos matemáticos, como conjuntos, listas, funciones (aplicaciones)... Bien, la parte que no entiendo que quiere decir es esta: Consideramos en X el orden lexicográfico¿Qué quiere decir con que consideremos en X el orden lexicográfico? Sé lo que es el orden lexicográfico, pero no sé qué quiere decir eso de "consideremos en X ..." ¡Muchas gracias por su ayuda!
|
|
|
23
|
Programación / Programación C/C++ / (Consulta) Inicializar arreglo de estructura en C
|
en: 27 Octubre 2016, 11:40 am
|
Hola, muy buenas. Querría saber cómo iniciaizar un arreglo de estructura. Lo que hago es esto: typedef struct { float coord[3]; } vec3; ... vec3 vertices[4] = { {-size, -size, 0.0f}, { size, -size, 0.0f}, {-size, size, 0.0f}, { size, size, 0.0f} };
Pero el compilador me lanza los siguientes avisos: ../src/model.c: In function ‘load_quad’: ../src/model.c:8:9: warning: missing braces around initializer [-Wmissing-braces] {-size, -size, 0.0f}, ^ ../src/model.c:8:9: note: (near initialization for ‘vertices[0]’) ../src/model.c:9:9: warning: missing braces around initializer [-Wmissing-braces] { size, -size, 0.0f}, ^ ../src/model.c:9:9: note: (near initialization for ‘vertices[1]’) ../src/model.c:10:9: warning: missing braces around initializer [-Wmissing-braces] {-size, size, 0.0f}, ^ ../src/model.c:10:9: note: (near initialization for ‘vertices[2]’) ../src/model.c:11:9: warning: missing braces around initializer [-Wmissing-braces] { size, size, 0.0f} ^ ../src/model.c:11:9: note: (near initialization for ‘vertices[3]’) ../src/model.c:7:24: warning: missing braces around initializer [-Wmissing-braces] vec3 vertices[4] = { ^ ../src/model.c:7:24: note: (near initialization for ‘vertices’) Querría saber como initcializar adecuadamente ese arreglo. Muchas gracias
|
|
|
24
|
Programación / Programación C/C++ / (Code::Blocks) Los ficheros objetos compilan bien pero no se crean los archivos
|
en: 26 Octubre 2016, 08:42 am
|
Hola, muy buenas. Me está pasando una cosa muy extraña. Estoy intentando compilar un programa con codeblocks el cual tiene varios ficheros .c El problema que tengo es que cada .c compila bien (no me marca ningún error), pero luego me dice que no se puede encontrar el archivo .o Cuando voy a la carpeta obj/Debug, efectivamente, no hay ningún fichero objeto... Este es el log de compilación: gcc -Wall -g -c /home/carlos/Escritorio/Programación/Proyectos/Juego/camera.c -o obj/Debug/camera.o gcc -Wall -g -c /home/carlos/Escritorio/Programación/Proyectos/Juego/gl_math.c -o obj/Debug/gl_math.o gcc -Wall -g -c /home/carlos/Escritorio/Programación/Proyectos/Juego/main.c -o obj/Debug/main.o gcc -Wall -g -c /home/carlos/Escritorio/Programación/Proyectos/Juego/model.c -o obj/Debug/model.o gcc -Wall -g -c /home/carlos/Escritorio/Programación/Proyectos/Juego/shader.c -o obj/Debug/shader.o gcc -Wall -g -c /home/carlos/Escritorio/Programación/Proyectos/Juego/system.c -o obj/Debug/system.o gcc -Wall -g -c /home/carlos/Escritorio/Programación/Proyectos/Juego/texture.c -o obj/Debug/texture.o gcc -Wall -g -c /home/carlos/Escritorio/Programación/Proyectos/Juego/tools.c -o obj/Debug/tools.o g++ -o bin/Debug/Juego obj/Debug/camera.o obj/Debug/gl_math.o obj/Debug/main.o obj/Debug/model.o obj/Debug/shader.o obj/Debug/system.o obj/Debug/texture.o obj/Debug/tools.o g++: error: obj/Debug/camera.o: No existe el archivo o el directorio g++: error: obj/Debug/gl_math.o: No existe el archivo o el directorio g++: error: obj/Debug/main.o: No existe el archivo o el directorio g++: error: obj/Debug/model.o: No existe el archivo o el directorio g++: error: obj/Debug/shader.o: No existe el archivo o el directorio g++: error: obj/Debug/system.o: No existe el archivo o el directorio g++: error: obj/Debug/texture.o: No existe el archivo o el directorio g++: error: obj/Debug/tools.o: No existe el archivo o el directorio g++: fatal error: no input files compilation terminated. Es algo muy extraño o no veo la obviedad... Gracias por su ayuda
|
|
|
27
|
Programación / ASM / [NASM] (Duda) El registro DS no funciona como debería
|
en: 25 Agosto 2016, 03:07 am
|
Hola, muy buenas. Estaba viendo cómo se hacía una unidad de arranque desde ensamblador (NASM), pero tengo problemas con el registro DS. Muestro este código para mostrar mi duda: BITS 16 start: xor ax, ax ; Set data segment to where we're loaded mov ds, ax mov ax, text_string add ax, 7C00h mov si, ax ; Put string position into SI call print_string ; Call our string-printing routine jmp $ ; Jump here - infinite loop! text_string: db 'This is my cool new OS!', 0 print_string: ; Routine: output string in SI to screen mov ah, 0Eh ; int 10h 'print char' function .repeat: lodsb ; Get character from string cmp al, 0 je .done ; If char is zero, end of string int 10h ; Otherwise, print it jmp .repeat .done: ret times 510-($-$$) db 0 ; Pad remainder of boot sector with 0s dw 0xAA55
Es un código sencillito, pero funciona. El problema está en que si hago que el registro DS valga 0x07C0, el ordenador no arranca con esta unidad de arranque, pero si calculo manualmente la dirección de la cadena de texto y hago que DS valga 0, el ordenador si que arranca con esta unidad. Código con el que funciona: BITS 16 start: xor ax, ax ; Lo ponemos como 0 mov ds, ax mov ax, text_string ; Calculo manualmente la dirección de la caedna add ax, 7C00h mov si, ax ; La guardo en SI ...
Código con el que no funciona: BITS 16 start: mov ax 0x07C0 ; Lo ponemos como 0 mov ds, ax mov ax, text_string ; El cálculo debería ser DS * 0x10 + SI, lo que es lo mismo que ; 0x07C0 * 0x10 + SI, lo que es lo mismo que 0x7C00 + SI, que ; a su vez es lo mismo que el cálculo manual antes expuesto mov si, ax ; La guardo en SI ...
O hay algo que se me escapa, o es muy extraño todo... Gracias de antemano!
Vale, me he dado cuenta de que xor limpia parte/todo el registro FLAGS He obtenido el registro con LAHF. Antes de usar xor, LAHF retornaba, en binario, 01000110, y después de usar xor, LAHF retornaba 00000000. He intentado hacer lo siguiente, pero sigue sin funcionar: mov ah, 0x00 SAHF CLC CLD CLTS mov ax, 0x07C0 mov ds, ax
Pero con este código si que funciona (algo hace XOR de lo que no me doy cuenta...): xor ax, ax ; Algo más tiene que hacer XOR, porque aun reemplazando el valor de ax, sin XOR no funciona mov ax, 0x07C0 ; Aquí reemplazamos todo ax mov ds, ax
Espero que me puedan ayudar
|
|
|
28
|
Programación / Programación General / (Consulta) (Bajo nivel) ¿Las variables se guardan en la pila o en el ejecutable?
|
en: 24 Agosto 2016, 23:54 pm
|
Hola, muy buenas, me explico. La pregunta que tengo es dónde se guardan las variables. Yo tenía entendido que se guardan en un especie de bloque de memoria asignado para cada programa llamado 'pila', pero según estoy leyendo por ahí, las variables pueden ser guardadas entre código y código del ejecutable. En ensamblador, por ejemplo, podríamos escribir 'mylabel: db 'Message here', 0' (ejemplo de Internet). En ese espacio del ejecutable, se guarda una serie de bytes que contienen "Message here", por lo que podrías decir que esa memoria está entre código y código, no en la 'pila'
Espero que mi duda se haya entendido, no sabía muy bien como explicarla... ¡Muchas gracias de antemano!
|
|
|
29
|
Programación / Programación C/C++ / Cómo codificar con estilo (broma)
|
en: 24 Agosto 2016, 20:44 pm
|
Si eres como esas personas que codifican sin poner tabulaciones, espacios, deja los códigos super comprimidos y la gente no le gusta tu estilo, ¡¡aquí te traigo la forma de seguir con tu estilo y además de una forma bonita!! #include<stdio.h> int main( ){float rad=0.0f; float peri; float areac =.0f; const float pi_2= 1.5707f;char*areas= "Area";fprintf(stdout ,"Radio: ");scanf("%f", &rad); peri= 4.00f *pi_2 *rad; areac =2.0f *pi_2 *rad* *&rad ;fprintf (stdout, "Perimeter: %f\n",peri);fprintf(stdo\ ut,"%s: %f",areas, areac); return 0;}
Para aquel que se lo pregunte, como si no estuviera claro, este código te pide un radio para calcular su perímetro y área asociado ¡Espero que adoptéis este estilo tan maravilloso de programación!
|
|
|
30
|
Programación / Programación C/C++ / [C] (Aporte) Estructura de pila y cola con memoria dinámica
|
en: 22 Agosto 2016, 21:01 pm
|
Hola, muy buenas. Dado un tema reciente decidí implementar en C una estructura que funcione como cola y otra como pila (estructuras FIFO y LIFO respectivamente). Bueno, parece que son muchas líneas, pero entre comentarios, y saltos de líneas "innecesarios", el código no es tan largo. Aquí se los dejo. NOTA: Ya sé que ya se ha subido la implementación de estas estructuras, pero eso fue en C++, no en C. #include <stdlib.h> #include <stdio.h> // Para generalizar, uso un tipo de datos predefinido, así puedo // cambiar entre int y el tipo de datos que quiera typedef int tipo; typedef struct ElementoLista{ tipo dato; struct ElementoLista *siguiente; } Elemento; // En la estructura de una pila, solo necesitamos la referencia al // último elemento agregado typedef struct { Elemento *ultimo; unsigned int num_elementos; } Pila; // Pero en la estructura de una cola, también necesitaremos la // referencia del primer elemento typedef struct { Elemento *primero; Elemento *ultimo; unsigned int num_elementos; } Cola; // Si alguna de estas dos funciones retorna 0, significa que // ha ocurrido un error, de lo contrario, retornará un valor // diferente de 0 int agregar_a_pila(Pila *pila, tipo dato); int agregar_a_cola(Cola *cola, tipo dato); // Destruye el último elemento y retorna los datos almacenados en el tipo quitar_a_pila(Pila *pila); tipo quitar_a_cola(Cola *cola); // Para demostrar el uso de 'quitar_a_pila' y 'quitar_a_cola' // estas funciones destruyen la pila y la cola respectivamente // al mostrarlas void mostrar_pila(Pila *pila); void mostrar_cola(Cola *cola); int main() { // No hay que olvidarse de inicializar, porque si no, // no hay manera de determinar si un puntero a memoria // dinámica es válido o no... Pila pila = {NULL, 0}; Cola cola = {NULL, NULL, 0}; tipo dato; // Para probar que todo funciona perfectamente, hacemos que el // usuario introduzca enteros para almacenarlos tanto en una cola // como en una pila. fprintf(stdout , "Introduzca una serie de numeros (0 para acabar): "); while(0 != dato) { agregar_a_pila(&pila, dato); agregar_a_cola(&cola, dato); } // Mostramos la pila y la cola (destruyendo a su vez los datos // de las mismas) mostrar_pila(&pila); mostrar_cola(&cola); return 0; } int agregar_a_pila(Pila *pila, tipo dato) { Elemento *elemento; // Creamos elemento y guardamos datos... elemento = malloc(sizeof(Elemento )); if(NULL == elemento) return 0; elemento->dato = dato; // Reconfiguramos pila... if(NULL == pila->ultimo) { elemento->siguiente = NULL; pila->num_elementos = 1; pila->ultimo = elemento; } else { elemento->siguiente = pila->ultimo; pila->num_elementos += 1; pila->ultimo = elemento; } return 1; } int agregar_a_cola(Cola *cola, tipo dato) { Elemento *elemento; // Creamos elemento y guardamos datos... elemento = malloc(sizeof(Elemento )); if(NULL == elemento) return 0; elemento->dato = dato; elemento->siguiente = NULL; // Reconfiguramos cola... if(NULL == cola->primero) { cola->num_elementos = 1; cola->primero = elemento; cola->ultimo = elemento; } else { cola->ultimo->siguiente = elemento; cola->num_elementos += 1; cola->ultimo = elemento; } return 1; } tipo quitar_a_pila(Pila *pila) { Elemento *temp; tipo dato; if(NULL != pila->ultimo) { dato = pila->ultimo->dato; temp = pila->ultimo; pila->ultimo = pila->ultimo->siguiente; pila->num_elementos -= 1; } else { dato = -1; } return dato; } tipo quitar_a_cola(Cola *cola) { Elemento *temp; tipo dato; // Hacemos esta asignación, porque si el primer elemento de la cola y // el último son iguales, destruiremos el primer elemento, dejando al último // sin memoria asignada, por lo que directamente al último elemento le // asignamos NULL para que no haya errores if(cola->primero == cola->ultimo) cola->ultimo = NULL; if(NULL != cola->primero) { dato = cola->primero->dato; temp = cola->primero; cola->primero = cola->primero->siguiente; cola->num_elementos -= 1; } else { dato = -1; } return dato; } void mostrar_pila(Pila *pila) { tipo dato; while(NULL != pila->ultimo) { dato = quitar_a_pila(pila); } } void mostrar_cola(Cola *cola) { tipo dato; while(NULL != cola->primero) { dato = quitar_a_cola(cola); } }
|
|
|
|
|
|
|