Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    errore

    errore
    segmentation fault
    L'esercizio mi chiede che, dato un array a e la sua lunghezza len, scrive il valore del
    massimo e del minimo elemento di a nelle celle puntate da min e max.
    Scrivere un programma che utilizzi rand() per la generazione di un
    array di 10 elementi interi casuali in [0,100] e provare le funzione
    stampando il valore del minimo e il suo indirizzo.




    void minmax(int a[], int len, int *min, int *max)
    {
    int i;

    for (i=1; i<len; i++){
    {
    if (a[i] <min) min=a[i];
    else max=a[i];
    }
    *min=min;
    *max=max;
    }


    int main()
    {
    int a[10];
    int min=a[0];
    int max=a[0];

    srand(time(NULL));

    for (i=0; i< 10; i++)
    a[i] = rand()%100;

    minmax(a,10,&min,&max);
    printf("L'indice del minimo a %d\n",min);
    printf("L'indirizzo del minimo a %p\n",&min);

    return 0;
    }

  2. #2
    il titolo non rispetta il regolamento, non spieghi dove di preciso ti da l'errore e devi usare il tag CODE per mettere il codice

    comunque non capisco
    codice:
    void minmax(int a[], int len, int *min, int *max)
    {
    int i;
    
    for (i=1; i<len; i++){
    { 
    if (a[i] <min) min=a[i];
    else max=a[i];
    }
    *min=min;
    *max=max;
    }
    ogni volta che fai riferimento a min e max, avendoli passati per puntatore, devi usare *min e *max
    i min e max che usi nel for devono avere gli asterischi, a meno che tu non intendi usare variabili temporanee per quelli. In tal caso però li devi ridefinire, non li puoi usare in quel modo, e soprattutto non con lo stesso nome

    EDIT: hai anche fatto crossposting (sempre segnalato nel regolamento) cancella il post identico a questo nell'altra tua discussione, altrimenti si finisce di discutere parallelamente sulla stessa cosa in posti diversi

  3. #3

    Re: errore

    Originariamente inviato da Alex_ken
    codice:
    void minmax(int a[], int len, int *min, int *max)
    {
    int i;
    
    for (i=1; i<len; i++){
    { 
    if (a[i] <min) min=a[i];
    else max=a[i];
    }
    *min=min;
    *max=max;
    }
    Intanto esiste il tag BB CODE per indentare il codice. Così ci aiuti a leggerlo.

    Poi nella funzione che ho riportato sopra, nel ciclo con questo codice
    codice:
    min=a[i];
    else max=a[i];
    cambi l'indirizzo puntato da min e max con il numero in a[i].

    Anche
    codice:
    if (a[i] <min)
    è sbagliato, in quanto accedi all'indirizzo non al valore di min.
    lolide
    Java Programmer

    Informati

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Si veda il Regolamento interno per conoscere le norme di apertura di una discussione.

    Titoli delle discussioni, descrizione dei problemi e posting del codice sono tutte caratteristiche descritte nel suddetto regolamento.

    Il titolo deve dire qual è il problema trattato e deve essere obbligatoriamente indicato il linguaggio.
    Il codice va postato indentato all'interno degli appositi tag CODE (qui non hai fatto uso dei tag, né il codice è indentato).

    Sistemo io il titolo di questa discussione, aspettando di sapere qual è il problema.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.