Ayuda con ejercicio

Iniciado por jonlolo, 9 Noviembre 2013, 15:37 PM

0 Miembros y 1 Visitante están viendo este tema.

jonlolo

Bien el ejercicio consiste en tener una matriz 10x10 . En esta matriz tiene que haber colocados diez (1) de forma aleatoria y una (A) de forma aleatoria tambien,
El codigo es de la matriz ya hecha pero no consigo poner los 0 de forma correcta ni la A alguna ayuda??

#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE*fichero;
fichero = fopen("ejemplo1.txt", "w");
int num;
num=rand()%1;
int i,j;
for (i=0;i<=10;i++)
{
for(j=0;j<=10;j++)
{
fprintf(fichero,"%d ",rand()%100<10);
}
fprintf(fichero,"\n");
}

fclose(fichero);
system("Pause");
}

rir3760

Tu programa tiene varios errores como utilizar bucles:
for (i=0;i<=10;i++)
Que iteran once veces, no diez. La condición debes cambiarla a "i < 10".

Otros dos son las expresiones "rand() % 1" ya que siempre resultara en cero y "rand() % 100 < 10" que resultara en 1 o 0 dependiendo del residuo de la división.

----

La forma mas fácil es con un array de arrays de caracteres para implementar la matriz, la base es:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   FILE *salida;
   char mat[10][10];
   int i;
   int j;
   
   /* ... */
   
   return 0;
}


A continuación los pasos que se deben realizar son:

1) Almacenas en todos los elementos de la matriz el carácter '0'. Eso lo realizas con dos bucles anidados cada uno iterando diez veces.

2) Un bucle que itere diez veces, la fila y columna se generan de forma aleatoria con "rand() % 10" para colocar ahí un '1'. Se debe verificar (mediante un bucle anidado) que la celda no contenga un '1'.

3) Se genera la fila y columna de forma aleatoria para el carácter 'A'. Utilizas un bucle para verificar que ahí no se encuentre un '1'.

4) Ya con todos los valores en la matriz abres el archivo, envías todos los datos (dos bucles anidados) y cierras el archivo.

En términos generales eso es todo.

Un saludo
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language

jonlolo

Gracias ya he corregido los errores que tenia y ya puedo obtener bien la matriz 10x10 con 10 unos puestos de forma aleatoria. Pero sigo teniendo problema para colocar la A.

Si no es mucha molestia. Podrias pasar el trozo de codigo de como situar la "A" .

Deberia quedar algo asi:

0 0 0 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 A 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 1 0 0 0 0
0 1 0 0 0 0 1 1 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0

jonlolo

Gracias a todos ya esta resuelto!!!