Efectivamente, ese tipo de problemas hay que platearlos a nivel teórico y lo suyo sería utilizando árboles o grafos y una vez lo tienes planteado, conociendo el TAD de turno, debería ser sencillo resolver y seguramente la recursividad te ayude. Pero no es algo trivial, es droga dura que se da en algorimia y estructuras de datos avanzadas, me parece curioso ahora que comentas el de las torres de hanoi, me lo apunto para las vacaciones xD.
voy a empezar a hacer algo por mi cuenta con c/c++ con el macbook air (actualmente tengo OS X 10.11.1 El capitan) y quiero partir de este tutorial. Esta por ver de donde parto todavía xD
recomendáis Xcode (os x) para alguien oxidado? anteriormente usé Borland C++, dev c++, Visual studio 2010
Me costara acostumbrarme? Puedo hacer cosas multiplataforma aunque esté bajo OS x? por ejemplo un programa simple con GUI que funcione en windows. Me gustaría no verme forzado a instalar bootcamp para hacer programas tipo GUI NET Framework y cosas asi para Win
#572 para el tutorial, con gcc por la terminal te bastara
si quieres un IDE decente que te corrija errores y tal, yo me iba a visual studio. creo que la code 2015 tiene soporte para osx, no se si tiene syntax para c. sino pues un visual studio normal por parallels y ya.
C++ a pesar de tener su estandar muy definido originalmente es una extension de C. Si quieres utilizar POO tendrás que usar los recursos que C++ te ofrece, pero aun con POO puedes utilizar muchas cosas de funcional y librerías de C. Todos los que tienen soporte para C++ tienen para C.
Eso no es del todo así, C++ no es un superconjunto estricto de C, así que salvo que el compilador esté explícitamente preparado para compilar C, un compilador de C++ daría error intentando compilar código C.
Otra cosa es que todos los compiladores de C++ (al menos todos los más usados) también sean compiladores de C, y de forma transparente cambian de un modo a otro según si la extensión del archivo es .c o .cpp.
Una duda un poco tonta, los juegos programados en C++ tipo the binding of isaac que librerías usan? Alguna fuente?
Ese ni idea, solo conozco el primero que hizo, de todas formas como te ha dicho #579 sdl es bastante conocido y usado.
Vale ya he conseguido entender como funciona esto (mas o menos) ahora me gustaria saber si conoceis como hacer en C para que se emule una ventana de chat, por ejemplo hay un programa de linux llamado ekg2 que permite conectarse a Facebook desde la consola., pero hay una cosa que me ha gustado bastante y es que realmente parece que tenga interfaz grafica (hablando siempre en modo consola) ya que cuando escribes el mensaje en la shell, el resultado aparece mas arriba.
Un ejemplo mejor que mil palabras
Edit: Bueno ya esta terminado. Si a alguien le interesa, que me lo diga y le paso el enlace de mi repositorio donde estará en breve subida.
Hola!
Tengo una dudilla que me ha surgido:
Si quiero utilizar un parámetro de una estructura en una función, ¿puedo utilizarlo sin utilizar un puntero a esta estructura, que le paso por parámetro de función a la función?
Lo del main es correcto, puedo modificar valor de la estructura utilizando el (.), en la función también? O tengo que crear un puntero a la estructura, pasarlo por parámetro de función y luego modificarlo con la ->?
Gracias!
#587 En la funcion no podrias asi de primeras porque la variable miestruct es local, y puesto que la has creado en la funcion main, solo puedes acceder a ella desde main.
Tienes dos opciones, hacer funcion(*str) como dices, o crear miestruct de manera global creandola fuera del main. Personalmente me quedo con la primera.
por cierto, estas metiendo un numero entero en una variable que en principio es un caracter :p aunque eso se puede hacer.
#588 Al fin he podido editar y que quede el código bien haha, sería como en el ejemplo 2 verdad?
#589 mas o menos, te pasa lo mismo, creas 'p' en el main, y la funcion "funcion" no sabe lo que es p, no puede verlo, ademas de que no llamas a la funcion en ningun momento
typedef struct {
int var1;
int var2;
char var3[10];
} str;
main(){
str miestruct;
miestruct.var3[0] = 1;
funcion(&miestruct);
}
void funcion(*p){
p->var1 = 10;
}
#590 Entendido, he intentado hacer un ejemplo fácil de concepto de punteros y ha salido un buen churro, entendido!! Gracias!
Vale, otra duda:
Si lo ponemos así:
typedef struct {
int var1;
int var2;
char var3[10];
} str;
main()
{
str *p;
str miestruct;
p = &miestruct;
Función (p)
};
void Funcion(*z)
{
z->var1=10;
}
La llamada a función y los parámetros estarían bien? Es decir, en p tengo la dirección de miestruct y lo paso como parámetro de función.
Hola buenas, tenia un problema en C que igual me podiais solucionar. La cuestión es que hay que introducir 4 números y esos pasarlos a una función. Ya dentro de la función (char *IP(d1,d2,d3,d4)) pongo que ip[1] sea igual a d1, ip[2]='.' , ip[3] igual a d2... Hasta ahí bien. El problema es cuando vuelvo a la función y lo printeo (printf("%s", IP(d1,d2,d3,d4) ) los números me los printea como ASCII, no como números en sí. ¿Alguna solución que me pueda servir?
Gracias de antemano, espero que entendáis la pregunta
#595 es que le estas pasando las variables por valor y no por referencia, al terminar la funcion donde les asignas el valor, esas variables desaparecen, te esta imprimiendo basura.
o bien le pasas el array entero de una vez o le pasas las cuatro variables como puntero.
Por no darte directamente la solucion buena mejor lee el post #154 e intenta de nuevo
#596 La cuestión es que el programa tiene que incluír la función sí o sí, tal y como está. Voy a echar un ojo a #154 , pero te paso también mi código, porque igual fui yo que no me expliqué bien
#include <stdio.h>
#include <stdlib.h>
char *IP(int d1, int d2, int d3, int d4);
int main() {
int d1,d2,d3,d4;
char *b;
printf("Introduce el primer dígito: \n");
scanf("%d",&d1);
printf("Introduce el segundo dígito: \n");
scanf("%d",&d2);
printf("Introduce el tercer dígito: \n");
scanf("%d",&d3);
printf("Introduce el cuarto dígito: \n");
scanf("%d",&d4);
printf("\nClave IP: %s",IP(d1,d2,d3,d4));
return (0);
}
char *IP(int d1, int d2, int d3, int d4){
int i;
char *ip;
ip=(char *)malloc(8*sizeof(char));
ip[0]= d1;
ip[1]='.';
ip[2]= d2;
ip[3]='.';
ip[4]= d3;
ip[5]='.';
ip[6]= d4;
ip[7]='\0';
return ip;
}
edit: El enunciado: Escribir una función char *IP(int d1, int d2, int d3, int d4) que reciba cuatro enteros que definen
dominios y subdominios y que los transforme en una direccion IP en el formato habitual y lo devuelva como
puntero a char.
Pero el problema es al imprimir, la funcion seguramente tire bien, pero no puedes imprimir con %s porque interpreta como una cadena
Solucionado Pasé cada dígito de la IP por separado, y al mandarlo solo tuve que sumarle 48 para que no me saliese el ASCII, gracias de todas formas
Buenas! Estoy analizando un código que hace una conversión hexadecimal de una posición.
No me queda nada claro, alguno que haya utilizado un método parecido para convertir a hexa?
long convert_hexa_pos(uchar size,uchar datos[10])
{
uchar i,j=0;
long sumatorio=0;
long medio;
for(i=(size-1); i > 0; i--)
{
medio=datos[i]*pow((double)2,(j*8));
sumatorio=sumatorio + medio;
j++;
}
return sumatorio;
}