Problema con le occorrenze e valore massimo da inserire in c.

Stato
Discussione chiusa ad ulteriori risposte.

eolo111

Nuovo Utente
34
2
Salve a tutti, avrei un problema con un esercizio di informatica, non sono un programmatore ma uno studente di ingegneria elettrica, il testo dell'esercizio richiede di inserire n numeri in un array,questi numeri devono essere compresi tra 0 e max_val che deve decidere il programmatore,come se non bastasse devo scrivere su un file il contenuto dell'array è riportare il numero di occorrenze di ogni singolo valore.Ho abbozzato il programma, ma non mi calcola le occorrenze. accetto qualsiasi suggerimento grazie.

Codice:
#include <stdio.h>
#define DIM 100
void scrivi_file(int*,int,int);
int main()
{
    int arr[DIM],n,c;
    int max_val=10;
    int cont=0;
    printf("Quanti numeri vuoi inserire?\n");
    scanf("%d",&n);
    printf("inserirsci i %d numeri compresi tra 0 e %d\n",n,max_val);
    for(int i=0;i<n;i++)
    {
        printf("Numero %d: ",i);
        scanf("%d",&c);
        if(c>=0 && c<=max_val)
        {
            arr[i]=c;
            cont++;
        }
        else
         {
            printf("Numero sbagliato\n");
            printf("Inserisci un numero tra 0 e %d.\n",max_val);
         }
    }
    scrivi_file(arr,n,cont);
    return 0;
}
void scrivi_file(int *a,int n,int conta)
{
    FILE *fp;
    fp=fopen("/home/andrea/Documenti/Andrea/Informatica/prova.txt","w");
    for(int i=0;i<n;i++)
    {
        fprintf(fp,"%d %d\n",a[i],conta);
    }
    fclose(fp);
}
 

Andretti60

Utente Èlite
6,440
5,091
Primo errore: utilizzi la variabile "conta" per contare il numero di valori giusti, ma usi le variabili "i" e "n" nel ciclo. Usa solo "conta", che è quella giusta, e fermati quando raggiunge il valore massimo. Usa un while invece di un for.
Secondo errore, cosa succede se il numero di valori richiesti è più grande di DIM? Devi allocare il tuo vettore dinamicamente (o limiti il valore di essere più piccolo di DIM.
Cominciamo con questi poi passiamo alla distribuzione.
 

eolo111

Nuovo Utente
34
2
scusa ma non ho capito di quale ciclo for parli, se di quello della funzione o quello per l'inserimento dei valori nell'array?
 

rodhellas

Utente Èlite
1,522
427
CPU
Ryzen 5 3600
Dissipatore
GELID Phantom
Scheda Madre
MSI B450 Gaming Plus Max
HDD
500GB m.2 + 2TB HDD
RAM
16GB Corsair LPX 3000mhz
GPU
Gigabyte GTX 960 OC
Audio
Integrata
Monitor
SyncMaster 223BW
PSU
Antec HCG-520M
Case
Meshify C
Net
Gigabit Fastweb
OS
Windows 10 64bit
Stato
Discussione chiusa ad ulteriori risposte.

Ci sono discussioni simili a riguardo, dai un'occhiata!

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili