Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    [C]problema ricerca stringhe!

    Scrivere un programma che dato un vettore V di
    stringhe lunghe al più 20 caratteri e un carattere c,
    copi in un altro vettore tutte e sole le parole del
    vettore V che iniziano con il carattere

    scritti i dati, fatte le scanf, non riesco prorpio ad accedere alla prima lettera delle stringhe contenute nel vettore! come posso fare?

    codice:
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #define N 100
    main()
    {
    char c[2];
    char vett[N][21], copia[N][21];
    int dim;
    int i,k,j;
    int conta;
    
    printf("dimensione:\n");
    scanf("%d", &dim);
    
    printf("immettere i nomi\n\n");
    for(i=0;i<=dim;i++) gets(vett[i]);
    
    printf("carattere da confrontare\n\n");
    scanf("%c", &c);
    
    k=0;
    conta=0;
    for(i=0;i<dim;i++) {if(vett[i][0]==c) { strcpy(copia[k],vett[i]);
    										k++;
    										conta++;}
    
    }
    
    printf("%d vettori copiati.\n\n",conta);
    il problema è che in qualunque caso la condizione dell'if risulta falsa, ma non so proprio il perchè!
    steelass

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Se c è una stringa allora il confronto va fatto con

    ==c[0]
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    e se c fosse un semplice char?
    steelass

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Allora andrebbe bene ==c .. ma non è un semplice char nel tuo codice ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    comunque anche come hai scritto te, non funziona!
    steelass

  6. #6
    codice:
    #include<stdio.h>
    #include<math.h>
    #include<string.h>
    #define N 100
    main()
    {
    char c;
    char vett[N][21], copia[N][21];
    int dim;
    int i,k,j;
    int conta;
    
    printf("dimensione:\n");
    scanf("%d", &dim);
    
    printf("immettere i nomi\n\n");
    for(i=0;i<=dim;i++) gets(vett[i]);
    
    printf("carattere da confrontare\n\n");
    scanf("%c", &c);
    
    k=0;
    conta=0;
    
    for(i=0;i<dim;i++) {if(vett[i][1]==c) { strcpy(copia[k],vett[i]);
    										k++;
    										conta++;}
    
    }
    
    printf("%d vettori copiati.\n\n",conta);
    non fa niente nemmeno in questo caso! conta rimane sempre a zero anche quando dovrebbe aumentare!
    steelass

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Perché ci sono altri errori ma quello che ti ho scritto è il confronto corretto ...

    Ad esempio, nella for che segue deve essere <dim non <=dim

    for(i=0; i<dim; i++) gets(vett[i]);

    E dopo la prima scanf devi pulire il buffer aggiungendo la linea

    while(getchar()!='\n');


    Fai un esempio di cosa inserisci e cosa cerchi ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    allora: senza il minore o uguale mi prende solo un valore del vettore dis tringhe e non capisco perchè;

    se metto nel vettore davide e ferro e metto come lettera da ricercare d, conta rimane a zero..
    steelass

  9. #9

    Moderazione

    I blocchi di codice vanno inclusi tra tag [co­de] ... [/co­de], altrimenti perdono l'indentazione; qui sistemo io, in futuro ricordatene.
    Amaro C++, il gusto pieno dell'undefined behavior.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Rileggi la mia risposta precedente e aggiungi la while in neretto ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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.