Ragazzi ho bisogno di aiuto! Ho una prova di laboratorio mercoledì pomeriggio e non riesco a capire cosa non va nel mio programma. Inizio a dirvi la consegna dell'esercizio:
[....]
Modificare il precedente nel seguente modo:
- scrivere una funzione inserisciCodici per inserire diversi codici a barre (i parametri e l'eventuale valore
ritornato sono da stabilire). Ogni codice viene salvato in una riga di una matrice C di 100 righe e di 8 colonne.
L'inserimento termina quando un codice a barre è non soddisfa le condizioni sopra descritte (lunghezza dle barcode deve essere di 8 caratteri e non deve contenere al suo interno 'XX') o quando si è riempita la
matrice C.
- scrivere nel main la chiamata alla funzione inserisciCodici ed inoltre richiedere all'utente le iniziali di u\n
codice e salvarle in un array daCercare
- scrivere la funzione ricercaCodice che prende in ingresso la matrice C, il vettore daCercare (più eventuali
variabili aggiuntive che si ritengono utili/indispensabili) e restituisce l'indice della prima riga contenente un codice a
barre che coincide con daCercare nei caratteri contenuti in daCercare.
es.
890A234X
890A244X
800A244X
800A245X
8e0A24XX
inserire codice da ricercare : 800
il primo codice che inizia con 800 è 800A244X alla riga 3.
Questo è come lo pensato io:
codice:
#include<stdio.h>
#define MAX 20
#define MAX_RIGHE 100
int ricercacodice(char mat[][MAX],char vet[],int riga,int l_vet);
int Inserisci_barcode(char barcode[],int *l_barcode,char mat[][MAX]);
void main()
{
char barcode[MAX],cerca[MAX],matrice[MAX][MAX];
int l_barcode,l_cerca;
int numero_righe;
int r,i,j;
numero_righe=Inserisci_barcode(barcode,&l_barcode,matrice);
printf("Numero righe inserite:%d\n",numero_righe);
printf("Inserisci vettore da cercare: ");
gets(cerca);
l_cerca=strlen(cerca);
r=ricercacodice(matrice,cerca,numero_righe,l_cerca);
if(r==-1)
printf("Nessun codice trovato");
else
printf("Codice %s trovato alla riga %d",cerca,r);
system("pause");
}
int Inserisci_barcode(char barcode[],int *l_barcode,char mat[][MAX])
{
int i,j,giusto=1,RIGA=0,ok=1;
do{
printf("Inserisci barcode: ");
gets(barcode);
*l_barcode=strlen(barcode);
if(*l_barcode!=8)
{
printf("La lunghezza del barcode risulta essere diversa da 8\n");
giusto=0;
}
else
{
for(i=0;i<*l_barcode;i++)
if(barcode[i]== 'X' && barcode[i+1]== 'X')
{
printf("Il barcode non puo' contenere i caratteri 'XX' consecutivi\n");
giusto=0;
}
}
if(giusto==1)
{
for(j=0;j<8;j++)
{
mat[RIGA][j]=barcode[i];
}
RIGA++;
}
}while(RIGA<MAX_RIGHE && giusto==1);
if(RIGA==MAX_RIGHE)
printf("Matrice piena\n");
return RIGA;
}
int ricercacodice(char mat[][MAX],char vet[],int riga,int l_vet)
{
int i,j,uguale=1;
for(i=0;i<riga;i++)
{
for(j=0;j<l_vet;j++)
{
if(mat[i][j]!= vet[j])
{
uguale=0;
break;
}
else
uguale=1;
}
if(uguale==1)
return riga;
else
return -1;
}
}
Il problema è essenzialmente nella funzione Ricercacodice...qualsiasi codice inserisco mi appare a schermo durante l'esecuzione ("codice non trovato"). Ho paura che il problema sia la mat[i][j]..grazie mille in anticipo per l'aiuto!