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!