Consenso all'uso dei cookies

SITO1 -- SITO2 -- Forum2 -- CercaGlobale -- Informativa su Cookie e Privacy

Questo Forum1 è in sola lettura -- Usa il Forum2


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
programma in c
#1
Chi sa risolver il seguente programma?

Creare un programma che legga una stringa da tastiera composta da più parole con max 100 caratteri.
contare il numero di parole
contare il numeri di caratteri corrispondenti ad un carattere inserito da tastiera
visualizzare una parola generica presente nella stringa chiedendo il numero d'ordine della stessa.
Per esempio se la stringa è: Oggi non piove

carattere inserito: n
Parola da scrivere la 2
il risultato deve essere:
numero parole:3
caratteri n presenti:2
la parola 2 è: non

aiutatemi!!!
Cita messaggio
#2
Sposto nella Sezione del Forum specificamente dedicata agli Script. Così, potrai più facilmente avere risposte.
[Immagine: http://www.pic4ever.com/images/2mpe5id.gif]Un poeta può sopravvivere a tutto tranne che ad un errore di stampa.(Andy Wahrol)
Cita messaggio
#3
(13-12-2012, 19:08 )monsee Ha scritto: Sposto nella Sezione del Forum specificamente dedicata agli Script. Così, potrai più facilmente avere risposte.

grazie
Cita messaggio
#4
@pia
per caso stai iniziando ad imparare a programmare?
se è così non ti facciamo un favore a darti la soluzione, devi sforzarti di farlo da sola/solo.
Pensaci un attimo: per risolvere ti basta qualche array...
Il mio blog: http://zerozerocent.blogspot.it/
Legge di Murphy: SE QUALCOSA PUO' ANDAR MALE, LO FARA'
Cita messaggio
#5
io ho fatto così, ma mi manca l'ultimo punto...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
char s[150],c;
int i,j,n,parole;
printf("Inserisci una stringa (max 100 caratteri): ");
gets(s); //legge la stringa da tastiera
i,j=0;
parole=0;
if(strlen(s)>100){
printf("La stringa ha lunghezza maggiore di 100 caratteri!! ");}
else{
while(i<strlen(s)){
if (s[i]!=' '){ .
if(s[i+1]==' ' || i==strlen(s)-1){
parole=parole+1;
}
}
i=i+1;
}
printf("La stringa e' composta da %d parole\n", parole);
}
printf("Inserisci una lettera a tuo piacere: ");
scanf("%c",&c);
for(i=0;s[i]!='\0';i++)
{ if(s[i]==c)
{ j=j+1;
}
}
printf("Le occorrenze del carattere %c, nella stringa '%s' sono %d.\n",c,s,j);
printf("Inserisci un numero :");
scanf("%d",&n);
if(n>parole || n<0)
{ printf("Il numero non e' corretto, ripeti la scelta: ",n);
scanf("%d",&n);
} else
{ printf("La parola numero %d e'\n",n);






system ("pause");
return(0);
}
Cita messaggio
#6
Orsù, ragazzi, è Natale!
Se qualcuno è in grado di darle una mano, per favore, lo faccia... A titolo di incoraggiamento.
Un incoraggiamento ricevuto al momento giusto può cambiar per davvero (e in meglio) le cose, se poi ci si impegna.
[Immagine: http://www.pic4ever.com/images/2mpe5id.gif]Un poeta può sopravvivere a tutto tranne che ad un errore di stampa.(Andy Wahrol)
Cita messaggio
#7
Se fosse python, php o vb più che volentieri. Il C purtroppo non è il mio forte. :-(

posta in questo forum:
http://hackerforum.globalfreeforum.com/
qui sono persone collaborative e ti danno la risposta in un attimo, ma prima devi registrarti, presentarti ed aspettare l'abilitazione e può passare qualche giorno.
a dieci anni il mondo è fantasia, a vent'anni possibilità, a trenta speranza. A quaranta è riflessione, a cinquanta... vi saprò dire.
Cita messaggio
#8
(13-12-2012, 21:35 )Dead Ha scritto: Se fosse python, php o vb più che volentieri. Il C purtroppo non è il mio forte. :-(

posta in questo forum:
http://hackerforum.globalfreeforum.com/
qui sono persone collaborative e ti danno la risposta in un attimo, ma prima devi registrarti, presentarti ed aspettare l'abilitazione e può passare qualche giorno.

grazie comunque Smile
Cita messaggio
#9
Premetto che sono tutt'altro che un esperto. Ti do solo qualche indicazione.

Come fai a mettere una stringa di 200 caratteri in un array che ne può contenere al massimo 150? Semplicemente non puoi farlo. A te serve una stringa di 100 caratteri ma ne hai utilizzati 150 forse proprio per arginare quest'errore, ciò ti protegge se l'utente inserisce pochi caratteri in più di 100, metti il caso che però l'utente inserisca 300 caratteri, cosa faresti? Devi controllare che la stringa che inserisci abbia un numero di caratteri minore o uguale al limite dell'array. Con gets() non puoi farlo, usa fgets(), con quest' ultima funzione dovresti essere in grado di indicare il numero massimo di caratteri da immagazzinare nell'array. Questo è il prototipo di fgets():

Codice:
char *fgets(char *s, int size, FILE *stream);

Sostituisci quella gets() che hai usato con questo:

Codice:
fgets(s,101,stdin);

Dopo la prima parentesi indichi la stringa in cui vuoi mettere l'input che andrai a ricevere. Il 101 corrisponde al numero di caratteri che vuoi leggere più 1. Fgets legge al massimo il numero di caratteri indicato (101) meno 1, quindi 100 Smile "stdin" vuol dire che vuoi leggere l'input dallo standard input, cioè la tastiera.

Come avrai capito C rispetto ad altri linguaggi non protegge il programmatore da questi errori, dev'essere quest'ultimo a "badare a sé stesso"

Per quanto riguarda la soluzione al tuo problema cito BAT. Impegnati vedrai che ne verrai a capo e di certo ti sentirai più gratificato rispetto a se ti fornissimo noi la soluzione Wink

Ci sono altre cose che io avrei fatto diversamente nel programma...
Sono un principiante con tanta voglia di imparare.

[Immagine: http://t3.gstatic.com/images?q=tbn:ANd9G...xV6aKxqMCQ]
Cita messaggio


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)