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

#1
Bien espero darme a entender, Tengo una incomodidad respecto al uso  de apuntadores(o quizá varias), y pues siempre que creo que ya por fin he entendido algo, tengo que reescribir mi interpretación de eso porque se me siguen  presentando nuevas.

Mi duda es respecto a la relación apuntador-arreglo, pero pondré primero mi interpretación de como creo que se trabajan los punteros, por si estoy equivocado en algo me puedan corregir y no tener que abrir de nuevo otro tema.

Como yo lo veo con un apuntador se puede referenciar a 3 datos distintos.
es decir:

char *x = "hola";
   char *s1;
   s1 = &x[2];
   printf("%p\n", &s1); ///puedo hacer referencia a la dirección del apuntador
   printf("%p\n", s1); ///a la dirección a la que apunta s1(es decir su valor)
   printf("%s\n", s1);///y al dato que guarda la dirección a la que apunta s1.


Nose si mi idea este bien en un principio..

función que recibe la dirección de un arreglo:

void funcion(char *s1) ///recibe como parametro el valor del puntero(es decir una direccion)
{                      ///que en este caso es la del principio de la cadena
char *Apu = s1; //Apu se le asigna el valor de s1(la direccion de la cadena)
char **todos;
todos = &s1; ///se le asigna la direccion de s1(no el valor)
printf("%p\n", &s1); ///imprime la direccion de s1
printf("%p\n", Apu);///imprime el valor de s1(la direccion de la cadena)
printf("%p\n", todos);///imprime el valor del apuntador, en este caso la direccion de s1.
printf("%s\n", *todos);///imprime la indireccion de &s1, en este caso seria el valor(la cadena).
}


Igual si estoy mal en algo les agradeceria que me lo hagan saber...

Ahora si, de lo que va el tema como dije al principio por lo que entiendo, la dirección del apuntador y el valor del apuntador son direcciones distintas,  entonces como hago la diferencia por ejemplo en un arreglo de caracteres, si...

char cadena[5] = "hol";
 
   printf("%p\n", cadena);  //valor del apuntador, en este caso(la dirección del primer elemento del arreglo)
   printf("%p\n", &(*(cadena+1))); ///la dirección del segundo elemento del arreglo
   printf("%p\n", &(*(cadena+2)));///la dirección del tercer elemento del arreglo


¿Cual es la dirección donde se almacena el apuntador que tiene como valor la dirección del primer elemento del arreglo?

printf("%p\n", &cadena);  //tratando de obtener la dirección del apuntador

Si lo hago de esta forma me tira la misma dirección que la del primer elemento del arreglo, es decir, la dirección del apuntador y la dirección del valor del apuntador son la misma, y esto me causa conflicto en comprensión.

Espero haberme explicado y puedan ilustrarme con esto...
De antemano gracias. :)
#2
Escriba un programa que estime el valor de la constante matemática e, mediante el uso de la fórmula:

e = 1 + 1/1! + 1/2! + 1/3! + ...

Necesito que me corrijan si entendí bien, bueno, para empezar no recuerdo haber visto lo de la constante "e" en la preparatoria o al menos creo que la vi un poco en temas de derivadas, pero en fin, nunca la estudie muy a fondo, así que cuando lei la definición en la wikipedia me sentí deslumbrado por la cantidad de conceptos que no entiendo, y por lo tanto me di cuenta de mi falta de conocimiento teórico  en matemáticas, bueno según a lo que yo entiendo tengo que sacar el valor de "e" que es aproximadamente : 2,7182818284590452..., mediante la formula que va en ascenso, es decir después de 1/3! sigue el 1/4! y así sucesivamente hasta que el resultado de un numero aproximado a e?.
#3
Ups... tienes mucha razon xD.
y yo que hice todo esto para hacer una comprobacion:
#include <stdio.h>

int main (){

float lado1, lado2, lado3;
float hipotenusa, r, t;

printf("Introduzca medida1: ");
scanf("%f", &lado1);

while (lado1 != -1){


printf("Introduzca medida2: ");
scanf("%f", &lado2);
printf("Introduzca medida3: ");
scanf("%f", &lado3);

if (lado1 == 0 || lado2 == 0 || lado3 == 0){
printf("introduzca un valor correcto\n\n");
}
   
else if (lado1 > lado2 && lado1 > lado3){

       hipotenusa = (lado2 * lado2) + (lado3 * lado3);
       r = hipotenusa;
       t = 0;
       while (t != r){
        t = r;
        r = (hipotenusa/r + r)/2;
       }
       if (lado1 == r){
        printf("forma triangulo recto, la hipotenusa es %f\n", r);
       }
       else{
        printf("No se forma triangulo recto\n");
       }
   
       
}
   else if  (lado2 > lado1 && lado2 > lado3){
   
      hipotenusa = (lado1 * lado1) + (lado3 * lado3);
      r = hipotenusa;
      t = 0;
      while (t != r){
      t = r;
      r = (hipotenusa/r + r)/2;
      }
      if (lado2 == r){
      printf("forma triangulo recto, la hipotenusa es %f\n\n", r);
      }
      else{
      printf("No se forma triangulo recto\n\n");
      }
   }
   else if (lado3 > lado1 && lado3 > lado2){
   
    hipotenusa = (lado1 * lado1) + (lado2 * lado2);
    r = hipotenusa;
    t = 0;
    while (t != r){
    t = r;
    r = (hipotenusa/r + r)/2;
    }
   
    if (lado3 == r){
    printf("forma trinagulo recto, la hipotenusa es %f\n\n", r);
    }
    else{
    printf("No se forma triangulo recto\n\n");
    }
   }
   else{
    printf("No se forma un triangulo recto\n\n");
   }
   printf("Introduzca medida1, (-1 para terminar): ");
   scanf("%f", &lado1);
   }
   system ("pause");
   return 0;
}


Gracias! lo hare como tu me dices para hacer mas corto el programa.
#4
Estoy haciendo un ejercicio que  pide que introduzca 3 valores de tipo float y que determine si los números pueden representar los lados de un triangulo recto.

Intento hacer la comparación mediante el teorema de pitagoras, pero no se como sacar la raíz cuadrada en el ultimo paso, lo debo sacar sin usar usar pow, ni tampoco la función sqrt(x), debido a que son temas que todavía no veo en el libro :-\.
#5
Disculpen no entiendo este problema, me podrían ayudar a comprender lo que tengo que hacer:

Introduzca un numero entero que contenga solo unos y ceros (es decir un entero "binario") y que despliegue su equivalente decimal.[ pista: Utilice los operadores de división y residuo para separar los dígitos del numero "binario", uno por uno, de derecha a izquierda. Así como en el sistema de numeración decimal el dígito mas a de la derecha tiene un valor de posición de 1, y el siguiente dígito a la izquierda tiene un valor por posición de 10, después de 100, después de 1000, y así sucesivamente, en el sistema binario de numeración, el dígito que se encuentra a la derecha tiene un valor por posición de 1, el siguiente dígito a la izquierda tiene un valor por posición de 2, después de 4, de 8, y así sucesivamente. Así el numero 234 se puede interpretar como 4*1 +3*10 +2*100. El equivalente decimal del numero binario 1101 es 1*1 + 0*2 + 1*4 + 1*8 o 1 + 0 + 4 + 8 o 13].

#6
Mi duda es la siguiente,  ¿porque el resultado de la operación entre contador % 2 es igual 1 se imprime "****" y si es 0 "++++++"?

¿Como se sabe que es lo que se va a imprimir?
¿ Cual es la condición si el resultado es 1 o 0?

no se si me explique, aquí esta el programa:

[/#include <stdio.h>

int main ()
{
int contador = 1;

    while (contador <= 10){
printf("%s\n", contador % 2 ? "****" : "++++++");
++contador;
}

system ("pause");

return 0;
}
]
#7
Bueno días ala comunidad, tengo una duda muy vaga en la cabeza desde hace ya meses, y el caso es que a mi me gustaría programar vídeojuegos en un futuro, pero no se que estudiar, yo ya tengo 18 años y comienzo la universidad este año, pero no se que carrera estudiar, ya he hablado de este tema con muchas personas y también e investigado a través de Internet, pero solo consigo información muy nula, que no me termina convenciendo del todo.

Igual yo tengo claro que tal vez me este arriesgando en elegir esta profesión, ya que vivo en mexico y probablemente batalle para conseguir un empleo estable en una industria de vídeojuegos.

También soy consciente de que no es nada fácil y que el sueldo no es muy alto, pero aun así quiero estudiar esta carrera, como principal objetivo.

Me han dicho algunos amigos que si quiero dedicarme a la programación de videojuegos estudie, primero una carrera de programación y luego me especialice en lo que quiero, ya que las escuelas de videojuegos te enseñan poco de todo (es decir: diseño,audio,programación,etc) y que es mejor que empiece con una carrera de programación general, ya que si llego a fracasar en mi primer objetivo, tenga una base solida para trabajar en cualquier otra empresa que no sea de videojuegos.

Sobre esto de arriba solo quiero opiniones y consejos.(se los agradecería mucho)

Ahora, en la universidad que voy a estudiar (Universidad Autonoma de Baja California Sur) tienen dos carreras con respecto a la computación, que son la ingeniería en tecnología computacional y la licenciatura en sistemas computacionales.

yo ya me había decidido por la licenciatura porque creo que lleva mas programación que nada pero aun así quisiera sus opiniones, dejare el link del plan de estudios de ambas carreras para que puedan observar y darme su opinión sobre que debería de estudiar. gracias

http://uabcs.mx/dsc/index.php?option=com_content&view=article&id=77&Itemid=151

http://uabcs.mx/dsc/index.php?option=com_content&view=article&id=395&Itemid=268

(lo siento por alargarme)
#8
Otra cosa:
Este error no me sucede cuando ejecuto el Dev C++ como administrador, pero si como invitado.

Cita de: engel lex en  5 Enero 2015, 07:39 AM
lo unico que se me ocurre es que por alguna razon está haciendo una violacion de memoria o tomando algo que no debería y el av para el compilador, el IDE te avisa que no fue compilado, deten el av e intenta compilar

Disculpa mi ignorancia, pero no se  que es el av,ni  tampoco se como detenerlo.
#9
La verdad no entiendo mucho a este problema, estaba realizando los ejercicios del libro de Deitel (como programar en C, C++ y Java) y todos tenían que ver con la lección que acababa de leer, pero este problema es un avance a una lección posterior, y no entiendo que es lo que debo hacer, el problema dice así:

Escriba un programa en C que imprima los enteros equivalentes a algunas letras mayúsculas, minúsculas, dígitos y símbolos especiales. Como mínimo, determine los enteros equivalentes de las siguientes: A, B, C, a, b ,c, 0, 1, 2, $, *,+, / y el carácter espacio.

(no quiero que me resuelvan el ejercicio, solo quiero que me expliquen el problema y me pongan un ejemplo si acaso) <Gracias>

#10
Ese es el mensaje de advertencia completo.
Aparece en una ventana pequeña y solo me da la opción de presionar "ok", al final no puedo compilar, y no me dice dice el porque, (También el antivirus me avisa que se detecto una amenaza y que ya no se requieren mas acciones, cosa que no me sorprende porque mi antivirus tiene problemas, todos los días le pasa lo mismo en donde sea) incluso el panel de abajo que muestra los resultados no muestra ningún error.