Ho scritto un programma che dovrebbe simulare il famoso gioco "Paroliamo". In questo programma vengono estratte 10 lettere, 4 vocali e 6 consonanti, e due giocatori devono inserire 2 parole (di massimo 10 lettere appunto). Le parole devono essere valide da 2 punti di vista: per prima cosa devono essere composte dalle lettere fornite; per seconda cosa devono appartenere al vocabolario. Ho messo nella stessa cartella del file .c un file .h dove includo un vocabolario, contenente tutte (o comunque quasi) le parole. Il problema però arriva quando confronto le parole inserite in input con quelle contenute nel vocabolario. Sapreste aiutarmi? Devo consegnare il lavoro domani, e non so proprio come fare.
PS: So che non è ottimo dal punto di vista dell'efficienza, ma l'importante è che funzioni.
Gli errori che mi da sono questi:
In function 'main':
[Warning] passing argument 2 of 'strcmp' from incompatible pointer type
In file included from C:\Desktop\PROGETTO INFORMATICA\PROGETTO INFORMATICA.c
[Note] expected 'const char *' but argument is of type 'const char **'
[Warning] passing argument 2 of 'strcmp' from incompatible pointer type
In file included from C:\Desktop\PROGETTO INFORMATICA\PROGETTO INFORMATICA.c
[Note] expected 'const char *' but argument is of type 'const char **'
[#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
#include<time.h>
#include<stdbool.h>
#include "vocabolario.h"
int isvowel(char c)
{
return c =='a' || c=='i' || c=='e' || c=='o' || c=='u';
}
int isconsonant(char c)
{
return (isalpha (c)) && (0x7df7ddd>>(c&0x1f))&1;
}
int main()
{
srand(time(NULL));
int i=0, j=0, l=0, m=10, l1=0, l2=0;
unsigned k=0;
char str[100+1];
char strcopy[100+1];
char str1[100+1];
char str2[100+1];
char x;
bool o=true, p=true, q=false, r=false;
// ------------------------------------------------------------------------------- ESTRAZIONE LETTERE -------------------
for(i=0; i<4; i++)
{
x=(rand()%(26)+1)-1+'a';
if(isvowel(x))
{
str[i]=x;
printf("%c ",str[i]);
}
else if (isconsonant(x))
{
i--;
}
x=0;
}
for(i=4; i<10; i++)
{
x=(rand()%(26)+1)-1+'a';
if(isconsonant(x))
{
str[i]=x;
printf("%c ",str[i]);
}
else if (isvowel(x))
{
i--;
}
x=0;
}
printf("\n");
// ------------------------------------------------------------------------------- VERIFICA VALIDITÀ PRIMA STRINGA ----------
for(i=0; i<10; i++)
{
strcopy[i]=str[i];
}
printf("Parola giocatore 1: \n");
fgets(str1, sizeof(str1), stdin);
i=0; m=10; l=0;
l1=strlen(str1)-1;
for(k=0; strlen(str1)-1>k; k++)
{
j=k;
if(str1[k]!=strcopy[i])
{
l++;
j--;
}
else if(str1[k]==strcopy[i])
{
for(i=i+1; i<m; ++i)
{
strcopy[i-1]=strcopy[i];
}
l=0;
m--;
}
if(l>m)
{
printf("La parola contiene lettere non disponibili \n");
o=false;
break;
}
k=j;
i=l;
}
// ------------------------------------------------------------------------------- VERIFICA VALIDITÀ SECONDA STRINGA ---------
for(i=0; i<10; i++)
{
strcopy[i]=str[i];
}
printf("Parola giocatore 2: \n");
fgets(str2, sizeof(str2), stdin);
i=0; j=0; k=0; l=0, m=10;
l2=strlen(str2)-1;
for(k=0; strlen(str2)-1>k; k++)
{
j=k;
if(str2[k]!=strcopy[i])
{
l++;
j--;
}
else if(str2[k]==strcopy[i])
{
for(i=i+1; i<m; ++i)
{
strcopy[i-1]=strcopy[i];
}
l=0;
m--;
}
if(l>m)
{
printf("La parola contiene lettere non disponibili \n");
p=false;
break;
}
k=j;
i=l;
}
printf("\n");
// ------------------------------------------------------------------------------- VERIFICA ESISTENZA PRIMA STRINGA -----------
if(strcmp(str1, Vocabolario) && o==true)
{
printf("La parola del giocatore 1 e' valida ed e' lunga %i lettere \n\n", l1);
q=true;
}
else
{
printf("La parola del giocatore 1 e' sbagliata \n\n");
}
// ------------------------------------------------------------------------------- VERIFICA ESISTENZA SECONDA STRINGA ---------
if(strcmp(str1, Vocabolario) && p==true)
{
printf("La parola del giocatore 2 e' valida ed e' lunga %i lettere \n\n", l2);
r=true;
}
else
{
printf("La parola del giocatore 2 e' sbagliata \n\n");
}
// ------------------------------------------------------------------------------- DETERMINAZIONE VITTORIA ---------
if (o==true && p==true && q==true && r==true)
{
if(l1>l2)
{
printf("Il giocatore 1 vince");
}
else if(l1<l2)
{
printf("Il giocatore 2 vince");
}
else
{
printf("Le due parole hanno la stessa lunghezza. Parita'!");
}
}
else if ((o==true && q==true) && (p==false || r==false))
{
printf("La parola del giocatore 2 non e' valida. Vince il giocatore 1!");
}
else if ((p==true && r==true) && (o==false || q==false))
{
printf("La parola del giocatore 1 non e' valida. Vince il giocatore 1!");
}
return 0;
}]