Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Confronto dati [C]

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    12

    Confronto dati [C]

    Ho creato due array di 4 caratteri.

    Uno si chiama ProvaSoluzione, l'altro CHIAVEALFA

    Il CHIAVEALFA è generato automaticamente, ProvaSoluzione lo inserisco io.

    Devo fare in modo che un contatore incrementi di 1 se i due valori corrispondenti sono uguali.

    Ad esempio: se CHIAVEALFA è ABCD, e ProvaSoluzione è ABCE, il contatore deve essere uguale a 3.

    i=0;
    for (w=0; w<4; w++){
    if ( ProvaSoluzione[w] == CHIAVEALFA[w] )
    i++ ;
    } ;
    Se il primo carattere dell'array è uguale non mi incrementa.

    qualche consiglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Dal codice che hai postato, non sembra possibile. Sicuro che i caratteri iniziali dei due array siano uguali? Perché non li provi a stampare nel ciclo?
    every day above ground is a good one

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    12
    Posto il codice completo:

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <time.h>


    #define COLORI 6 /*così non faccio confusione */
    #define SOLUZIONE 4 /* dimensione della soluzione */

    int main()
    {
    /* Dichiaro i contatori */
    int j = 0;
    int k = 0;
    int l = 0;
    int i = 0;
    int w = 0;

    /* genero la soluzione */
    int CHIAVE [4]; /* stringa NUMERICA della soluzione */
    char CHIAVEALFA[5]; /* stringa ALFABETICA della soluzione */

    /* Genero un array casuale con numeri tra 1 e 6 */
    srand(time(NULL));
    for ( j=0; j< 4 ; j++ ) {
    CHIAVE[j] =rand()%6;
    }
    for ( l=0; l< 4 ; l++ ) {
    printf(" %d" , CHIAVE[l]);
    }

    /* Converto l'array numerico in array di testo char con lettere */
    for ( k=0; k<4; k++ ) {
    switch (CHIAVE[k]){
    case 0:
    CHIAVEALFA[k] = (char) 'A';
    break;
    case 1:
    CHIAVEALFA[k] = (char) 'B';
    break;
    case 2:
    CHIAVEALFA[k] = (char) 'C';
    break;
    case 3:
    CHIAVEALFA[k] = (char) 'D';
    break;
    case 4:
    CHIAVEALFA[k] = (char) 'E';
    break;
    case 5:
    CHIAVEALFA[k] = (char) 'F';
    break;
    }
    }

    printf("\n");
    printf (" %c", CHIAVEALFA[0]);
    printf (" %c", CHIAVEALFA[1]);
    printf (" %c", CHIAVEALFA[2]);
    printf (" %c", CHIAVEALFA[3]);
    printf("\n");
    /* leggo la stringa della soluzione */

    char ProvaSoluzione[SOLUZIONE];
    printf ("Inserisci la prima soluzione : ");
    scanf ("%s" , ProvaSoluzione);

    printf("\n");
    printf (" %c", ProvaSoluzione[0]);
    printf (" %c", ProvaSoluzione[1]);
    printf (" %c", ProvaSoluzione[2]);
    printf (" %c", ProvaSoluzione[3]);
    printf("\n");

    /* Faccio il prodotto dei componenti dell'array PSNumerale */
    i=0;
    for (w=0; w<4; w++){
    if ( ProvaSoluzione[w] == CHIAVEALFA[w] )
    i++ ;
    } ;

    /*stampo il prodotto per vedere se è corretto */
    printf ("%d", i);

    printf("\n");
    if (i>= 1)
    for (w=0; w<=i; w++){
    printf ("O");
    w++ ;} ;

    printf("\n");

    system("pause");
    return 0;

    }

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se utilizzi la

    scanf ("%s" , ProvaSoluzione);

    per inserire i dati in ProvaSoluzione come stringa, allora devi prevedere lo spazio per il terminatore NULL nell'array. Deve quindi essere

    char ProvaSoluzione[SOLUZIONE + 1];

    altrimenti rischi di "sporcare" i dati nello stack con esiti imprevedibili (tra cui quelli che hai riscontrato).
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2009
    Messaggi
    12
    Funziona!

    Grazie

    A presto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.