PROBLEMA esercizio in c++

bigendian

Utente Attivo
742
425
OS
Linux
non svolgiamo compiti per casa, non utile a nessuno e per altro, vietato dal regolamento.
E' un esercizio carino, ogni ricerca va fatta con ciclo for, la piu complessa quella in diagonale che puoi lasciare per ultima. Manda domande mirate al singolo problema.
 

bigendian

Utente Attivo
742
425
OS
Linux
Ehi, ma non t'arrabbiare, e' la prassi, qui invitiamo tutti a provare da soli.

Di base devi effettuare due cicli annidati, ad esempio, per il caso di ricerca orizzontale da destra a sinistra

Nota, codice non testato, buttao giu cosi in velocita', puo contenere errori.

Codice:
int r, c;

for (r = 0; r < NUM_RIGHE; r++) {
    for (c = 0; c < NUM_COLONNE; c++) {
        if (strcmp(parola &riga[c]) == 0) {
            /* trovata */
        }
    }
}

o in verticale

Codice:
int p, c, r, len = strlen(parola);

for (c = 0; c < NUM_COLONNE; c++) {
    p = 0;
    for (r = 0; r < NUM_RIGHE; r++) {
        if (parola[p] != matrice[r][c]) {
            p = 0;
            continue; /* avanza colonna */
        }
        /* lettera trovata */
        p++;
        if (p == len) {
            parola trovata
        }
    }
}

Inizierei a far funzionare questi due, per ultimo quello diagonale piu complesso.
 
  • Mi piace
Reazioni: DispatchCode

Andretti60

Utente Èlite
6,440
5,091
Beh, cominciamo dall’inizio perché la tua matrice non è inizializzata.
Prendi questo codice:
C:
int righe=0;
    int colonne=0;
    cout<<"quante colonne vuoi?" << endl;
    int rc=0;
    int cc=0;
    char mat[righe][colonne];
    for(rc=0; cc<righe; rc++){
        for(cc=0;cc<colonna; cc++){
            mat[rc][cc]=
Dichiari due variabile (righe e colonne) che inizializzi a zero, ma poi non le leggi da tastiera e quindi rimangono zero, per cui dichiari una matrice nulla.
I due cicli innestati dovrebbero iniziare la matrice con lettere a caso (tra le maiuscole) usando la funzione genRandom (che però non chiami).
Gli indici usati per i cicli creano confusione, facilissimo scriverne uno invece dell’altro e infatti fai quel errore nel primo ciclo dove compari ‘righe’ con l’indice cc invece che rc (scrissi una discussione proprio a riguardo da dare nomi significativi alle variabili).

Il mio suggerimento è di andare a piccoli passi (come si dovrebbe sempre fare nella programmazione) scrivere pochissime righe di codice alla volta e provarle subito prima di proseguire per essere sicuri facciano il loro compito. Inizia con il generare la matrice e poi stamparla, poi andiamo al passo successivo.
 

Ibernato

Utente Èlite
4,328
2,047
OS
Windows 10 Pro / Ubuntu 22.04
Aggiungo che potresti calcolarti la lunghezza della parola da trovare e se questa lunghezza supera il numero di colonne/righe/diagolanli. inutile proseguire il check successivo con il prossimo indice.
 

DispatchCode

Moderatore
Staff Forum
Utente Èlite
2,223
1,853
CPU
Intel I9-10900KF 3.75GHz 10x 125W
Dissipatore
Gigabyte Aorus Waterforce X360 ARGB
Scheda Madre
Asus 1200 TUF Z590-Plus Gaming ATX DDR4
HDD
1TB NVMe PCI 3.0 x4, 1TB 7200rpm 64MB SATA3
RAM
DDR4 32GB 3600MHz CL18 ARGB
GPU
Nvidia RTX 3080 10GB DDR6
Audio
Integrata 7.1 HD audio
Monitor
LG 34GN850
PSU
Gigabyte P850PM
Case
Phanteks Enthoo Evolv X ARGB
Periferiche
MSI Vigor GK30, mouse Logitech
Net
FTTH Aruba, 1Gb (effettivi: ~950Mb / ~480Mb)
OS
Windows 10 64bit / OpenSUSE Tumbleweed
@vale1234 ci aggiorni per favore? Hai risolto oppure no?
In caso contrario, facci sapere che ostacoli trovi.
 
  • Mi piace
Reazioni: Mursey

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili