View Full Version : [C] calcolo caratteri
Ciao a tutti ! Per programmazione devo scrivere un programma che conti i caratteri e le frequenze con cui vengono scritti !
Io ho trovato un programma simile in c++ e l'ho modificato cosi da contare i caratteri ( maiuscole e minuscole sono uguali ) !
Ora io ho scritto un programma in c++ ma lo devo convertire in c ! come faccio ? Ho provato ma non ci riesco !:(
CiauZ
cout -> printf
cin -> scanf
cout -> printf
cin -> scanf
Tutto il resto lo lascio intatto ?
Poi ho provato con scanf ! Ma non mi funzionava ... io ho fatto scanf("%d", dato );
CiauZ
Tutto il resto lo lascio intatto ?
Poi ho provato con scanf ! Ma non mi funzionava ... io ho fatto scanf("%d", dato );
CiauZ
scanf("%c", dato);
%d legge un intero, %c un carattere.
quel programma di c++ ha solo l'utilizzo della libreria iostream.
p.s. è possibile ottimizzare un poco il programma magari usando un vettore di int per memorizzare le ripetizioni.
trallallero
16-02-2007, 12:52
scusa ma quando vedo cose del genere mi viene la pelle d'oca :rolleyes:
Non é piú semplice cosí ?
#include <stdio.h>
#include <ctype.h>
int main()
{
int Alfabeto[32];
char c;
memset(Alfabeto, 0, sizeof(Alfabeto));
while ( c = toupper(getchar()) )
{
if (c == '\n')
break;
if ( !isalpha(c) )
continue;
Alfabeto[c-'A']++;
}
for( c = 'A'; c <= 'Z'; c++ )
printf( "lettere %c = %i\n", c, Alfabeto[c-'A'] );
return 0;
}
yorkeiser
16-02-2007, 14:10
scusa ma quando vedo cose del genere mi viene la pelle d'oca :rolleyes:
Aaaaaaaaaaaaaaa :eek: :eek: :eek: quoto quoto
P.S. Prima di iniziare a scrivere programmi, sarebbe bene leggere un minimo di teoria prima... ti risparmi tempo e fatica, fidati
trallallero
16-02-2007, 14:15
Aaaaaaaaaaaaaaa :eek: :eek: :eek: quoto quoto
P.S. Prima di iniziare a scrivere programmi, sarebbe bene leggere un minimo di teoria prima... ti risparmi tempo e fatica, fidati
il problema é quando trovi in produzione, al lavoro, programmi di 6000 righe con codice ripetuto fino alla noia, if else, if else, if else, if else, if else, if else, if else, if else, if else, if else ....
poi lo modifichi, gli metti un motorino logico e lo riduci a 1000 righe e ti guardano cosí :eek:
:doh:
yorkeiser
16-02-2007, 14:54
il problema é quando trovi in produzione, al lavoro, programmi di 6000 righe con codice ripetuto fino alla noia, if else, if else, if else, if else, if else, if else, if else, if else, if else, if else ....
poi lo modifichi, gli metti un motorino logico e lo riduci a 1000 righe e ti guardano cosí :eek:
:doh:
Come ti capisco, come ti capisco :muro: Attualmente a lavoro mi tocca mettere mano su un robone che sta in piedi dal '95 (tra l'altro in VB) e gestisce TUTTO il back-end del cliente. Ora, oltre a rabbrividire per l'architettura (per fortuna che almeno c'è Oracle sotto), immagina quante diramazioni if/then sono state inserite negli ultimi 12 anni... per fare un giro di debug mediamente impiego un quarto d'ora, tutto questo per cercare magari un punto in cui il codice passa e finalmente poter inserire la stupida righina VB. Il delirio. Ma, aggiungo, col cazzo che gli rifaccio un motore decisionale: per quanto mi riguarda, merda è e merda rimarrà :Prrr: :Prrr:
Aaaaaaaaaaaaaaa :eek: :eek: :eek: quoto quoto
P.S. Prima di iniziare a scrivere programmi, sarebbe bene leggere un minimo di teoria prima... ti risparmi tempo e fatica, fidati
Grazie trallallero, ma il programma non mi funziona :muro: !
Questo programma lo devo fare per l'uni ( e per di piu per domani :doh: ), io mi son letto qualcosa sul c ma sono ancora abbastanza niubbo ma col tempo spero di diventare bravo come voi ! :)
ciauZ
Ho risolto, mancava un getchar(); alla fine !
Come faccio a far calcolare la frequenza con cui vengono imessi i caratteri e trovare la parola piu lunga in un testo ???
CiauZ
trallallero
16-02-2007, 20:50
Questo programma lo devo fare per l'uni ( e per di piu per domani :doh: ), io mi son letto qualcosa sul c ma sono ancora abbastanza niubbo ma col tempo spero di diventare bravo come voi ! :)
infatti nota che i rimproveri di prima erano rivolti a chi già lavora col C e invece fa solo gettate di codice. Prendile come una lezione ;)
Ho risolto, mancava un getchar(); alla fine !
io lavoro su Unix quindi tutto con shell che non spariscono, come su Windows, se non metti un getchar :D
e ti prego non usare la system("PAUSE"); :stordita:
Come faccio a far calcolare la frequenza con cui vengono imessi i caratteri e trovare la parola piu lunga in un testo ???
per la frequenza basta un calcolo matematico, hai l'array con tutti i numeri delle volte che sono stati digitati.
Trovare la parola piu lunga ... basta contare la distanza tra gli spazi :asd:
Ti do un aiuto (per come la immagino io):
c = strchr(stringa, ' ')
ti cerca ' ' dentro stringa e, se lo trova, ti ritorna il puntatore al primo trovato.
Altrimenti torna null.
Ciao :)
infatti nota che i rimproveri di prima erano rivolti a chi già lavora col C e invece fa solo gettate di codice. Prendile come una lezione ;)
io lavoro su Unix quindi tutto con shell che non spariscono, come su Windows, se non metti un getchar :D
e ti prego non usare la system("PAUSE"); :stordita:
per la frequenza basta un calcolo matematico, hai l'array con tutti i numeri delle volte che sono stati digitati.
Trovare la parola piu lunga ... basta contare la distanza tra gli spazi :asd:
Ti do un aiuto (per come la immagino io):
c = strchr(stringa, ' ')
ti cerca ' ' dentro stringa e, se lo trova, ti ritorna il puntatore al primo trovato.
Altrimenti torna null.
Ciao :)
Grazie 1000!
Cmq non sono riuscito a far niente :muro: !
CiauZ
trallallero
17-02-2007, 15:39
Grazie 1000!
Cmq non sono riuscito a far niente :muro: !
CiauZ
non è semplice per chi ha appena iniziato, lo capisco.
E non è neanche semplice spiegarlo mettendosi nei panni di chi non l'ha mai fatto.
Ma a casa non ho molto tempo ... se puoi aspettare fino a lunedi mattina :D
trallallero
19-02-2007, 10:46
Allora, a me non piace usare strtok ma all'inizio non si puó mettersi a giocherellare coi puntatori quindi ti scrivo questo esempio per individuare la parola piú lunga:
#include <stdio.h>
#include <string.h>
int main()
{
char frase [ ] = "ciao pluto paorlamoltolunga boo",
parola[128] = "\0"; /* AZZERATA PER LA PRIMA strlen */
char *c = frase; /* PUNTATORE A frase PER SCORRERE L'ARRAY */
while ( c = strtok( c, " " ) ) /* CERCA UNA PAROLA TRA SPAZI */
{
if ( strlen(c) > strlen(parola) ) /* SE LA PAROLA TROVATA É + LUNGA */
strcpy( parola, c ); /* AGGIORNO parola */
c += strlen(c) + 1; /* SPOSTO c ALLA PAROLA SUCCESSIVA */
}
printf( "%s\n", parola );
return 0;
}
ciao
Come ti capisco, come ti capisco :muro: Attualmente a lavoro mi tocca mettere mano su un robone che sta in piedi dal '95 (tra l'altro in VB) e gestisce TUTTO il back-end del cliente. Ora, oltre a rabbrividire per l'architettura (per fortuna che almeno c'è Oracle sotto), immagina quante diramazioni if/then sono state inserite negli ultimi 12 anni... per fare un giro di debug mediamente impiego un quarto d'ora, tutto questo per cercare magari un punto in cui il codice passa e finalmente poter inserire la stupida righina VB. Il delirio. Ma, aggiungo, col cazzo che gli rifaccio un motore decisionale: per quanto mi riguarda, merda è e merda rimarrà :Prrr: :Prrr: sto per dare di stomaco :| :| :| :|
prego Iddio affinché non getti simili sventure su di me quando lavorerò :| :ave:
yorkeiser
20-02-2007, 08:24
sto per dare di stomaco :| :| :| :|
prego Iddio affinché non getti simili sventure su di me quando lavorerò :| :ave:
Caro mio, se entri nel campo vedrai cose che voi umani non avete mai visto...
E' un'africa allo stato puro, purtroppo ci sono stati e ci sono tuttora (anzi, forse ancor più di prima) TANTI incompetenti che lavorano nel ramo, mentre magari ci sono persone brave e con voglia di fare che faticano a trovare anche un contrattino a tempo determinato.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.