Homework università (very hard)

di il
4 risposte

Homework università (very hard)

Si scriva un programma che richiede all’utente un valore V di soglia e successivamente riceve in ingresso una sequenza di numeri decimali positivi terminata da 0 (al massimo 10 numeri), memorizzando in un vettore maggiori (di dimensione 10) SOLO i valori maggiori di V. Il programma deve poi creare un secondo vettore med in cui l’elemento i-esimo e’ calcolato come la media tra l’elemento i-esimo del vettore maggiori ed il valore V.

i miei problemi stanno nel fare il vettmax e il vettore med.. (devo farlo per forza con la funzione media al di fuori del main)

#include <cstdlib>
#include <iostream>
#include<string.h>

float media (float a , int b);

int main () {
float vett[10];
float vetmax[10];
float med[10];
int i,v;

printf("inserisci un valore soglia:");
scanf ("%d", &v);

printf("inserire valori nel vettore:");

for (i=0; i<10 ; i++){
scanf ("%f", &vett);
}

for (i=0; i<10; i++){
if (vett > v )
{ vetmax = vett; }}

for (i=0; i<10; i++){
printf ("%f", vetmax);}



do { i=0;
media(vetmax,v);
i++;
scanf("media", &med);
} while (i<10 && vetmax== vett);


for (i=0; i<10; i++){
printf ("%f", med);}

getchar();
}

float media(float a, int b){
float media;

media = (a+b)/2;

return media;
}

4 Risposte

  • Re: Homework università (very hard)

    Siccome si tratta di un homework (ma perchè non lo chiamate compito ?) ed è very hard (difficile in italiano ) ti do alcuni spunti per risolvere e ripulire:
    - è richiesto l'uso dei float? Talvolta è più semplice usare degli interi (ad esempio per uscire dalla sequenza con i float devi digitare 0.0 in input)
    - la funzione media() perchè riceve b come int? se lavori con i float passagli due float!
    - dopo aver caricato vett[] fai il ciclo per caricare vettmax[] ma usi lo stesso indice per entrambi; forse devi avere un indice dedicato per vettmax[] e una variabile che ti indica, per i passi successivi, quanti elementi ci sono in vettmax[].
    Spero di esserti stato utile
  • Re: Homework università (very hard)

    L'uso dei float è necessario i valori in entrata devo essere decimali, la funzione media riceve m come intero perché il valore soglia da inserire V ci è stato detto che deve essere intero, ok tu mi consigli di fare due variabili una per indicare le posizioni di un vettore l'altra il secondo, e concettualmente ho capito ma non so come tradurre il fatto che vettmax[] possa avere meno posizioni di dieci
  • Re: Homework università (very hard)

    Una cosa del genere può andare? poi con il ciclo m aumenta e mi diventa anche un contatore delle posizioni giusto!?
    m=0;
    for (i=0; i<10; i++){
    if (vett > v )
    { vetmax[m] = vett;
    m++; }}
  • Re: Homework università (very hard)

    Esatto.
    Comunque nella pratica comune si utilizzano i,j,k come nomi per gli indici.
    Per maggiore chiarezza poi puoi salvare l'indice massimo in una ulteriore variabile.
    Piccola nota che mi ero dimenticato prima: per compilarlo con visual studio ho dovuto cambiare gli headers così
    
    #include <stdio.h>
    #include <string.h>
    
Devi accedere o registrarti per scrivere nel forum
4 risposte