Generar matriculas aleatorias

Iniciado por JOSE23, 6 Marzo 2011, 22:14 PM

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

JOSE23

TENGO QUE HACER UN PROGRAMITA QUE GENERE MATRÍCULAS ALEATORIAS. UNA MATRIZ DE 20 FILAS X 8 ELEMENTOS CADA UNA. DE CADA FILA, DEL 0 AL 3 CONTENDRAN CIFRAS ALEATORIAS (DEL 0 AL 9), EL 4 SERA UN ESPACIO EN BLANCO, Y DEL 5 AL 7 SERAN LETRAS MAYUSCULAS GENERADAS ALEATORIAMENTE.
LUEGO, MOSTRARLA EN FORMA DE MATRICULA POR LINEA.
SOLO E PODIDO HACER DE MOMENTO LO QUE PONGO A CONTINUACIÓN, ESTOY EN ELLO...

SE ADMITEN SUGERENCIAS

Código (cpp) [Seleccionar]
#include <stdio.h>
#define nfi 20
#define nco 8

// Función Principal
main ()
{
char letra[nfi][nco];
int fila,num,col;

for (fila=0;fila<nfi;fila++)
    for (col=0;col<nco;col++)
fflush(stdin);
getchar();
}


Mr.Blue

char matriz [20] [8];

for (i=0;i<21;i++){
for (j=0;j<9;j++){
if (j==4){
matriz [i][j]=" ";
else if (matriz [i][j]>=0 && matriz [i][j]<4){
srand (1);
int n=0; //en el main
if (n<=9){
rnd= rand();
matriz [i][j]=rnd;
n++;


Esta echo a las apuradas asiq puede aver algun error.
es como trabajar con cadenas, en si podes generar 20 matriculas de 8 digitos + 1 espacio
lo primero que pregunto cuando entro a recorrer la cadena es si j=4 si es asi es un espacio. Primera parte resuelta.
si no preguntas si la matriz en la pos i;j es mayor o igual q 0 y menor que 4.
Si es asi generas un numero aleatorio de 0 a 9 y lo guardas en la pos de la matriz.

El resto te lo dejo a vos, ya que no se realizan tareas.

Ultima pista para las letras aleatorias (Mira la tabla ascii)

Saludos-

Valkyr

Bueno, te propongo esta solución, antes de nada tengo que decirte que no se si compila porque no estoy en linux y no puedo compilarlo, por otro lado no se si estará completamente correcto y si te valdrá la solución en C++, si no es así modificalo a tu gusto. Espero te sirva de ejemplo.

Código (cpp) [Seleccionar]
#include<iostream>
using namespace std;
int matricula[20][8]; //Variable global, cada fila representa una matricula
/*
Metodo que inicializa la matriz de las matriculas
*/
void inicializa(void){
for(int i=0;i<20;i++){//Recorremos todas las filas
for(int j=0;j<3;j++) //Recorremos las tres primeras columnas para insertar números aleatorios
matricula[i][j]=rand() % 10;//Con esta funcion se obtiene un numero aleatorio, se hace el modulo con 10 para obtener un valor entre 0 y 9
matricula[i][3]=int(' ');//Asignamos el entero correspondiente al espacio en blanco
for(int j=4;j<8;j++) //Recorremos el resto de columnas
matricula[i][j]=rand () % (90-65+1) + 65; //Con esta funcion se asigna un valor entre 65 y 90 que son los valores decimales que representan los caracteres en mayusculas
}
}
/*
Metodo para mostrar por pantalla el contenido de la matriz
*/
void muestra_por_pantalla(){
for(int i=0;i<20;i++){
for(int j=0;j<3;j++)
cout<<matricula[i][j];//Primero mostramos los tres numeros
cout<<char(matricula[i][3]); //Mostramos el espacio en blanco (se pone char porque la matriz es de enteros y lo que queremos mostrar es el caracter)
for(int j=4;j<8;j++)
cout<<char(matricula[i][j]);//Volvemos a hacer lo mismo pero para las letras
cout<<endl;//Imprimimos retorno de carro
}
}

int main(void){
while(true){//Bucle infinito, modificalo a tu gusto con la condición que quieras
inicializa();
muestra_por_pantalla();
cin.get();
}
}


PD: Lo he compilado online y funcionaba perfectamente, espero te sirva.
PPD: Sr.Blanco los indices de los bucles están mal, si declaras la matriz de 20x8 en los bucles debes recorrerla mientras i<20 y mientras j<8 puesto que la numeración de bucles en casi todos los lenguajes va desde 0 hasta el valor con el se declaró menos uno. Saludos.