Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12

Discussione: c ricerca in un array

  1. #1
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505

    c ricerca in un array

    Salve a tutti

    Ho realizzato un array con un puntatore

    char *array[10]

    poi

    ho posto
    [code]
    array[1]="nome1";
    array[2]="nome2";
    etc
    [code]

    ora voglio ricercare una parola nell'array ma se dichiaro una variabile e la confornto con l'array mi dice che è impossibile convertire char in char
    che succede??
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  2. #2
    Utente di HTML.it L'avatar di Fox82
    Registrato dal
    Feb 2002
    Messaggi
    459
    Per confrontare due stringhe devi confrontare i singoli caratteri che le compongono...

    Puoi usare direttamente la funzione di libreria strcmp() che lo fa in automatico

    Linux user number 403381

    Stop TCPA!

  3. #3
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    grazie di avermi risposto ma come faccio a fre in un ciclo if il confronto???

    stringa1 e array[i] sono le parole da confrontare
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  4. #4
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    aggiungo che se scrivo strcmp non me la rileva come funzione
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Intanto non ho capito perchè sei partito ad indicizzare l'array dal valore 1 anzichè dal valore 0... comunque, if è un istruzione di controllo e non un costrutto iterativo, parlare di cicli if, quindi non è corretto. Credo che questo sia sufficiente:
    codice:
    int i = 0;
    while (i<2 && strcmp(stringa1, array[i])) {
       i++;
    }
    Il programma esce dal ciclo while quando i ha raggiunto il valore 2 oppure quando è stata trovata la stringa all'interno dell'array.

    strcmp la puoi dichiarare come segue:
    codice:
    int strcmp(char *s, char *t) {
       while(*s== *t && *s) {
          s++;
          t++;
       }
       return *s - *t;
    }
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    forse mi sono espresso male
    io devo cercare un testo in un array e volevo fare il confronto tra i campi dell'array(che richiamvo mediante il ciclo for)
    e una parola da me inserita.in base a questa fare un ciclo if per scriver determinate cose in base a se la parola è stata trovata o meno
    ti posto il mio codice forse capisci meglio

    codice:
    /* array di stringhe */
    char *array[10];
    array[1]="ssss";
    array[2]="dddd";
    array[3]="ffff";
    array[4]="ggggg";
    array[5]="rrrrr";
    array[7]="rrrrr";
    char *parola;
    printf("inserisci una parola da cercare:");
    char parola1;
    scanf("%c", parola) ;
    
    int val;
    int compare;
    val=0;
    for(val=0;val<10;val++)
    {
    strcmp(parola,array[val]);
    if (compare)
    printf("La posizione cercata è %d ", val);
    else
    printf("Non trovato nell'array");
    }
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Originariamente inviato da ciro78
    forse mi sono espresso male
    io devo cercare un testo in un array e volevo fare il confronto tra i campi dell'array(che richiamvo mediante il ciclo for)
    e una parola da me inserita.in base a questa fare un ciclo if per scriver determinate cose in base a se la parola è stata trovata o meno
    ti posto il mio codice forse capisci meglio

    codice:
    /* array di stringhe */
    char *array[10];
    array[1]="ssss";
    array[2]="dddd";
    array[3]="ffff";
    array[4]="ggggg";
    array[5]="rrrrr";
    array[7]="rrrrr";
    char *parola;
    printf("inserisci una parola da cercare:");
    char parola1;
    scanf("%c", parola) ;
    
    int val;
    int compare;
    val=0;
    for(val=0;val<10;val++)
    {
    strcmp(parola,array[val]);
    if (compare)
    printf("La posizione cercata è %d ", val);
    else
    printf("Non trovato nell'array");
    }
    Proviamo così:
    codice:
    /* array di stringhe */
    char *array[10];
    array[1]="ssss";
    array[2]="dddd";
    array[3]="ffff";
    array[4]="ggggg";
    array[5]="rrrrr";
    array[7]="rrrrr";
    char *parola;
    printf("inserisci una parola da cercare:");
    char parola1;
    scanf("%c", parola) ;
    
    int val;
    int compare;
    val=1;
    for(val=1;val<10;val++)
    {
    if (!strcmp(parola,array[val]))
       printf("La posizione cercata è %d ", val);
    }
    printf("Non l'ho trovato\n");
    ...
    
    // fuori dalla procedura precedente
    int strcmp(char *s, char *t) {
       while(*s== *t && *s) {
          s++;
          t++;
       }
       return *s - *t;
    }
    Comunque ricordati che se inizializzi l'array partendo dalla posizione 1 anche la ricerca la fai partendo dalla posizione 1, altrimenti potresti avere dei problemi.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Ecco il codice corretto (c'erano vari errori in quello postato da te, neanche quello di Lele funge :quipy: )

    codice:
    #include <stdio.h>
    #include <string.h>
    
    
    int main(){
    	/* array di stringhe */
    	char *array[10];
    	int num = 0;
    	array[num++]="ssss";
    	array[num++]="dddd";
    	array[num++]="ffff";
    	array[num++]="ggggg";
    	array[num++]="rrrrr";
    	array[num++]="rrrrr";
    	
    	//Devi allocare memoria per la variabile parola!
    	char parola[100];
    	
    	printf("inserisci una parola da cercare:");
    	scanf("%s", parola) ;
    	
    	int val;
    	int trovato = 0;
    	for(val=0;val<num;val++){
    		if(strcmp(parola,array[val]) == 0){
    		   printf("La posizione cercata e' %d\n", val);
    		   trovato = 1;
    		}
    	}
    	if(! trovato)
    		printf("Non trovato nell'array");
    	return 0;
    }

  9. #9
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    che quello di lele non funge me ne sono accorto ora provo il tuo
    lele grazie cmq
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  10. #10
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    benissimo il tuo funziona mo devo capire solo dove sbagliavo ci vediamo venerdi
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


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 © 2024 vBulletin Solutions, Inc. All rights reserved.