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

#1
Cita de: durasno en  6 Julio 2012, 00:58 AM
Que no puedas visualizarlo no significa que no ande, sino tendrias que tener un error en el programa. Tal vez podria explicarte un poquito mejor el tema de procesos, pero de todos modos estamos entrando en un tema mas alla de lo que en si es la programacion en C.

Lo mejor es que esperes otra respuesta, ya que como te dije antes nose mucho sobre procesos y seguro no me vas a entender :S  (y ademas la respuesta que te di nose si es la correcta)


Saludos

OK!! Gracias de todas formas. A ver si alguien se anima ;)
#2
Hola Durasno!!!

Pues sigo sin entender lo del "exit"... Durasno puedes explicar mas concretamente que entiendes por proceso?? Y alguien mas sabe porque no funciona el el system("exit") o system("cd..")??
#3
Programación C/C++ / Re: ayuda con menu en c
5 Julio 2012, 18:29 PM
sigue en pie lo de los $100.000???...jajajaja. Es broma no te lo tomes a mal ;)

Estoy con mis compañeros, aprende un poco mas porque aun estas muy verde (osea, con conocimientos muy basicos) y sobre todo modera un poco tus formas, que ya imagino que no lo hagas con mala intencion, pero lo parece. Trata de explicarnos mejor lo que quieres hacer y vete poniendo el codigo que estes TU escribiendo y no nos pidas q lo hagamos por ti!!! :P

Un saludo y animo!
#4
Pues te comento Saberuneko:

a) Respecto al system("pause"): tienes toda la razon y yo siempre uso el getchar() , pero estaba estudiando la funcion SYSTEM y solo lo hice para probar, pero yo recomiendo el getchar()

b) En el programilla que puse antes:
funcionan: el system("dir")(que me preguntabas), system("pause") y system("del name.txt")
no funcionan(les ignora completamente y NO dan error): el system("cd..")y el system("exit")

c) Alguien tiene alguna otra teoria acerca de porque me ignora el system("exit")???

Gracias a todos!!!
#5
Buenas a tod@s!!!

el problema que tengo es que estaba aprendiendo a usar la funcion SYSTEM la cual en principio no la encontre mucha dificultad. Pues bien, yo tengo Windows 7 asike mire en internet la lista de comandos para windows 7 y cree un programa en Dev-C++ que solo haria llamadas a SYSTEM (era inutil el programa, pero solo era para probar). Mi sorpresa fue cuando me di cuenta que con algunos comando funciona (como por ejemplo los tipicos "cls", "pause", "del"...)pero con otros no("cd.."y especialmente el que me molesta mas que no funcione es "exit"). ¿Alguien sabe porque al ejecutar system("exit") no m salgo del interprete de comandos y continua con el printf?¿porque no funciona el system("cd..")?

Aqui os dejo el codigo, aunque no creo q tenga mucho interes...

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>

int main (void){
    printf ("\nHola\n\n\n");
    system ("dir");
    system ("pause");
    system ("del name.txt");
    system ("pause");
    system ("cd..");
    system ("dir");
    system ("pause");
    system ("exit");/*NO SALE DEL INTERPRETE DE COMANDOS Y CONTINUA CON EL printf */
    printf ("\nAdios\n\n");
    system ("pause");
}



Gracias
#6
do-while tenia razon, aki dejo el enlace:

http://c.conclase.net/curso/index.php?cap=011b#STR_sizeof

aunke me sigue pareciendo un coñazo que Dev-C++(ya que segun este link no dicen q otros programas lo hagan) haga esto, ya que si quiero luego usar mi codigo en otro programa como Borland me compila bien pero no funciona... (aunke mejore el rendimeinto del procesador). Supongo que si siempre usas el mismo IDE tiene la ventaja de mejorar el rendimiento, pero bueno... :(
#7
Cita de: do-while en  8 Junio 2012, 15:37 PM
¡Buenas!

Supongo que sera por la alineacion de los datos en memoria. Esto quiere decir, que cuando el compilador crea tu tipo de dato, no siempre el tamaño final sera la suma de los tamaños de los datos que contiene, ya que, por ejemplo, por cuestiones de eficiencia a la hora de acceder a la informacion, puede resultar mas facil acceder a unas posiciones de memoria que a otras. En este caso, si te das cuenta, esos 50 caracteres, que equivalen a 50 bytes, no son multiplo de 4, y por lo que comentas, te lo redondea por arriba a un multiplo de 4 (que es el tamaño de un DWORD)...

La verdad es que la respuesta la he dado por intuicion, si es errornea o alguien tiene una respuesta mas exacta, me gustaria conocerla.

¡Saludos!

Pues efectivamente tienes razon en lo de multiplo de 4, ya que cambie la N por 48 y me dice que el tamaño de la estructura es 60, y despues escribi N=49, 50, 51 y 52 y me decia que el tamaño era 64, y escribi N=53 y el tamaño era 68. Pero, ¿esto no es un coñazo si quiero usar mi codigo en otras IDE o con otros compiladores? Porque si escribo mi mismo codigo en Borland no funciona ya que en la lectura del ficheroen Dec-C++, al acceder al elemento float de mi estructura tenia q sumarle el 2 famoso que dije antes, y en Borland no hace falta y por eso mi programa no funcionaba bien... :(
#8
Buenas a tod@s!!!

Mi problema es que he hecho un programa en el cual modifico las siguientes estructuras:

Código (cpp) [Seleccionar]
struct Producto{
       int codigo;
       char nombre[N];/*N=50*/
       float precio;
       int stock;
       };


y cuando hago el Dev-C++ un sizeof(struct Producto) me dice que ocupa 64bytes, pero si hacemos el calculo: 4 de int + 50 de char +4 float(en mi makina el tamaño de float es 4) + 4 de int =62!!!!
En cambio en Borland si que el sizeof(struct Producto) = 62.

¿Alguien sabe porke Dev-C++ me cuenta 2 bytes de mas?(creo que estos dos bytes son debidos a la cadena de 50 caracteres, ya que al leer la estructura de un fichero, el puntero avanza por el fichero: 4+50+2+4+4 y ademas cree una estructura con solo un int y un float y el sizeof(struct Producto)=8, como debe de ser )

Espero vuestras respuestas!!! :D
#9
Cita de: STANHMAL en  6 Junio 2012, 04:58 AM
Es correcto que todo lo de C es aplicable en C++, pero la idea es no combinar estos dos, que libro compraste?


$4!u2

"Manual imprescindible C/C++. Edicion actualizada 2012" Ed: Anaya Multimedia. Auto: M.A. Acera

Lei en foros y decian q staba bastante bien, y a mi la verdad me gusto  mucho y le recomiendo. Tambien tengo alquilado de la biblioteca el de Deitel/Deitel de C/C++, pero ese le uso para dudas, porke leerme ese PEDAZO de libro creo q tardaria un año...jejeje

Empece en Marzo y ahora sigo por mi cuenta haciendo ejercicios, ¿me recomiendas algun libro o manual de internet?
#10
Hola chic@s!!!

Primero de todo agradecer de nuevo a durasno, maxim_o, STANHMAL y ferno por vuestra ayuda (gracias tambien a STANHMAL por indicarme otros errores y pasarme el link, ya q para la gente q estamos empezando es una buena ayuda). Bueno esta tarde a las 2:00 di con el problema pero me tuve q ir de casa, asike paso a indicarosle por si stais interesados,jejeje.(Por cierto el codigo es una mezcla de C y C++ como habeis dicho, pero esque me compre un libro para empezar que es bastante bueno, y explica junto el C y C++ y segun el libro lo de C te vale para C++ asike siempre guardo como .cpp)

SOLUCION DEL PROBLEMA

El problema esta en la linea "x = auxiliar;" (como dijo STANHMAL) que en principio no da ERROR ya que "auxiliar" si es un array pero "x" es una direccion de memoria y lo que hace es asignarle la direccion de memoria del primer elemento de "auxiliar" a "x". Cual es el problema, las direcciones de memoria. Al llamar a la funcion la paso como parametro "producto" cuya posicion es ABCF001 y se la asigna a "x", luego la posicion de "x" es ABCF001. Posteriormente se crea el array "auxiliar[ELEM]" cuya direccion de memoria del primer elemento (escribiendo "auxiliar") es CDEF005. Despues hago todo bien, peeeeero llegamos a "x = auxiliar;" sin haber cambiado nada en "x", y por tanto no he cambiado nada en "producto", y al hacer "x = auxiliar;" la "x" pasa a valer CDEF005. Por lo que justo antes de retornar a main, tenemos:

auxiliar => Direccion: CDEF005 => array con el elemento bien eliminado
x => Direccion: CDEF005 => apunta a "auxiliar" luego apunta al array con el elemento bien eliminado
producto => Direccion: ABCF001 => array que en ningun momento se modifico, ya que o le tenia que haber modificado antes de "x = auxiliar;" o sino tenia q tener actualmente la direccion CDEF005

Espero se me haya entendido :D

Por lo tanto, uso el bucefor. Ya dije desde el principio que el programa funcionaba con el bucle, pero solo estaba interesado en entender el problema de porque no funcionaba de la otra forma. Ahora ya sta todo claro.


NOTAS

Ferno
Estaba casi convencido cuando lei tu mensaje que funcionaria tal y como tu decias, ya que ya entendia el problema q tenia yo primero y tu solucion me parecia buena, pero fui a compilar y me dio ERROR, este era:

"In function 'void eliminar(Producto*, int&)':
non-Ivalue in assignment"

que si alguien sabe lo que significa que me lo explike, q stoy aprendiendo!!!!jejeje

Saludos a todos!!!