Buongiorno, sono alle prese con degli esercizi del mio corso di università. Ho provato a cercare diverse soluzioni ma niente da fare.
lascio sotto il testo del esercizio con il mio codice. Gli errori si generano sempre in corrispondenza di funzioni come strcmp o strcpy.
Grazie in anticipo a chi riesce a darmi una mano.
Mi scuso già per eventuali mie oscenità ma non sono molto pratico
Si scriva un programma in linguaggio C che permette all'utente di inserire delle parole (stringhe) in un opportuno vettore di stringhe (matrice di char) senza ripetizioni.
Il main dopo aver chiesto all'utente di inserire una parola da tastiera la inserisce in coda al vettore tramite una funzione "inserimento".
La funzione "inserimento" prende come parametri il vettore di stringhe, la parola da inserire ed eventuali altri parametri:
- restituisce 0 se la stringa è già presente nel vettore;
- altrimenti procede ad inserire la nuova parola e restituisce 1.
Il programma deve continuare a richiedere l'inserimento di nuove parole finché l'utente non inserisce la parola "fine" (che non va inserita nel vettore).
Al termine dell'inserimento il programma deve stampare a video l'intero vettore di stringhe tramite una procedura.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
typedef struct {
char s[20];
int voto;
}votazione;
void lettura_votazioni(votazione V[], int* N_votazioni) {
const int N_elementi = 22;
int i;
votazione accampamenti[] = {
{"Odisseo", 4},
{"Achille", 3},
{"Menelao", 2},
{"Odisseo", 2},
{"Agamennone", 5},
{"Menelao", 2},
{"Tersite", 1},
{"AiaceTelamonio", 5},
{"AiaceTelamonio", 2},
{"Diomede", 4},
{"AiaceOileo", 2},
{"Agamennone", 3},
{"Achille", 5},
{"AiaceOileo", 2},
{"Odisseo", 3},
{"Achille", 5},
{"Agamennone", 2},
{"Menelao", 2},
{"Diomede", 3},
{"AiaceTelamonio", 2},
{"Diomede", 2},
{"AiaceOileo", 2}
};
for (i = 0; i < N_elementi; i++)
V[i] = accampamenti[i];
(*N_votazioni) = N_elementi;
}
void inserimento(votazione a[], votazione b[], int dim, int *dim2) {
int index;
for (int i = 0; i < dim; i++) {
index = ricerca(a[i].s, &b, &dim);
if (index == (-1)) {
strcpy(b[*dim2].s,a[i].s);
b[*dim2].voto = a[i].voto;
(*dim2)++;
}
else {
int temp = a[i].voto;
int temp2 = b[index].voto;
int sum = temp + temp2;
b[index].voto = sum;
}
}
}
int ricerca(char s[], votazione b[], int dim) {
for (int i = 0; i < dim; i++) {
if (!strcmp(s, b[i].s)){
return i;
}
}
return -1;
}
void stampa(votazione b[], int dim) {
for (int i = 0; i < dim; i++) {
printf("\n%s , Voti: %d", b[i].s, b[i].voto);
}
}
void main()
{
votazione a[100], b[100];
int dim, dim2 = 0;
lettura_votazioni(&a, &dim);
inserimento(&a, &b, &dim, &dim2);
stampa(&b, &dim2);
}