Hilo Oficial de C/C++

1, 2, 3, 4, 5, 6
Hay muchos controles para imprimir, no se, eso deberia de ser facil, pero asi al vuelo no se que decirte macho.
Pues a ver, yo necesito pasar unos parametros por referencia mediante punteros (C) a otra funcion. Y no tengo ni puta idea. Se trata de pasar una matriz a otra funcion para que ordene sus valores.
veamos, no se si podré ayudarte pero... aver si esto te sirve de algo.

veamos la cabecera de la función podria ser algo así:

void ordena_matriz(int **matriz);

y para pasar la matriz tendria que ser algo así:

ordena_matriz(matriz);

creo que con eso funcionaria (tampoco es que esté muy seguro, pruebalo y comentas).

[bye]
Batousay escribió:y para pasar la matriz tendria que ser algo así:

ordena_matriz(matriz);

En realidad te falta una cosa, sería así:
ordena_matriz(&matriz);

Si además lo que quieres es una matriz bidimensional la definición cambia un poco:

void ordena_matriz(int ***matriz);

Y luego además por dentro de la función tienes que usar el operador de indirección ( uséase, este: *)

Ejemplo:

void SumaUno(int *num){
(*num)++;
}

y llamarías a la función asín:
int neng = 0;
SumaUno(&neng);
//Ahora neng vale 1

En resumen, siempre que quieras pasar un parámetro por referencia, deberás pasar a la función su dirección de memoria utilizando el operador de referencia. (&) y por tanto definir la función y operar dentro de ella como si el parámetro fuera una dirección de memoria, o lo que es lo mismo, un puntero.
Algun buen libro para aprender C++?
FrisKo escribió:Algun buen libro para aprender C++?


Sí, supongo que sabes C, si es asi:

C++, guia de la autoenseñanza, por herbert schildt de Mcgraw hill


Si no sabes C comprate antes la version de C :P


Un saludo.
FrisKo escribió:Algun buen libro para aprender C++?


El que recomiendo siempre para empezar si sabes inglés: Thinking in C++, lo puedes descargar gratuitamente. Explica los conceptos básicos de C que necesitas así que si no dominas el C tampoco es mucho problema.
Buenas!

Tengo un problema con un programa en C.. a ver si me podeis echar una mano...

Tengo que enviar una web, la cual tiene una variable oculta, que envia un integer. El problema es que me envia siempre un 0 cuando la envio con el write, en cambio, si la imprimo justo antes, me sale el valor real. Teneis idea de si tengo que convertir el valor o algo parecido?

La instrucción es:

write(socket, numsocket, 1);


Gracias!
Ya se que no es de este foro, xo no veo otro sitio donde preguntar.

¿Alguien tiene un programa una base de datos de clientes en C#? ¿o info de como hacer uno?

salu2

PD: Es para el lunes, necesito vuestra ayuda desesperadamente, sino me van a .......
La instrucción es:

write(socket, numsocket, 1);


Yo no he trabajado con sockets, pero si funciona como las llamadas al sistema, sería:

write(socket, &numsocket, sizeof(int));


Saludos
¿Para que están las páginas del manual si no es para cosas como esta?

ssize_t write(int fd, const void *buf, size_t count);
tengo que hacer unas practicas en c/c++ del juego 4 en raya en un array de 6,7 si me podeis ayudar las tengo que entregar mañana aber si puede ser por que estoy de los nervios y no me salen
dan_squall escribió:tengo que hacer unas practicas en c/c++ del juego 4 en raya en un array de 6,7 si me podeis ayudar las tengo que entregar mañana aber si puede ser por que estoy de los nervios y no me salen


Y que es lo que no te sale??
no me sale cuando tengo k colocar la X o la O en la posicion mas baja dl array y dsp cuando lo tengo que colocar encima si ya esta ocupada una posicion
para colocar la X o la O hazlo ocn un 1 o un 2 y te evitas de lios, haces una asignación a esa celda del array y ya está, y para ver si está llena pues miras y si la celda que miras es un 1 o un 2 pues no haces nada y listo.

Saludos
uhm... si sabes la columna donde se va a colocar... empiezas desde abajao a comprobar si ya existe una X o una O en esa posición y en el momento que no haya colocas lo que toque, eso con un simple for es bastante sencillo.

[bye]

Edito... en realidad he puesto la respuesta antes que daniel_5 pero mi ratón es muy lento haciendo el click :P:P:PXD
si eso tmb supongo que lo he pensado si se sabe a la columna que a de ir pero no somo pornerlo .. XD
dan_squall escribió:si eso tmb supongo que lo he pensado si se sabe a la columna que a de ir pero no somo pornerlo .. XD


Mmmm si no sabes meter un numero en un array lo tienes chungo XD

Pasate por aqui http://c.conclase.net/
Veamos... si tu sabes que una X tiene que ir en la columna 2...


a_poner='X';
columna=2;

for(j=max; j>0 && tablero(j, columna) != 'X' && tablero(j,columna) != 'O'; j--);

if(j<0) {
no puedo ponerlo;
}

else {
tablero(j,columna)=a_poner;
}

No se si está bien del todo, pero más o menos es así (como se nota ke hace meses k no toco nada de C XD)

[bye]
Tengo un problema para acabar una pràctica para la universidad, y es el siguiente:
Necesito enviar el número 5 a un servidor, para luego leerlo.
Si ejecuto el write de la siguiente manera:

write(sockhttp,"5", 2);

y luego lo leo, todo va perfecto.

El problema es que donde está el "5" tiene que haber una variable, un integer. Para eso, hago lo siguiente: (se supone que charsock me lo devuelve otra función, pero lo he puesto asi para abreviar)

charsock=5;
write(sockhttp,charsock,sizeof(charsock));

Si lo hago de este modo, cuando luego lo leo, no me aparece ningún valor.
El servidor es un pequeño servidor web que he hecho. Creo que tengo que mandarle la varibale en formato ASCII, por lo que pensé en mandarle un 53, que es el valor de 5 en ASCII, pero no hay manera

Alguna ayuda?

Muchas gracias, gente
Hola aver si alguien me puede ayudar porque tengo una duda.

Necesito poder entrar datos desde el programa de visual c++ a una base de datos mysql, pero cuando tengo que entrar valores de variables, no se como hacerlo. Tengo una clase mysql que el metodo de insercion es:

bool MySql::insert(char* insert){
if(strlen(insert)>0){
CString sql;
sql.Format(insert);

if(mysql_real_query(linkDb,sql,sql.GetLength()) == 0 ) return true;
else return false;

}
else return false;
}

por tanto tengo q pasarle un string que se corresponde con la comanda de mysql cierto asta aki creo....
portanto en l programa necesito crearlo

pero hago
for contador = 0 asta 10
INsert into X values ('contador','loquesea','loquesea')

i si contador es una variable no me va..
en fin necesito concatenar el string pero haciendo q me coja en el string el valor q contiene la variable

no me se explicar la verdad xD weno gracias de todos modos
SiTTo escribió:pero hago
for contador = 0 asta 10
INsert into X values ('contador','loquesea','loquesea')

i si contador es una variable no me va..
en fin necesito concatenar el string pero haciendo q me coja en el string el valor q contiene la variable

no me se explicar la verdad xD weno gracias de todos modos



Bueno no me queda muy claro lo q pretendes hacer, pero si dices q necesitas concatenar la string y q en la string salga el valor de "contador" (es eso, no?), y "creo" q lo q quieres es generar con variables, una string q sea la sentencia SQL.

Si esto es lo q quieres, puedes usar SPRINTF (printf a una string).
La cosa es q no toy seguro si en VC++ existe esto y no lo puedo mirar ahora, pero te lo cuento por si acaso.

Digamos q puedes hacer algo asi:

char sentenciaSQL[100]; // x ejemplo
sprintf(sentenciaSQL,"Insert into %s values (%d,'%s')", stringX, contador, otraString);

No se si me explico, a ver si me entiendes ;)
ostia no habia pensado en eso

sisi lo as entendido lo q queria decir y tb he entendido lo que me kieres decir tu, ahora lo probare

gracias de todos modos =)

Ya lo he probado y funciona

muchas gracias de verdad :__)
Una duda tonta...

Antes al programar en c++ usaba el system("PAUSE"), pero ahora he cambiado de distribucion linux (tengo suse 9.2) y no encuentra la llamada pause.
Como puedo hacer que funcione?, o en su defecto, una instruccion que pare el programa hasta que pulse alguna tecla.

Gracias ;)
oskuro está baneado por "Utilizar clones para soltar spoilers salvajes en el hilo del horizon: Zero Dawn"
God_Sephiroth escribió:Una duda tonta...

Antes al programar en c++ usaba el system("PAUSE"), pero ahora he cambiado de distribucion linux (tengo suse 9.2) y no encuentra la llamada pause.
Como puedo hacer que funcione?, o en su defecto, una instruccion que pare el programa hasta que pulse alguna tecla.

Gracias ;)


has probado a ver si te pilla getch()?
tampoco me funciona, pero bueno, despues de escribir el hilo lo "solucione", y ahora hago un cin >> variable.
Ya que redefines Ver() en la clase heredada, creo que lo lógico es que la declares como virtual en la clase base para que el polimorfismo pueda actuar. De lo contrario, obtienes la salida que tienes ahora mismo puesto que se invoca a la función Ver() de la clase base.
Vaya, ahora mismo acababa de borrar el mensaje, porque ya lo habia visto :P.
La pregunta era de un examen, y estaba empanado hasta que me he dado cuenta de que la funcion Ver() no era virtual :-P , y por eso sale asi.

Gracias igualmente ;)
Haber entendidos de C, seguro que es una tonteria pero es que estoi empezando, alguna idea para solucionar estos errores:

$ gcc msh.o -o msh
msh.o:msh.c:(.text+0xc6): undefined reference to `_get_orden'
msh.o:msh.c:(.text+0xe1): undefined reference to `_num_argumentos'
msh.o:msh.c:(.text+0xfe): undefined reference to `_get_argumentos'
msh.o:msh.c:(.text+0x143): undefined reference to `_es_background'
msh.o:msh.c:(.text+0x1a9): undefined reference to `_analizar'
msh.o:msh.c:(.text+0x1cd): undefined reference to `_num_argumentos'
msh.o:msh.c:(.text+0x1d7): undefined reference to `_get_orden'
msh.o:msh.c:(.text+0x1dc): undefined reference to `_get_argumentos'
msh.o:msh.c:(.text+0x1e4): undefined reference to `_es_background'
msh.o:msh.c:(.text+0x207): undefined reference to `_ejecutar'
collect2: ld returned 1 exit status


Al hacer el gcc -c msh.c me da unos warnings. tienen algo ke ver¿?Las funciones a las ke hace referencia estan en otros archivos.Si necesitais pongo el codigo

Gracias, Salu2
Una pregunta de C sobre acceso a semáforos.
Si varios procesos pretenden acceder a un recurso bloqueado por un semáforo, cuando el semáforo se abre, los procesos acceden en el orden que pidieron usar el recurso o se hace aleatoriamente.

Resumiendo, si la lista de procesos en espera es una cola. XD

Un saludo.
A ver si alguien me puede resolver esta duda:

Necesito saber como puedo obtener una lista de los archivos y carpetas que hay en una ruta determinada, de forma que pueda trabajar con ellos. Es decir, alguna forma de escanear una carpeta.

¿Alguien me puede indicar como puedo hacerlo? He hecho muchas busquedas en google, pero no he encontrado nada parecido.
Thx.
J0han escribió:Necesito saber como puedo obtener una lista de los archivos y carpetas que hay en una ruta determinada, de forma que pueda trabajar con ellos. Es decir, alguna forma de escanear una carpeta.


Mirate la documentacion sobre findfirst(); y findnext();
J0han escribió:A ver si alguien me puede resolver esta duda:

Necesito saber como puedo obtener una lista de los archivos y carpetas que hay en una ruta determinada, de forma que pueda trabajar con ellos. Es decir, alguna forma de escanear una carpeta.

¿Alguien me puede indicar como puedo hacerlo? He hecho muchas busquedas en google, pero no he encontrado nada parecido.
Thx.


No sé si lo quieres para C o C++... en este último caso, quizás te compense usar Boost:

http://www.boost.org/libs/filesystem/doc/index.htm
Perfecto, gracias a los dos [Ooooo]
Hola a todos!

A ver si alguien me puede echar una mano... Quiero hacer una aplicacion en visual c++ en la que aparezca una ventana partida en dos y en cada parte un archivo de texto diferente. Estoy trabajando con las mfcs y por ahora tengo lo que me ha hecho el asistente del visual studio, es decir, una aplicación MDI con una ventana. La ventana por ahora está vacía porque no sé cómo hacer que me enseñe el documento de texto. Supongo que para los que sabeis programar con en visual estará tirado, pero yo debo de ser una patata porque no entiendo el código que tengo...

Sé que para dividir la ventana necesito la clase CSplitterWnd, pero no sé donde ponerlo y tampoco sé como seleccionar cada una de las partes para tratarlas...

A parte de eso, quiero hacer un botón que al pulsarlo me ejecute un código, cómo se hace? Sé dibujar el botón y ponerle ID y esas cosas pero no sé donde se encuentra el código que mira cúando se pulsan los botones....

A ver si algún alma caritativa me orienta un poco. No pido que me lo piquen ni nada de eso, sólo una ayudita. Si no, si sabeis de algún buen manual... porque la librería msdn funciona si sabes dónde buscar, pero si no la verdad es que no ayuda mucho

Muchas gracias
Aver si alguien me echa una mano para resolver este programa en C.
El enunciado es el siguiente:

Visualizar todos los números binarios representables con 4 bits, ordenados de menor a mayor, así como su valor decimal.

Me imagino que habra que presentarlos de esta manera 0000, 0001, 0010........pero no tengo ni idea de como hacerlo. :-?

Quizas con algun bucle for? O unos pocos? [looco]
seinya escribió:Aver si alguien me echa una mano para resolver este programa en C.
El enunciado es el siguiente:

Visualizar todos los números binarios representables con 4 bits, ordenados de menor a mayor, así como su valor decimal.

Me imagino que habra que presentarlos de esta manera 0000, 0001, 0010........pero no tengo ni idea de como hacerlo. :-?

Quizas con algun bucle for? O unos pocos? [looco]


Yo haria algo asi:


int contador;

for (contador=0; contador<16; contador++)
{
    if (contador&8) printf("1"); else printf("0");
    if (contador&4) printf("1"); else printf("0");
    if (contador&2) printf("1"); else printf("0");
    if (contador&1) printf("1"); else printf("0");
    printf(" = %d\n", contador);
}




Eso te deberia valer, PERO ojo porque igual no es lo que pretende el profesor que hagais, por el metodo mas que nada XD
Blame escribió:Haber entendidos de C, seguro que es una tonteria pero es que estoi empezando, alguna idea para solucionar estos errores:



Al hacer el gcc -c msh.c me da unos warnings. tienen algo ke ver¿?Las funciones a las ke hace referencia estan en otros archivos.Si necesitais pongo el codigo

Gracias, Salu2


Te falta añadir los archivos .o de las funciones a la linea de compilacion
Hola, ya se que el Hilo es ce C/C++ pero estoy desesperado, ¿alguien sabe hecer [url="http://www.lpsi.eui.upm.es/ProgramacionI/Prc1f056.pdf"]esto[/url] en pascal?

Si me podeis ayudar rapido os lo agradeceria.
Buenas, señores.

Tengo una duda que me trae de cabeza. Se trata de una clase que al crear el objeto se le pase el tamaño de un "tablero" (array de dos dimensiones), y que crea el array en el constructor, sin inicializarlo, si es posible.

No soy capaz de hacerlo, pero seguro que es fácil.



Muchas gracias por adelantado
Hola chavales, vereis estoy haciendo una práctica de Informática en C y tengo que crear una matriz dinámica, el problema es que la matriz no es ni de tipo int, ni de char, ni nada de eso, sino que es una estructura a la que se accede mediante un puntero, además de que es necesario para crear una matriz dinamica.
El caso es que cuando accedo a un elemento, pues en principio todo funciona pero para acceder a un elemento de una estrucutra mediante un puntero sabeis que es asi:
puntero->elemento
El caso es que como es una matriz, lo intento indexar de la siguiente manera:
puntero[x]->elemento
Pero el compilador siempre me da error, sabeis como hacerlo?
Muchisimas gracias de antemano.
Driebes escribió:El caso es que como es una matriz, lo intento indexar de la siguiente manera:
puntero[x]->elemento
Pero el compilador siempre me da error, sabeis como hacerlo?


Quieres decir que en tu caso no es puntero->elemento[x] ?
No, el "elemento" es una parte de la estructura que quiero indexar, con lo que debe ser la estructura superior la que se indexe.
Bufff, que mal me explico, si quereis os pongo el codigo de lo que he intentado y veis si he cometido un fallo, pero es bastante engorroso y algo largo.
¿No deberías hacer un:
puntero[x]=new Elemento()
?

No se eh, es para dar una posible idea XD
No, el "elemento" es una parte de la estructura que quiero indexar, con lo que debe ser la estructura superior la que se indexe.
Bufff, que mal me explico, si quereis os pongo el codigo de lo que he intentado y veis si he cometido un fallo, pero es bastante engorroso y algo largo.
A ver si me acuerdo..... tu tienes algo así, no?

/*Una estructra cualquiera*/
typedef struct _punto2D {
int x, y;
} punto2D;

/*Un main de un programa cualquiera*/
int main() {
punto2D **punto;
int i;

/*Crear matriz en memoria dinamica (se hacia así, no?)*/
/*1º Creo el vector de punteros a punteros de estructuras*/
punto = (punto2D *)malloc(n*sizeof(punto2D *));
/*2º A cada puntero aestructura le asgno un vector de estructuras*/
for( i = 0; i< n; i++) {
punto[i] = (punto2D)malloc(p*sizeof(punto2D));
}
//Si es así como lo has hecho, creo que la forma de acceder a un campo seria aigo así como:

i = punto[a][a]->x;

}


Vamos, si no me fallan los calculos con punto[a] simplemente accedes a un vector de punteros a punto2D, al ser una matriz debes de acceder igual que lo haces en las matrices.

[bye]

//Espero que sea así la solución XD

Editado pa corregir unos fallos, se ha publicado la v0.3 XD
Howdy,
Soy programador de PHP&MySQL y ahora estaba empezando a mirarme cursos sobre C++, me estaba mirando el de http://http://c.conclase.net/curso/index.php, el mejor que he podido encontrar.
Decidme que os parece para aprender, pero me gustaria más que me recomendarais otros medios, algún libro etc.
De momento lo que he ido mirando lo voy entendiendo gracias al cierto parecido con PHP aunque todos sabemos que PHP es un lenguaje permisivo es decir no hace falta declarar el tipo de variable.
Y eso en C++ choca bastante XD

Saludos.
Otro que empieza a programar en C :D ,¿me podiais pasar el manual que comentais al principio?.Es que el link esta roto :( .

Tengo la primera dudita en C ,me pide un caracter Sexo y si es "M" , que diga es correcto.

Lo que no se es el if como iria.

Char sexo[10];
printf("Introduce sexo");
fflush(stdin);
scanf("%s",&sexo");
if(-----)
printf("Correcto);

Gracias!
288 respuestas
1, 2, 3, 4, 5, 6