PDA

Visualizza la versione completa : [C] Programma con array funziona, con stringhe no


gabama
24-12-2008, 01:48
Buongiorno a tutti,sono un nuovo iscritto e vorrei chiedere un consiglio per quanto riguarda array e stringhe in c.
Ho costruito questo programmino con array e sembra funzionare,ma uno analogo con le stringhe no,dove sbaglio?
---ARRAY---
#include<stdio.h>
#define N 5
main(){
int a[N];
int i=0;
printf("\n INSERIMENTO DATI ARRAY ");
for(i=0;i<N;i++){
printf("\n Inserisci elemento array %d ",i);
scanf("%d",&a[i]);}
printf("\n INSERIMENTO PARAMETRI ");
int k=0;
printf("\n Inserisci minimo ");
scanf("%d",&k);
printf("\n DATI ARRAY CHE SODDISFANO RICERCA");
int somma=0;
for(i=0;i<N;i++){
if (a[i]==k)
somma=somma+1;}

if( somma == 0 ){
printf("\n Il numero %d non e' presente nell' array\n",k) ;}
else{
if( somma==1 ){
printf("\n Il numero %d ricorre %d volta\n",k,somma);}
else{
printf("\n Il numero %d ricorre %d volte\n",k,somma);}}}
---STRINGA---
#include<stdio.h>
#define N 20
main(){
char str[N];
printf("Inserisci scringa\n");
scanf("%s",&str);
printf("\n La stringa inserita e' %s\n",str);
int i=0;
for(i=0;str[i]!='\0';i++);
printf("\n La stringa inserita e' lunga %d\n",i);
char ric[]='c';
int somma=0;
for(i=0;str[i] != '\0' ;i++)
if (str[i]=='c');

if(str[i]=='\0') printf("\n la Lettera %s e' contenuta nella stringa\n",ric);
else printf("\n NO\n");
}

Pacio88
24-12-2008, 02:13
Ti consiglirei di postare la prossima volta il tuo codice utilizzando i tag CODE.
Spiegati meglio quando dici che non funziona, riesci almeno a compilarlo?

gabama
24-12-2008, 02:20
Si,lo compilo,ma non esegue quello che dovrebbe,o meglio,non da un ricoltato corretto

Pacio88
24-12-2008, 02:27
Ti faccio presente qualche "errore" notato a colpo d'occhio...


#include<stdio.h>
#define N 20

int main(){
char str[N];

printf("Inserisci scringa\n");
scanf("%s",&str);
printf("\n La stringa inserita e' %s\n",str);

int i=0;
for(i=0;str[i]!='\0';i++);
printf("\n La stringa inserita e' lunga %d\n",i);

char ric[]='c'; //Dichiarazione non giusta
int somma=0; //Non la usi mai questa variabile

for(i=0;str[i] != '\0' ;i++)
if (str[i]=='c');

if(str[i]=='\0')
printf("\n la Lettera %s e' contenuta nella stringa\n",ric);
else
printf("\n NO\n");
}

Vedendo questi errori non capisco come possa compilarti questo codice. Un altra cosa che non capisco, e chiedo conferma dagli esperti è per quanto riguarda la dichiarazione delle variabili, se non ricordo male nel c le variabili devono essere dichiarate all'inizio del main, no?

gabama
24-12-2008, 11:32
l' int nel main deve essere rimasto durante copia e incolla,nel sorgente non c'è.Come faccio però a risolvere gli altri due?
Grazie e Auguri a tutti

Pacio88
24-12-2008, 19:24
Come faccio però a risolvere gli altri due?
Se consideriamo che quelle variabili non le usi mai è sufficente toglierle. Per quanto riguarda la prima variabile(char ric) l'errore è che lo dichiari come un array di tipo char senza specificare quanto deve essere lungo. Infatti tu scrivi:

char ric[];
quando dovrebbe essere in questa forma:

char ric[...un valore intero...]

gabama
24-12-2008, 19:36
Io ti ringrazio Pacio per il consiglio,ma se non ti dispiace posta il codice corretto ,magari copiando il mio e aggiustando quello che non ti sembra giusto , così non ti devo più disturbare e magari vedo dove sbaglio.....
Grazie in anticipo

Pacio88
24-12-2008, 20:09
Se non sbaglio tu vuoi un programma che stampi la lunghezza di una parola inserita e se la lettera c è compresa nella parola...vero?
Te lo chiedo perchè trovo un po' confuso il tuo codice e faccio molto prima a scriverti un programma che svolge questo che correggere il tuo. Oltretutto potrai consultarlo come esempio per capire.

Pacio88
24-12-2008, 20:32
Questo dovrebbe andare anche se non l'ho provato:

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

int const N = 20;

int main(){
char str[N];
int i;
int es=0;


printf("Inserisci una parola(max 20 lettere): ");
scanf("%s", &str);
printf("La parola inserita e': %s.\n", str);

for(i=0; str[i]!='\0'; i++);
printf("La parola inserita e' lunga: %d caratteri.\n", i);

//controllo se la parola inserita constiene il carattere c
for(i=0; str[i]!='\0'; i++)
{
if(str[i]=='c')
es=1;
}
if(es==0)
printf("La parola inserita non contiene il carattere c.\n");
else
printf("La parola inserita contiene il carattere c.\n");

system("pause");
return 0;
}

gabama
24-12-2008, 20:33
si,vorrei scrivere un programma che data una stringa dica se una lettera (magari inserita dall ' utente) è presente nella stringa iniziale,e al limite conti quante volte è contenuta.....
Grazie mille

Loading