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

#351
Programación C/C++ / Re: Dudas con estructuras??
15 Septiembre 2012, 04:48 AM
en C las cadenas no las puedes asignar como cualquier numero, tienes que usar la funcion strcpy o strncpy de la libreria string.h (mejor la segunda ya que asi puedes limitar el numero de caracteres a copiar):

http://c.conclase.net/librerias/?ansifun=strncpy

strncpy(camilo.nombre, "camilo", sizeof(camilo.nombre)-1);

y para imprimir una cadena tienes que usar el especificador de formato %s:

printf("Nombre: %s\n", camilo.nombre);

luego stdlib.h no la usas para nada en el codigo asi que no haria falta incluirla. y no estaria mal que el main devolviera algun valor para saber si el programa acabo correctamente.

un saludo!

#352
perdona me confundi con lo de antes, me referia a:

char *registro=NULL

en el main. aprovecho para decirte que no se por que haces que registro sea un puntero a void cuando esta apuntando a una cadena de caracteres. quizas algun warning era por eso... ni idea la verdad sin ver el code entero.

en fin solo queria aclarar lo de antes :silbar:

un saludo!
#353
Programación C/C++ / Re: Matriz en C++
10 Septiembre 2012, 22:50 PM
buenas, suponiendo que tienes una funcion para calcular el factorial de un numero, para calcular los que estan por encima de la diagonal principal fijate en esto (supon que i son las filas y j las columnas):

1 2 3 4 -> en i=0, tienes que calcular el factorial de los numeros en j=1, j=2 y j=3
5 6 7 8 -> en i=1, tienes que hacerlo de los numeros en j=2 y j=3
9 a b c -> en i=2, del numero en j=3
d e f g -> en i=3, del numero en j=4 (que no hay)

por lo tanto, para cada fila i, tienes que calcular el factorial del numero que este desde la posicion j=i+1 hasta el numero total de columnas.

un saludo!
#354
Citarel aviso lo genera por que recibe una variable puntero con basura

eso tiene facil solucion:

FILE *f=NULL;

un saludo!
#355
CitarLo primero que haces con "registro" es asignarle un valor, por ello no debería ser un parámetro sino una variable local.
supongo que declarara la variable en el main y en esta funcion ya lo hace todo, la inicializa con malloc y luego la carga de datos, para devolver el puntero con todo ya hecho.

un saludo!
#356
el valor de retorno no sirve para nada mas que para saber como ha acabado tu programa. como has dicho, si acaba bien suele devolver un 0, por eso lo de "return 0;" al final. pero tambien puedes usarlo para saber que error ha habido en tu programa. por ejemplo:


int main(int argc, char** argv) {

FILE *f;

if (argc != 3) return 1;

if (!f=fopen("archivo.txt", "r")) return 2;

        //....


en este caso, si el numero de argumentos pasados al programa no es correcto y el programa se cierra por este error, el programa devolvera el valor 1. luego si hay un error abriendo "archivo.txt", el programa devolvera 2 y se cerrara. y asi con los errores que tu quieras. asi que no es mas que ponerle etiquetas a los distintos errores que puedan suceder para asi poder arreglarlo de manera rapida.

para ver valor de retorno de tu programa, en windows no se como sera, pero en linux y en mac no tienes mas que hacer uso de la variable $? en la terminal de esta manera:


echo $?


y te dira el valor de retorno del ultimo programa ejecutado.

un saludo!
#357
Seguridad / Re: ESTAFAS INTERNET DE COCHES
9 Septiembre 2012, 16:31 PM
eso es tan viejo casi como lo de entrar en una web y que te diga: "enhorabuena has ganado un premio! haz click aqui para recibirlo."

seguro que hay gente que sigue picando ya que sino no lo harian, pero el problema no es estos tipos (ya que siempre hay estafadores en todas partes), sino el desconocimiento de la gente de internet y la falta de sentido comun... si hay un coche demasiado barato, bastante mas que todos los otros, y encima te dicen que esta en otro pais y que tienes que pagar para traerlo, por favor... ademas, estoy seguro que mucha gente eso no lo haria con un tipo que acaba de conocer en un bar o algo asi, y entonces por que lo hace por internet? no se.. yo siempre soy de lo de "si parece demasiado bueno para ser verdad, es que posiblemente no lo sea".

un saludo!
#358
hola, aunque no pidieras el codigo estaba aburrido y he hecho mi version de lo que pides:

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

#define N 8

int main() {

char bufer[N];
int *arreglo=NULL, i=0, tNum=0;

printf("\n");
while (bufer[0]!='\n') {

arreglo=(int*)realloc(arreglo, sizeof(arreglo)+sizeof(int));
printf("Numero: ");
fgets(bufer, N-1, stdin);

if (bufer[0]!='\n') {
bufer[strlen(bufer)-1]='\0';
arreglo[i++]=atoi(bufer);
tNum++;
memset(bufer, '\0', sizeof(bufer));
}
}

printf("\nNumeros totales: %d\nArreglo: ", tNum);
for (i=0; i<tNum; i++)
printf("%d ", arreglo[i]);
printf("\n");

free(arreglo);
return 0;
}



~$ gcc enteros.c -o enteros
~$ ./enteros

Numero: 12
Numero: 32
Numero: 4
Numero: 56
Numero: 65
Numero:

Numeros totales: 5
Arreglo: 12 32 4 56 65


espero que te sirva de ayuda y un saludo!
#359
CitarLa media aritmética, aunque puede tomar valores enteros, por lo regular es un número real, la funcion mediana tendría que devolver ese tipo.
La mediana resulta de sumar los elementos de una serie y dividirlos por la cantidad de elementos que la componen.

diria que la media aritmetica es la suma de todos los numeros divididos por el total de ellos; y la mediana es el numero central que queda al ordenar todos los numeros. por ejemplo: 1 1 3 4 5 5 6 6 8 9 9, o si es 1 1 3 4 5 5 6 6 8 9 9 12 entonces se hace la meda aritmetica entre los dos centrales: 5.5

http://es.wikipedia.org/wiki/Mediana_%28estad%C3%ADstica%29

CitarHola tengo una duda tengo que hacer un programa que imprima arreglos ordenados de menor a mayor y que busque el numero de la mitad del arreglo(eso se llamaria mediana)

a parte de los errores que ya te han dicho, tu funcion mediana() diria que no esta del todo bien. como he dicho arriba, la mediana es el numero central que queda, no el total de numeros entre 2. si fuera como tu funcion, imagina el caso de los numeros 1 2 5 6 9. tu programa devolveria 5/2=2.5, cuando en realidad la mediana es 5. o en el caso de que el numero de enteros sea par, tendras que hacer la media aritmetica de los 2 numeros centrales, por lo que puede ser que la mediana no sea un numero entero y por lo tanto la funcion debe devolver un real (float). ademas seria mejor que le pasaras un puntero a la cadena de enteros en lugar de la cadena entera (asi ahorras espacio), y no hace falta pasarle como argumento "mediana" ya que eso es precisamente lo que calcula. en el caso de que lo hagas asi, tambien deberias pasarle el tamaño del arreglo como argumento (podrias calcularlo dentro pero asi es mas rapido y mas facil). en fin, quedaria de la siguiente manera:


float BuscarMediana(int *arreglo, int tNum) {

(tNum%2 > 0)? return ((float)arreglo[tNum/2]): return ((float)(arreglo[tNum]+arreglo[tNum-1])/2.0);
}


y desde el main deberias llamarla asi:


float mediana=BuscarMediana(tabla, N);
printf("La mediana es: %.2f\n", mediana);


espero que te sirva de ayuda, un saludo!
#360
buenas a todos,

hace 3 o 4 dias empece con ASM, y la verdad es que de momento solo ha servido para que le tenga una rabia increible a mac... xD

pero bueno al tema, he copiado directamente un programa de una web:
http://fabiensanglard.net/macosxassembly/index.php

el cual es este:
Código (asm) [Seleccionar]

.bss
.data
output:
.asciz "The processor Vendor ID is '%s' \n"
.lcomm buffer, 13

.text
.globl _main

_main:

movl $0, %eax # define cpuid output option
cpuid

movl $buffer, %edi # put values in string
movl %ebx, 0(%edi)
movl %edx, 4(%edi)
movl %ecx, 8(%edi)
movl $0, %ecx
movl %ecx, 12(%edi)

# Now Calling printf

subl $0x4, %esp #padding stack :/ !
pushl $buffer
pushl $output

call _printf #macosx need libc  pre_

# ESP is at 0xXXXXXXX0 now,
# with MacOS X Special stub it will be at 0xXXXXXXXC
call _exit
nop


el codigo lo he compilado de la siguiente manera (tambien especial para mac...):

as -arch i386 -o cpuid.o cpuid.s
ld -e _main -o cpuid -lc cpuid.o


y el problema viene a que, si lo ejecuto en la particion donde esta el sistema, el programa funciona correctamente. pero si lo ejecuto en una particion que tengo para mis cosas, el programa da segmentation fault.

en cambio, si compilo el codigo con:

gcc -arch i386 -o cpuid cpuid.s

el programa funciona en los dos sitios.

alguien sabe a que puede deberse? despues de buscar todas (creo y espero) las diferencias entre el asm de mac y cualquier otro sistema me gustaria al menos rematar la faena y saber por que esto no funciona. si podeis pasarme algun link que hable sobre ello ya estaria mas que satisfecho, ya que directamente no se ni como buscarlo.

un saludo y muchas gracias!