Foros ZackYFileS

Foros ZackYFileS (http://foros.zackyfiles.com/index.php)
-   PROGRAMACIÓN Lenguajes: Visual Basic, C++, etc (http://foros.zackyfiles.com/forumdisplay.php?f=370)
-   -   Duda de estudiante rayado: xD (http://foros.zackyfiles.com/showthread.php?t=459275)

FiEsTaMaN 07/08/2006 12:10

Duda de estudiante rayado: xD
 
Bueno, pues después de darle miles de vueltas... a ver si me echais una mano, el caso es que esta cosa tan tonta (que pretendo que sea un conecta4) me está dando más de un dolor de cabeza y aún no he hecho más que empezar... Que mal llevo esto del C después de usar java xD

Pues antes que nada ahí va el trozo de código..

[quote]
#include <stdio.h>
#include <string.h>
#define MAXCHAR 100
#define FILAS 10
#define COL 8
typedef enum {false, true} boolean;
typedef char String[MAXCHAR];
typedef int tj[FILAS][COL];

void imprimirTabla(tj);
//boolean ComprobarFilas( pasamos tabladejuego y puntero a findejuego);


void main(void){
tj tablero;
int i,j=0;
boolean findejuego=false;
String jugad1;
String jugad2;

//Creando jugadores


printf("Bienvenido a Conecta4 tal tal\n");

printf("\n Introduce el nombre del jug1: ");
scanf("%s", jugad1);

printf("\n Introduce el nombre del jug2: ");
scanf("%s", jugad2);


// Todo Crear la tabla y ponerla a cero


for (i=0;i<FILAS;i++){
for (j=0;j<COL;j++){
tablero[i][j]=0;
}
}

//FIN crear y poner a cero el tablero

imprimirTabla(tablero);


}


void imprimirTabla(tj tabl){
int h,m;
for (h=0;h<FILAS;h++){
for (m=0;m<COL;m++){
printf("%n ", tabl[h][h]);
}
printf("\n");
}
}[/quote]

El problema está en la función imprimirTabla, que no sé por qué, me provoca un error general.

Un saludo y cuento, una vez más, con vuestra ayuda!

kr5323 07/08/2006 12:30

Esteeee ... ya si eso luego le echo un vistazo y te cuento, jejejeee. Es broma, lo siento compi pero ni flowers de tu problemilla. Fijo que te ayudan a solventarlo. Paciencia.


Un abrazo y suerte.

ElZazu 07/08/2006 12:46

5ª línea por la cola, lees mal la tabla y por ahí puede petar si excedes los valores.

Pones printf("%n ", tabl[h][h]); y debería poner printf("%n ", tabl[h][m]);

El resto lo veo correcto a primera vista.

Saludos

maestropiero 07/08/2006 13:35

fectivamente.
Cuando printf("%n ", tabl[h][h]) llegue a printf("%n ", tabl[10][8]) catapun!!! porque el array solo esta dimensionado a 8 (0 a 7) y te excedes del tamaño.

FiEsTaMaN 07/08/2006 14:36

Totalmente de acuerdo, pero no es eso, eso ha sido un error al corregir otra cosa, poniéndolo bien sigue pasando lo mismo... alguna otra sugerencia?

ElZazu 07/08/2006 16:54

Que error te da exactamente FiEsTaMaN?

Saludos

Efirenet 08/08/2006 01:27

Hola, el error lo sigues teniendo en esa misma línea:

Código PHP:

printf("%n "tabl[h][m]); 

Has puesto %n cuando querías poner %d.

El identificador de formato %n se usa para otro propósito (indica el número de caracteres impresos hasta ese punto, en ese printf). Además espera un puntero y no un valor en la lista de argumentos y tú le estás poniendo el valor de tabl[h][m]. Por eso falla.

Un saludo

FiEsTaMaN 08/08/2006 10:52

Cita:

Iniciado por Efirenet
Has puesto %n cuando querías poner %d.

Eso era! MUCHAS GRACIAS. Se me ha ido completamente ahí.

UN SALUDO!

Edito: Realmente no sabía ni que existía el %n, para que sirve?

ElZazu 08/08/2006 11:10

Cierto, se me pasó.

%n = Guarda el número de caracteres entradas hasta ahora en este fscanf, scanf, o sscanf. El argumento correspondiente es un puntero a un entero.

Por ejemplo:

int tam;
printf( "Introduce una palabra (hasta 10 letras): " );
scanf( "%s%n", cadena, &tam );
// en este ejemplo, cadena contendría la palabra introducida y tam el número de caracteres

Saludos

FiEsTaMaN 08/08/2006 14:39

[QUOTE=ElZazu]Cierto, se me pasó.

%n = Guarda el número de caracteres entradas hasta ahora en este fscanf, scanf, o sscanf. El argumento correspondiente es un puntero a un entero.

Por ejemplo:

int tam;
printf( "Introduce una palabra (hasta 10 letras): " );
scanf( "%s%n", cadena, &tam );
// en este ejemplo, [B]cadena[/B] contendría la palabra introducida y[B] tam [/B]el número de caracteres

Saludos[/QUOTE]

Ya sé una cosa más ;),

Gracias a todos y un saludo


La franja horaria es GMT +2. Ahora son las 03:09.

Powered por vBulletin™ Version 3.8.10
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.
Traducido por vBsoporte - vBulletin en español
ZackYFileS - Foros de Debate