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 - 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
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 :-\.
#4
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].

#5
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;
}
]
#6
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)
#7
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>

#8
como podran darse cuenta soy principiante en esto de la programación en c, y  estoy haciendo uno de los ejercicios del libro de deitel que dice que introduzca 3 números diferentes desde el teclado, y saque la suma, el producto, el promedio, el numero mas pequeño y el mas grande, especificando que solo utilice la forma simple de instrucción if que se supone he aprendido hasta ahora, pero no me sale el resultado bien en lo de indicar cual es el numero mayor y menor, ya intente de varias formas y he buscado por Internet ejercicios parecidos para ver cual es mi problema, pero son distintos y no le entiendo, ademas la mayoría usan "for" en esto, y yo no lo puedo usar porque en el libro todavía no veo esa función, tengo que usar if para sacarlo pero no me sale:

#include <stdio.h>

int main ()
{
   int num1, num2, num3, suma, promedio, producto;
   
   printf("introduzca tres enteros diferentes: ");
   scanf("%d%d%d", &num1, &num2, &num3);
   
   suma = num1 + num2 + num3;
   promedio = (num1 + num2 + num3) / 3;
   producto = num1 * num2 * num3;
   
   printf("la suma es: %d\nel promedio es: %d\nel producto es: %d\n", suma, promedio, producto);
   
   /*identficar el numero mayor y menor*/
   if (num1 > num2 < num3){
      printf("el numero mas pequeño es: %d\n", num2);
   }
   
   if (num2 > num3 < num1){
      printf("el numero mas pequeño es: %d\n", num3);
   }
   
   if (num3 > num1 < num2){
      printf("el numero mas pequeño es: %d\n", num1);
   }
   
   if (num1 < num2 > num3){
      printf("el numero mas grande es: %d\n", num2);
   }
   
   if (num2 < num1 > num3){
      printf("el numero mas grande es: %d\n", num1);
   }
   
   if (num1 < num3 > num2){
      printf("el numero mas grande es: %d\n", num3);
   }
   
   return 0;
}
si ejecuto esto y pongo por ejemplo los números: 1, 2, 3 me sale esto:
la suma es: 6
el promedio es: 2
el producto es: 6
el numero mas peque±o es: 2
el numero mas peque±o es: 3
el numero mas peque±o es: 1

¿en que estoy mal :\?

#9
el problema es que no entiendo por que me marca "codigo fuente no compilado" el dev c++.
es decir, me voy a explicar, porque cuando pongo:

                                     printf("%d%d%d%d\n", 1, 2, 3, 4);

si me compila bien, me imprime "1234", pero cuando intento hacer lo mismo mediante cuatro instrucciones printf, es decir:

printf("%d", 1);
printf("%d", 2);
printf("%d", 3);
printf("%d", 4);

me aparece : "codigo fuente no compilado"
otra cosa es que si le agrego la secuencia de escape \n a la ultima instrucion, si me compila bien:

printf("%d", 1);
printf("%d", 2);
printf("%d", 3);
printf("%d\n", 4);

pero situandome en otro contexto en el que solo quiero imprimir un numero, es decir, si hago esto:

printf("%d\n", 1);

no me funciona tenga o no la secuencia de escape \n.
aqui mi duda es porque pasa esto, cual es la diferencia entre poner:

printf("%d%d%d%d\n", 1, 2, 3, 4)
o
printf("%d\n", 1)

por que el primero si me compila tenga o no la secuencia de escape \n y el otro lo tenga o no lo tenga me marca: "codigo fuente no compilado"

¿tiene que ver la cantidad? o ¿ es error de mi computadora o del compilador?