Mi servono idee sulla function

di il
30 risposte

30 Risposte - Pagina 2

  • Re: Mi servono idee sulla function

    Cosa è il vettore q? Non mi pare tu abbia compreso ... rileggi il suggerimento di +m2+
  • Re: Mi servono idee sulla function

    Inizia così
    dichiara un vettore di 26 interi,
    e fai un ciclo da 0 a 25 in cui poni i singoli elementi a zero
  • Re: Mi servono idee sulla function

    +m2+ ha scritto:


    è nel thread delle fatture elettroniche
    Perdonami, non riesco a trovarlo.
  • Re: Mi servono idee sulla function

    vuott ha scritto:


    +m2+ ha scritto:


    è nel thread delle fatture elettroniche
    Perdonami, non riesco a trovarlo.
    https://www.iprogrammatori.it/forum-programmazione/programmatori/fatturazione-elettronica-b2b-t34079-360.html#p8605946
  • Re: Mi servono idee sulla function

    +m2+ ha scritto:


    Inizia così
    dichiara un vettore di 26 interi,
    e fai un ciclo da 0 a 25 in cui poni i singoli elementi a zero
    #include <stdio.h>
    #include <stdlib.h>

    #define DIM 80
    int conta (char testo[],int n);
    int main() {

    char testo[DIM];
    char carattere;
    int occorrenze;
    int i;
    /* leggi stringa */
    printf("Inserisci una stringa:\n");
    scanf("%s", testo);
    fgets(testo,DIM,stdin);

    }

    int conta(char testo[],int n)
    {
    int i,max,q[26];
    int occorenza;
    for (i=0;i<26;)
    {
    q=0;
    i++;
    }
    for (i=0;i<26;)
    {
    printf("q[%d]vale:%d",i+1,q);
    }
    }
  • Re: Mi servono idee sulla function

    toni1705 ha scritto:


    +m2+ ha scritto:


    Inizia così
    dichiara un vettore di 26 interi,
    e fai un ciclo da 0 a 25 in cui poni i singoli elementi a zero
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define DIM 80
    int conta (char testo[],int n);
    int main() {
    
        char testo[DIM];
        char carattere;
        int occorrenze;
        int i;
        /* leggi stringa */
        printf("Inserisci una stringa:\n");
        scanf("%s", testo);
        fgets(testo,DIM,stdin);
    
    }
    
    int conta(char testo[],int n)
    {
        int i,max,q[26];
        int occorenza;
        for (i=0;i<26;)
        {
        q[i]=0;
        i++;
        }
        for (i=0;i<26;i++)
        {
        printf("\nq[%d]vale:%d",i+1,q[i]);
        }
    }
    
  • Re: Mi servono idee sulla function

    Normalmente lo "standard" conciso per il C è questo
    
    for (i=0;i<26;i++)
        {
        q[i]=0;
        }
    Comunque OK.
    Adesso, entra in campo la "magia", cioè la codifica ASCII.
    La quale (per le lettere maiuscole) parte da 65 fino a 90
    La vedi qui
    http://www.asciitable.com

    Pertanto, ora, ti serve qualcosa del tipo
    
      per  ogni carattere del vettore in input
        considera il carattere i-esimo, convertilo in maiuscolo (tanto per essere sicuri)
        togli 65 al valore intero del carattere. Se il carattere è una B, ha codice ASCII 66; facendo -65 ottieni 1
        adesso incrementa il contenuto di q[indicetrovatonellarigaprecedente]
    
    Ovviamente è un metodo molto rozzo blablabla, ma per cominciare va bene.
    Prova e poi vediamo
  • Re: Mi servono idee sulla function

    +m2+ ha scritto:


    Normalmente lo "standard" conciso per il C è questo
    
    for (i=0;i<26;i++)
        {
        q[i]=0;
        }
    Comunque OK.
    Adesso, entra in campo la "magia", cioè la codifica ASCII.
    La quale (per le lettere maiuscole) parte da 65 fino a 90
    La vedi qui
    http://www.asciitable.com

    Pertanto, ora, ti serve qualcosa del tipo
    
      per  ogni carattere del vettore in input
        considera il carattere i-esimo, convertilo in maiuscolo (tanto per essere sicuri)
        togli 65 al valore intero del carattere. Se il carattere è una B, ha codice ASCII 66; facendo -65 ottieni 1
        adesso incrementa il contenuto di q[indicetrovatonellarigaprecedente]
    
    Ovviamente è un metodo molto rozzo blablabla, ma per cominciare va bene.
    Prova e poi vediamo
    scusami ma quale esericio stiamo facendo quello del carattere o quello del pangramma
    mi sto confondendo di brutto ahaha
  • Re: Mi servono idee sulla function

    toni1705 ha scritto:


    scusami ma quale esericio stiamo facendo quello del carattere o quello del pangramma
    mi sto confondendo di brutto ahaha
    il primo: determinare il carattere con frequenza massima
    "Devo sviluppare una funzione che mi da con return il carattere più frequente dato un array e il suo size."
  • Re: Mi servono idee sulla function

    +m2+ ha scritto:


    toni1705 ha scritto:


    scusami ma quale esericio stiamo facendo quello del carattere o quello del pangramma
    mi sto confondendo di brutto ahaha
    il primo: determinare il carattere con frequenza massima
    "Devo sviluppare una funzione che mi da con return il carattere più frequente dato un array e il suo size."
    io stavo provando cosi ma ho avuto un blocco mentale.
    comunque la function mi deve dare il carattere più frequente.
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #define DIM 80
    char conta (char s1[],int n);
    int main() {
    
        char s1[DIM];
        char carattere;
        char occorrenze;
        int i;
        /* leggi stringa */
        printf("Inserisci una stringa:\n");
        scanf("%s", s1);
        fgets(s1,DIM,stdin);
    occorrenze=conta(s1,DIM);
     printf("il carattere  usato molte volte \x8A: %c \n", occorrenze);
    }
    char  conta(char s1[],int n)
    {
        int i,max,q[21]={0};
        int indice;
       for(i = 0; s1[i] != 0; i++)
       { q[s1[1]]++; }
       max=q[0];
       indice=0;
       for(i=0;s1[i]!=0;i++)
       {
           if(q[i]>max){
            max=q[i];
           indice=i;}
       }
       return max;
    }
    
    
  • Re: Mi servono idee sulla function

    Porca pupazza! Per gioco (come al solito) ho provato a risolvere questo esercizio e mi è venuto fuori un programma di 189 righe! E tenendo conto solo di maiuscole e minuscole e dei soli accenti gravi/acuti sulle sole vocali, mica di tutti i segni diacritici... Una roba un po' cervellotica e sicuramente inefficiente, ma funziona.

    Sarà anche semplice ma non mi è parso proprio elementare (per il mio livello).

    Ho seguito quattro fasi, distinte in quattro funzioni:

    1) contare le quantità di ciascuno dei 256 caratteri ASCII (set esteso)
    2) contare quanti di quei caratteri sono lettere (tenendo conto che 'e', 'E' 'è' e 'é' sono sempre la stessa lettera)
    3) rilevare la frequenza della lettera più ricorrente; a questo punto m'è venuto in mente che una certa frequenza, sempre la stessa, può anche riguardare più lettere contemporaneamente (mettiamo sia 5... potrebbero esserci 5 'F' e 5 'Q', per dire), per cui ho dovuto escogitare un metodo affinché la funzione di "analisi" potesse rendere noto il "fenomeno"
    4) sfuttando il risultato ottenuto in 2), verificare se nel testo sono presenti tutte le lettere

    Aveva ragionissima Oregon: escludere j, k, w, x e y avrebbe reso tutto MOLTO più involuto. Non impossibile, ma involuto.

    P.S. 46 righe, in effetti, se ne sono "andate" perché ho voluto fare in modo che il testo venisse caricato da file, allocando dinamicamente la memoria per contenerlo.
  • Re: Mi servono idee sulla function

    /*dati come parametri di input un array di char
     determina e restituisce come parametro di output il carattere più frequente.*/
    #include <stdio.h>
    #include <string.h>
    char carattere(char testo[],int n );
    
    main()
    {
       char testo[80];
      char parola;
       /* inserire la stringa*/
       printf("inserire il testo:\n");
       fgets(testo,80,stdin);
       /*richiamare la funzione*/
       parola=carattere(testo,80);
       printf("il carattere più usato è:%c",parola);
    }
    char carattere(char testo[],int n )
    {
      unsigned  int occorrenza[26];
      int i,len;
      unsigned max=occorrenza[0];;
      unsigned maxindice=0;
      len=strlen(testo);
    for (i=0;i<26;i++)
        occorrenza[i]=0;
      for(i=0;i<len;i++)
        occorrenza[testo[i]]++;
     for (i=0;i<26;i++)
     {
        if(occorrenza[i]>max)
        {
        max=occorrenza[i];
        maxindice=i;
         }
      }
     return maxindice;
    }
    
    perchè non va?
  • Re: Mi servono idee sulla function

    Ti stai avvicinando ma ci sono ancora dettagli da rifinire
  • Re: Mi servono idee sulla function

    Testo

    quanto può valere secondo te?
  • Re: Mi servono idee sulla function

    oregon ha scritto:


    Testo

    quanto può valere secondo te?

    0?
Devi accedere o registrarti per scrivere nel forum
30 risposte