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:
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!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; } }

Rispondi quotando