Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31

    [C] conteggio di occorrenze di una stringa

    codice:
    #include<stdio.h>
    
    #include<string.h>
    
    
    
    
    main()
    {
    int i,j,conta,temp;
    char stringa[21] ,cerca[21];
    
    
    printf("Immetti stringa \n");
    do
    {
    conta=0;
    i++;
    scanf("%c",&stringa[i]);
    }
    while ((stringa[i]!='.')&&(i<21));
    
    
    printf("Immetti parola da cercare nella stringa \n");
    
    
    do
    {
    j++;
    scanf("%c",&cerca[j]);
    }
    while ((cerca[j]!='\n')&&(j<21));
    
    
    
    
    j=0;
    for (i=0;i<strlen(stringa);i++)
    {
    i=temp;
    if(stringa[i]==cerca[j])
    {
    i++;
    j++;
    if(stringa[i]==cerca[strlen(cerca)])
    {conta++;
    printf("ci sono %d volte la parola richesta",conta);
    }
    }
    
    
    else
    {
    i=temp;
    j=0;
    }
    
    
    
    
    
    
    system("Pause");
    }
    }
    Ultima modifica di gerry94; 25-01-2014 a 12:19

  2. #2
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    Ciao

    Il titolo non è conforme al regolamento , è previsto che venga indicato il linguaggio .

    Se il tuo codice fa quello che dovrebbe , si può considerare una soluzione , ma non ottimale .

    Il linguaggio C è minimalista , ma comunque consente di acquisire un intera stringa senza bisogno di leggere un carattere alla volta

    Io avrei affrontato il problema in un altro modo.

    Acquisendo le due stringhe con fgets()

    In un ciclo for scorrere la stringa dove cercare , quando trovo il carattere iniziale della stringa cercata

    farei una strncmp() se restituisce zero , hai trovato un occorrenza e quindi incrementi un contatore .
    Tecnologia

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2014
    Messaggi
    31
    e che differenza c'è tra acquisire la stringa come un array e il comando fgets()

  4. #4
    Utente di HTML.it L'avatar di torn24
    Registrato dal
    Aug 2008
    Messaggi
    551

    ciao

    codice:
    do
    {
    conta=0;
    i++;
    scanf("%c",&stringa[i]);
    }
    while((stringa[i]!='.')&&(i<21));
    
    =======================================
    
    fgets(stringa,40,stdin);
    
    
    Le stringhe in C sono sempre array di char
    la differenza è come quella di pagare lo stesso caffè 7 euro invece che 1 euro .
    Tecnologia

  5. #5
    Quote Originariamente inviata da torn24 Visualizza il messaggio
    Il titolo non è conforme al regolamento , è previsto che venga indicato il linguaggio .
    Oltre a quello, di solito ci si aspetta che i titoli siano un pelino più sintetici... ora sistemo io.
    la differenza è come quella di pagare lo stesso caffè 7 euro invece che 1 euro .
    Amaro C++, il gusto pieno dell'undefined behavior.

Tag per questa discussione

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.