Aiuto programma media C

di il
2 risposte

Aiuto programma media C

Ciao ragazzi dovrei fare un programma che chiede esattamente questo :
Si scriva un programma C che chieda all’utente quanti numeri interi (massimo 100) verranno introdotti, riceva in input questa sequenza e determini quale tripletta di numeri ADIACENTI ha il valor medio maggiore. Il programma deve quindi calcolare la media del 1°, 2°, e 3° numero, del 2°, 3° e 4° numero, del 3°, 4° e 5° numero, ecc. (ATTENZIONE: NON 1°, 2° e 3° e poi 4°, 5° e 6° ecc. !). Se più triplette hanno la stessa media massima, si consideri la prima.

Io ho provato a farlo in questo modo ma mi da dei risultati senza senso e non capisco dove sbaglio , sono nuovo in questo campo quindi mi affido a voi .
Grazie in anticipo.

#include "stdafx.h"
#include "stdio.h"
#include "string.h"
#include "stdlib.h"

int main()
{
	float Tripletta[2];
	float Max = 0;
	float M[300];
	int n;
	float V[100];
	do
	{
		printf("Inserire quanti valori si desidera immettere nel vettore: ");
		scanf_s("%d", &n);
	} while (n < 0 || n>100);
		for (int i = 0; i < n; i++)
		{
			printf("\nInserire il valore da mettere nel vettore");
			scanf_s("%d", &V[i]);
		}
		for (int i = 0; i < n; i++)
		{
			M[i] = (V[i] + V[i + 1] + V[i + 2]) / 3;
			if (M[i] >= M[i - 1])
			{
				Max = M[i];
				for (int j = 0; j < 2; j++)
					Tripletta[j] = M[i + j];

			}
			else
			{
				Max = M[i - 1];
				for (int j = 0; j < 2; j++)
					Tripletta[j] = M[(i - 1) + j];


			}
	
		}
		printf("La tripletta con la media piu alta é la tripletta: ");
		for (int i = 0; i < 2; i++)
			printf("%.3f\n", Tripletta[i]);
		printf("%.3f\n con il valore medio di: ");
		printf("%.3f\n", Max);
	system("PAUSE");
	return 0;
}

2 Risposte

  • Re: Aiuto programma media C

    Occhio al valore di i nel ciclo ... quando il ciclo sta terminando accedi "oltre" la fine del vettore V.

    E all'inizio, quando i=0, accedi "prima" del primo elemento del vettore M, con risultati imprevedibili.
  • Re: Aiuto programma media C

    /*
    #include <stdio.h>
    #include <stdlib.h>
    
    
    float calc_media (int sequenza[], int i) {
            float media = 0;
            int j;
            for (j = i-2; j<=i; j++) {
            	media = media + sequenza[j] / 3.0;
            }
            return media;
    }
    
    int main(void) {
    
    	/*** VARIABILI ***************************/
    	int num[100];
    	int i;
    	int serie;
    	float max_media;
    	int z;
    	float media;
    	int q;
    	/*****************************************/
    
    	printf("Quanti numeri verranno introdotti ?\n");
    	scanf("%d", &serie);
    
    	printf("Inserisci i %d numeri[o] della serie:\n", serie);
    	for(i=0; i<serie; i++ || serie<100) {
    		scanf("%d", &num[i]);
    	}
    
    	//Calcolo prima media e la considero massima
    	max_media=calc_media(num, 2);
    
    	for(z=0;z<serie;z++) {
    		media=calc_media(num, z);
    		if (media > max_media) {
    			max_media==media;
    			q==z;
    		}
    	}
    
    	printf("media maggiore : %.2f che corrispondo alla serie %d %d %d",max_media,num[q],num[q+1],num[q+2]);
    
    	return 0;
    }
    
Devi accedere o registrarti per scrivere nel forum
2 risposte