Salve,
sono nuovo nel forum quindi chiedo scusa in primis se ho sbagliato sezione.
Devo scrivere un programma che cerchi la maggiore e la minore tra una serie di parole. Ho suddiviso il programma in una semplice funzione oltre al main, ma mi da questo errore quando passo l'array di stringhe ala funzione:
small_large_words.c: In function ‘main’:
small_large_words.c:58:16: warning: passing argument 1 of ‘small_large’ from incompatible pointer type [-Wincompatible-pointer-types]
small_large(parole,i,small,large);
^~~~~~
small_large_words.c:7:6: note: expected ‘char **’ but argument is of type ‘char (*)[21]’
void small_large (char *parola[], int n, char small[], char large[])
Premessa: ho provato per sfizio tutto nel main e funziona senza errori, per il momento. Sicuramente si può sviluppare qualche altro algoritmo, ma essendo un programmino da esercizio non sono andato oltre. Il problema per ora più grande è l'errore che mi dice.
Grazie,
GD.
CODICE PROGRAMMA:
#include <stdio.h>
#include <string.h>
#define SIZE 20 //Lunghezza massima della parola
#define N_MAX 50//Numero massimo di lettere
void small_large (char *parola[], int n, char small[], char large[])
{
int j;
strcpy(small,parola[0]);
strcpy(large,parola[0]);
for( j=0; j<n; j++)
{
if( strcmp(parola[j],small) < 0)
strcpy(small,parola[j]);
if( strcmp(parola[j],large) > 0)
strcpy(large,parola[j]);
}
}
int main(void)
{
char parole[N_MAX][SIZE+1];
char buf[SIZE+1], small[SIZE+1], large[SIZE+1];
int i,j,n,count;
i=0;
for( ; ; )
{
printf("Inserisci la parola: ");
scanf("%s",buf);
n = strlen(buf);
if(n>4)
break;
strcpy(parole,buf);
if(i==N_MAX)
break;
i++;
}
small_large(parole,i,small,large);
printf("%s %s",small,large);
return 0;
}
sono nuovo nel forum quindi chiedo scusa in primis se ho sbagliato sezione.
Devo scrivere un programma che cerchi la maggiore e la minore tra una serie di parole. Ho suddiviso il programma in una semplice funzione oltre al main, ma mi da questo errore quando passo l'array di stringhe ala funzione:
small_large_words.c: In function ‘main’:
small_large_words.c:58:16: warning: passing argument 1 of ‘small_large’ from incompatible pointer type [-Wincompatible-pointer-types]
small_large(parole,i,small,large);
^~~~~~
small_large_words.c:7:6: note: expected ‘char **’ but argument is of type ‘char (*)[21]’
void small_large (char *parola[], int n, char small[], char large[])
Premessa: ho provato per sfizio tutto nel main e funziona senza errori, per il momento. Sicuramente si può sviluppare qualche altro algoritmo, ma essendo un programmino da esercizio non sono andato oltre. Il problema per ora più grande è l'errore che mi dice.
Grazie,
GD.
CODICE PROGRAMMA:
#include <stdio.h>
#include <string.h>
#define SIZE 20 //Lunghezza massima della parola
#define N_MAX 50//Numero massimo di lettere
void small_large (char *parola[], int n, char small[], char large[])
{
int j;
strcpy(small,parola[0]);
strcpy(large,parola[0]);
for( j=0; j<n; j++)
{
if( strcmp(parola[j],small) < 0)
strcpy(small,parola[j]);
if( strcmp(parola[j],large) > 0)
strcpy(large,parola[j]);
}
}
int main(void)
{
char parole[N_MAX][SIZE+1];
char buf[SIZE+1], small[SIZE+1], large[SIZE+1];
int i,j,n,count;
i=0;
for( ; ; )
{
printf("Inserisci la parola: ");
scanf("%s",buf);
n = strlen(buf);
if(n>4)
break;
strcpy(parole,buf);
if(i==N_MAX)
break;
i++;
}
small_large(parole,i,small,large);
printf("%s %s",small,large);
return 0;
}