Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 23
  1. #11
    non riesco a capire cosa sia il "65" nel codice! :berto:

  2. #12
    65 è il valore intero nella tabella ASCII della lettera A (maiuscola)

  3. #13
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da marcusbasic
    per i profani come me... cosa significa normalizzare la stringa?
    Normalizzare la stringa significa convertirla in lettere maiuscole.
    Se la stringa contiene lettere minuscole, infatti, il codice non funzionerebbe.
    In informatica le maiuscole sono diverse dalle minuscole. Mentre a te interessa solo contare le lettere.

    "Sasso"
    A = 1
    O = 1
    S = 3 (anche se il PC interpreterebbe come 1 maiuscola e 2 minuscole)


    @zero85: il copia/incolla fa sempre danni... mi ero dimenticato di ridimensionare l'array


    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

  4. #14
    Originariamente inviato da LeleFT

    @zero85: il copia/incolla fa sempre danni... mi ero dimenticato di ridimensionare l'array


    Ciao.
    Eh succede succede anche a me quasi sempre

  5. #15
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    La "normalizzazione" puo' essere fatta all'interno del ciclo e si puo' evitare la chiamata alla strlen

    codice:
    i=0;
    while(s[i])
        presenze[(s[i++] & 223)-65]++;

  6. #16
    va bhè...l'avevo fatto in 1 minuto...pensandoci poco.

    E poi, cos'è il 223?

  7. #17
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Originariamente inviato da devil89
    va bhè...l'avevo fatto in 1 minuto...pensandoci poco.
    Anch'io ...

    E poi, cos'è il 223?
    Beh, allora non era questione di avere poco tempo ...

    223 (esadecimale DF) e' la costante utilizzata per resettare il bit 5 del byte che contiene un codice ASCII di una lettera in modo da renderla maiuscola ...

  8. #18
    Originariamente inviato da oregon
    Anch'io ...



    Beh, allora non era questione di avere poco tempo ...
    Tu avrai sicuramente più esperienza di me. Che lavoro fai?
    Io sono uno studente; delle volte mi capitano delle distrazioni, e poi volevo dirlo....in merito al codice ascii e a queste normalizzazioni, non ne avevo mai sentito parlare.

  9. #19
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Naturalmente, stavo scherzando ... ho capito che sei uno studente ...

    Io una volta ero dall'altra parte della cattedra, ora non piu', ma sono nel settore ... forse da piu' anni di quanto ne hai tu ...

    P.S. Con questo, festeggio i miei 6000 messaggi ...

  10. #20
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    25

    Re: [c] contare il numero di lettere

    Originariamente inviato da marcusbasic
    Chiedo aiuto a voi programmatori esperti, ho un esercizio in C che non riesco proprio ad impostare.
    Mi viene chiesto di fare un programma che conti il numero di lettere in una stringa... ovvero.....

    se la stringa è "Ciao a tutti"... il programma stampa "C=1" "I=2" "A=2" "T=3" etc.

    come posso cominciare?'? qualcuno ha programmi simili e mi può postare il sorgente?
    Io non sono un programmatore esperto.. ma mi sono appassionato al problema.
    Ecco la mia soluzione:
    codice:
    #include <stdio.h>
    typedef struct listaCaratteri
    {	int volte;
    	char lettera;
    	struct listaCaratteri *suc;
    }	Lc;
    void inserisci(Lc **ptr, char c)
    { Lc *nuovo;
    if (*ptr == NULL || (*ptr)->lettera >= c)
    	{
    	if (*ptr != NULL && (*ptr)->lettera == c)
    	    {
    	   (*ptr)->volte++;
    	   }
    	else
    	   {
    	   nuovo = (Lc *)malloc(sizeof(Lc));
    	   nuovo->volte = 1;
    	   nuovo->lettera = c;
    	   nuovo->suc = *ptr;
    	   *ptr = nuovo;
    	   }
    	return;
    	}
    else	inserisci(&((*ptr)->suc), c);
    }
    void stampaLista(Lc *testa)
    { 
    if (testa == NULL) return;
    else	{ 
    	printf("'%c' -> %d volte \n", testa->lettera, testa->volte);
    	stampaLista(testa->suc); 
    	}
    }
    void cancellaLista(Lc **testa)
    {
    if (*testa == NULL) return;
    else	{
    	Lc *temp;
    	temp = *testa;
    	*testa = (*testa)->suc;
    	free(temp);
    	cancellaLista(&(*testa));
    	}
    }
    
    main()
    {
    Lc *testa=NULL;
    char *stringa = "Ciao a tutti quelli che leggerano questo messaggio";
    while (*stringa != '\0')
    	{
    	inserisci(&testa, *stringa);
    	stringa++;
    	}
    stampaLista(testa);
    cancellaLista(&testa);
    }

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