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

Stato
Discussione chiusa ad ulteriori risposte.

eolo111

Nuovo Utente
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
3,553
2,377
Hardware Utente
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.
 

rodhellas

Utente Attivo
1,480
398
Hardware Utente
CPU
Intel i5 3470
Scheda Madre
AsRock H77 pro4/mvp
Hard Disk
120GB SSD + 1TB HD
RAM
12GB Corsair XMS3 1333mhz
Scheda Video
Gigabyte GTX 960 OC
Scheda Audio
Integrata
Monitor
SyncMaster 223BW
Alimentatore
Antec HCG-520M
Case
Thermaltake Commander Ms-i Snow Edition
Sistema Operativo
Windows 10 64bit
Stato
Discussione chiusa ad ulteriori risposte.

Entra

oppure Accedi utilizzando