Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 04-02-2004, 02:25   #1
angelica
Member
 
Iscritto dal: Nov 2003
Messaggi: 42
[C] conteggio lettere...non standard!

mi faccio risentire dopo lungo tempo!

allora, il programmino stupido in questione conta le lettere contenute in un file di testo, e mette il risultato in un altro.

codice:

Codice:
#include <stdio.h> 
#include <string.h>

main() 

{
 int letto, i;
 int conta[59];
 FILE *pf;

 for (i = 0; i < 59; i++)
     conta[i] = 0;

 pf=fopen("origine.txt","r");
 do
 {
    letto = getc(pf);
    switch (letto)
    {
     case 'a': conta[0]++; break;
     case 'b': conta[1]++; break;
     case 'c': conta[2]++; break;
     case 'd': conta[3]++; break;
     case 'e': conta[4]++; break;
     case 'f': conta[5]++; break;
     case 'g': conta[6]++; break;
     case 'h': conta[7]++; break;
     case 'i': conta[8]++; break;
     case 'j': conta[9]++; break;
     case 'k': conta[10]++; break;
     case 'l': conta[11]++; break;
     case 'm': conta[12]++; break;
     case 'n': conta[13]++; break;
     case 'o': conta[14]++; break;
     case 'p': conta[15]++; break;
     case 'q': conta[16]++; break;
     case 'r': conta[17]++; break;
     case 's': conta[18]++; break;
     case 't': conta[19]++; break;
     case 'u': conta[20]++; break;
     case 'v': conta[21]++; break;
     case 'w': conta[22]++; break;
     case 'x': conta[23]++; break;
     case 'y': conta[24]++; break;
     case 'z': conta[25]++; break;
     case 'A': conta[26]++; break;
     case 'B': conta[27]++; break;
     case 'C': conta[28]++; break;
     case 'D': conta[29]++; break;
     case 'E': conta[30]++; break;
     case 'F': conta[31]++; break;
     case 'G': conta[32]++; break;
     case 'H': conta[33]++; break;
     case 'I': conta[34]++; break;
     case 'J': conta[35]++; break;
     case 'K': conta[36]++; break;
     case 'L': conta[37]++; break;
     case 'M': conta[38]++; break;
     case 'N': conta[39]++; break;
     case 'O': conta[40]++; break;
     case 'P': conta[41]++; break;
     case 'Q': conta[42]++; break;
     case 'R': conta[43]++; break;
     case 'S': conta[44]++; break;
     case 'T': conta[45]++; break;
     case 'U': conta[46]++; break;
     case 'V': conta[47]++; break;
     case 'W': conta[48]++; break;
     case 'X': conta[49]++; break;
     case 'Y': conta[50]++; break;
     case 'Z': conta[51]++; break;
     case 'à': conta[52]++; break;
     case 'è': conta[53]++; break;
     case 'é': conta[54]++; break;
     case 'ì': conta[55]++; break;
     case 'ò': conta[56]++; break;
     case 'ó': conta[57]++; break;
     case 'ù': conta[58]++; break;
     default: break;
    }
 }
 while(letto != EOF);
 fclose(pf);
 pf=fopen("conteggio.txt","w");
 fprintf(pf, "a=%4d     A=%4d     à=%4d\n", conta[0], conta[26], conta[52]);
 fprintf(pf, "b=%4d     B=%4d\n", conta[1], conta[27]);
 fprintf(pf, "c=%4d     C=%4d\n", conta[2], conta[28]);
 fprintf(pf, "d=%4d     D=%4d\n", conta[3], conta[29]);
 fprintf(pf, "e=%4d     E=%4d     è=%4d     é=%4d\n", conta[4], conta[30], conta[53], conta[

54]);
 fprintf(pf, "f=%4d     F=%4d\n", conta[5], conta[31]);
 fprintf(pf, "g=%4d     G=%4d\n", conta[6], conta[32]);
 fprintf(pf, "h=%4d     H=%4d\n", conta[7], conta[33]);
 fprintf(pf, "i=%4d     I=%4d     ì=%4d\n", conta[8], conta[34], conta[55]);
 fprintf(pf, "j=%4d     J=%4d\n", conta[9], conta[35]);
 fprintf(pf, "k=%4d     K=%4d\n", conta[10], conta[36]);
 fprintf(pf, "l=%4d     L=%4d\n", conta[11], conta[37]);
 fprintf(pf, "m=%4d     M=%4d\n", conta[12], conta[38]);
 fprintf(pf, "n=%4d     N=%4d\n", conta[13], conta[39]);
 fprintf(pf, "o=%4d     O=%4d     ò=%4d     ó=%4d\n", conta[14], conta[40], conta[56], conta

[57]);
 fprintf(pf, "p=%4d     P=%4d\n", conta[15], conta[41]);
 fprintf(pf, "q=%4d     Q=%4d\n", conta[16], conta[42]);
 fprintf(pf, "r=%4d     R=%4d\n", conta[17], conta[43]);
 fprintf(pf, "s=%4d     S=%4d\n", conta[18], conta[44]);
 fprintf(pf, "t=%4d     T=%4d\n", conta[19], conta[45]);
 fprintf(pf, "u=%4d     U=%4d     ù=%4d\n", conta[20], conta[46], conta[58]);
 fprintf(pf, "v=%4d     V=%4d\n", conta[21], conta[47]);
 fprintf(pf, "w=%4d     W=%4d\n", conta[22], conta[48]);
 fprintf(pf, "x=%4d     X=%4d\n", conta[23], conta[49]);
 fprintf(pf, "y=%4d     Y=%4d\n", conta[24], conta[50]);
 fprintf(pf, "z=%4d     Z=%4d\n", conta[25], conta[51]);
 fclose(pf);
}
domande:
1) non legge i caratteri accentati...come faccio a farglielo fare?
2) come faccio, nel caso volessi far inserire all'utente il nome del file col testo da analizzare? (che nel prog sopra è tassativamente origine.txt
Gli chiedo il nome del file, ok, e magari lo registro con un gets(nome)...ma come faccio a fargli mettere tale stringa in
pf=fopen("???","r");

un'altra cosa...il codice è noiosissimo, vale a dire, tutte quelle righe perché non posso usare solo un array numerico, devo mettere a=, b=, ecc ecc...
non c'è proprio altro modo?

grazie dei consigli!!!
__________________
ANGI
angelica è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 02:50   #2
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
IMHO:
Fai un vettore di 256 interi...c'è un minimo di spreco, ma non è importante ed il tutto si riduce a:
Codice:
do
 {
    letto = getc(pf);
    conta[letto]++;
 }
 while(letto != EOF);
....
fprintf(pf, "a=%4d     A=%4d     à=%4d\n", conta['a'], conta['A'], conta['à']);
Prova un po' se così funziona...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 03:42   #3
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
E volendo si possono ridurre anche le fprintf (anche se risulterebbe un po' complesso da leggere)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 03:45   #4
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
char nomefile[256];

printf("Inserisci il nome del file: ");
scanf("%s", nomefile);
....
pf=fopen(nomefile,"r");
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 08:07   #5
verloc
Senior Member
 
L'Avatar di verloc
 
Iscritto dal: Jan 2000
Messaggi: 551
switch lungo:

considera che i char sono (piccoli?) interi,il loro valore numerico segue l'ordine alfabetico(prima le maiuscole).
Se a=1 ,b=2 A=... etc (però non mi ricordo da dove partono )

quindi basta un if(char>0 &&char<finealfabeto) faiquellochevuoi();

escludendo tutti i caratteri non stampabili.
Mi ricordo che è il primo esempio del Kernighan & Ritchie

Ultima modifica di verloc : 04-02-2004 alle 08:20.
verloc è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 10:28   #6
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Considera che lei cerca anche i caratteri accentati e che sono intorno a 150 dei codisci ASCII...

Comunque se vuoi risparmiare sul vettore:
Codice:
switch(letto)
{
     case 'à': conta[52]++; break;
     case 'è': conta[53]++; break;
     case 'é': conta[54]++; break;
     case 'ì': conta[55]++; break;
     case 'ò': conta[56]++; break;
     case 'ó': conta[57]++; break;
     case 'ù': conta[58]++; break;
     default:
         if(letto >= 'a' && letto <= 'z')
             conta[letto - 'a']++;
         else if(letto >= 'A' && letto <= 'Z')
             conta[26 + letto - 'A']++;
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 11:40   #7
angelica
Member
 
Iscritto dal: Nov 2003
Messaggi: 42
Quote:
Originariamente inviato da cionci
char nomefile[256];

printf("Inserisci il nome del file: ");
scanf("%s", nomefile);
....
pf=fopen(nomefile,"r");
ci avevo pensato stanotte!
passi il puntatore alla stringa, come da funzione fileopen
__________________
ANGI
angelica è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 11:51   #8
angelica
Member
 
Iscritto dal: Nov 2003
Messaggi: 42
Quote:
Originariamente inviato da cionci
IMHO:
Fai un vettore di 256 interi...c'è un minimo di spreco, ma non è importante ed il tutto si riduce a:
Codice:
do
 {
    letto = getc(pf);
    conta[letto]++;
 }
 while(letto != EOF);
....
fprintf(pf, "a=%4d     A=%4d     à=%4d\n", conta['a'], conta['A'], conta['à']);
Prova un po' se così funziona...
buona idea, grazie! ora provo!
__________________
ANGI

Ultima modifica di angelica : 04-02-2004 alle 15:29.
angelica è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 11:51   #9
verloc
Senior Member
 
L'Avatar di verloc
 
Iscritto dal: Jan 2000
Messaggi: 551
Quote:
Originariamente inviato da cionci
Considera che lei cerca anche i caratteri accentati e che sono intorno a 150 dei codisci ASCII...

Comunque se vuoi risparmiare sul vettore:
Codice:
switch(letto)
{
     case 'à': conta[52]++; break;
     case 'è': conta[53]++; break;
     case 'é': conta[54]++; break;
     case 'ì': conta[55]++; break;
     case 'ò': conta[56]++; break;
     case 'ó': conta[57]++; break;
     case 'ù': conta[58]++; break;
     default:
         if(letto >= 'a' && letto <= 'z')
             conta[letto - 'a']++;
         else if(letto >= 'A' && letto <= 'Z')
             conta[26 + letto - 'A']++;
}
Precisamente quello che intendevo!
verloc è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 15:31   #10
angelica
Member
 
Iscritto dal: Nov 2003
Messaggi: 42
nada...

...purtroppo, neppure la soluzione del primo post di cionci mi legge i caratteri accentati...

(ah, perché vettore proprio a 256 caratteri?)

ad esempio, se nel file di input c'è:
aaaaAAAAAAAAAAAaaAAàààààààààà

in conteggio.txt, alla fine, mi scrive:
a= 6 A= 13 à=2000

ho visto che mette 2000 in barba al numero delle à presenti...
anzi, non è vero...ho provato con questo altro input:
aaaaaaaaaaaaaaaAAAAAAAAAAAAAAAAAAAAAAAa
e mi dà
a= 16 A= 23 à= 52
se poi aggiungo "à" in fondo, resta a 52...
come mai?

...altre idee, ragazzi?
grazie per il supporto!
__________________
ANGI
angelica è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 15:34   #11
a2000
Bannato
 
L'Avatar di a2000
 
Iscritto dal: Jan 2001
Messaggi: 1976
Quote:
Originariamente inviato da verloc
ah poveravvui !

e poi dice "inventare la ruota"

ma vui sit ancora a "inventare la clava" !
a2000 è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 16:41   #12
verloc
Senior Member
 
L'Avatar di verloc
 
Iscritto dal: Jan 2000
Messaggi: 551
i caratteri sono in totale 256: 128+128 estesi.Quindi il vettore ha 256 elementi.
L'unica cosa che potrebbe spiegare il conteggio a cacchio potrebbe essere il vettore non inizializzato ma non dovrebbe essere così(almeno credo ).

Tu che dici cionci?



Ultima modifica di verloc : 04-02-2004 alle 16:43.
verloc è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 17:52   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Codice:
switch((char)letto)
{
     case 'à': conta[52]++; break;
     case 'è': conta[53]++; break;
     case 'é': conta[54]++; break;
     case 'ì': conta[55]++; break;
     case 'ò': conta[56]++; break;
     case 'ó': conta[57]++; break;
     case 'ù': conta[58]++; break;
     default:
         if(letto >= 'a' && letto <= 'z')
             conta[letto - 'a']++;
         else if(letto >= 'A' && letto <= 'Z')
             conta[26 + letto - 'A']++;
}
Così funziona... Il motivo è questo...
getc legge un byte dal file (un vile sempre positivo da 0 a 255)...
'à' è un char (con segno)...i caratteri standard vanno da 0 a 127, mentre quelli estesi da -128 a -1... Essendo le lettere accentate caratteri estesi il valore di 'à' è negativo...
Di conseguenza veniva confrontato un valore positivo con uno negativo...e di conseguenza non c'era mai successo... Forzando letto a char i valori maggiori di 127 vengono convertiti in numeri negativi...di conseguenza il confronto ha successo...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 18:35   #14
verloc
Senior Member
 
L'Avatar di verloc
 
Iscritto dal: Jan 2000
Messaggi: 551
miezzeca m'ero dimenticato che era signed!

verloc è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 18:41   #15
angelica
Member
 
Iscritto dal: Nov 2003
Messaggi: 42
@cionci

grazie!
sei stato gentilissimo (la tua bravura è incredibile)!

ora, ti volevo fare un'altra domanda:

hai scritto
Quote:
E volendo si possono ridurre anche le fprintf (anche se risulterebbe un po' complesso da leggere)...
Ecco, come faresti?
__________________
ANGI
angelica è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 19:19   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Codice:
for(letto = 0; letto<26; ++letto)
{
   fprintf(pf, "%c=%4d     %c=%4d", 'a'+letto, conta[letto], 'A'+letto, conta[26+letto]);
   switch('a'+letto)
   {
       case 'a': fprintf(pf, "     à=%4d\n", conta[52]); break;
       case 'e': fprintf(pf, "     è=%4d     é=%4d\n", conta[53], conta[54]); break;
       case 'i': fprintf(pf, "     ì=%4d\n", conta[55]); break;
       case 'o': fprintf(pf, "     ò=%4d     ó=%4d\n", conta[56], conta[57]); break;
       case 'u': fprintf(pf, "     ù=%4d\n", conta[58]); break;
       default: fprintf(pf, "\n");
   }
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 19:21   #17
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16212
Non per fare l'importuno, ma...

Vi siete ricordati di pulire l'array di 256 char prima di eseguire il ciclo do...while?
Che so, cosette tipo:
Codice:
for (i=0; i<256; i++)
    conta[i]=0;
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 19:25   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ecco un'altra cosa che mi ero scordato di correggere:
Codice:
for (i = 0; i < 59; i++)
     conta = 0;
Ovviamente c'è un errore...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 21:58   #19
angelica
Member
 
Iscritto dal: Nov 2003
Messaggi: 42
grande!!

grazie ancora, cionci!

ora sono proprio poche righe di codice, come piace a me!

ah, per l'inizializzazione dell'array...l'avevo fatta!
__________________
ANGI
angelica è offline   Rispondi citando il messaggio o parte di esso
Old 04-02-2004, 23:02   #20
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Re: grande!!

Quote:
Originariamente inviato da angelica
ah, per l'inizializzazione dell'array...l'avevo fatta!
Nel codice originale c'era un errore (conta = 0...andava messo conta[i] = 0)....
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Il Ryzen 7 9850X3D appare nel catalogo d...
Weekend pre natalizio Amazon, ecco tutte...
Prezzi giù su Oral-B iO: spazzolini elet...
19.000 Pa a un prezzo senza precedenti: ...
Narwal in super offerta su Amazon: robot...
SK hynix e NVIDIA lavorano a un SSD spec...
Roborock in super offerta su Amazon: pre...
Dreame abbassa i prezzi su Amazon: robot...
ECOVACS Deebot torna protagonista su Ama...
Il primo iPhone pieghevole potrebbe esse...
Apple 'apre' iOS alle terze parti anche ...
Cloud sovrano: l'approccio di Broadcom c...
HONOR conferma l'arrivo in Italia di Mag...
La Cina sotto pressione impone maniglie ...
OpenAI integra le app in ChatGPT per tra...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 11:23.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v