Errore nella somma

di il
10 risposte

Errore nella somma

Ciao! Ho questo esercizio:

Dichiarare un vettore a di 10 int, una variabile int b e una variabile int c, riempire con valori letti da standard input il vettore a e la variabile c.
Se tutti i valori contenuti nel vettore a sono maggiori del valore in c, la funzione deve scrivere in b la somma degli elementi di posto pari del vettore a (lo 0 è posto pari). In caso contrario, la funzione deve scrivere in b il numero di valori del vettore a che sono <= c.

Io l'ho risolto in questo modo, ma la somma mi esce sempre 5 dove ho sbagliato?
#include <iostream>
using namespace std;

int main()
{
	int i;
	int a[10], b, c, conta = 0, somma = 0, conta2 = 0;

	for (i = 0; i < 10; i++)
	{
		cout << "inserisci valori in a: ";
		cin >> a[i];
	}
	cout << " dammi c: ";
	cin >> c;

	for (i = 0; i < 10; i++)
	{
		if (a[i]>c)
		{
			conta++;
		}
	}

	if (conta == 10)
	{
		for (i = 0; i < 10; i++)
		{
			if (i % 2 == 0 && i==0)
			{
				somma = somma + a[i];
				
			}
		}
		{b = somma; }
		
	}
	else {
		for (i = 0; i < 10; i++)
		{
			if (a[i] <= c)
			{
				conta2++;
			}
		}
		b = conta2;
	}

	cout << "b: " << b << endl;

	system("pause");
	return 0;
}

10 Risposte

  • Re: Errore nella somma

    Perché questa?

    if (i % 2 == 0 && i == 0)
  • Re: Errore nella somma

    oregon ha scritto:


    Quali valori inserisci da tastiera?
    Ho fatto la prova con 5-6-8-10-4-5-9-8-7-4 e con c=3 (con c=5 b mi esce giusta ovvero b=4)
  • Re: Errore nella somma

    oregon ha scritto:


    Perché questa?

    if (i % 2 == 0 && i == 0)
    per vedere le posizioni pari del vettore a e comprendere anche la posizione 0, basta mettere solo i%2==0?
  • Re: Errore nella somma

    In questo modo sbagli perché con la && è valida solo per i uguale a 0

    i%2 funziona anche se i è uguale a zero.
  • Re: Errore nella somma

    oregon ha scritto:


    Perché questa?

    if (i % 2 == 0 && i == 0)
    ok, basta toglierlo e l'esercizio funziona!
  • Re: Errore nella somma

    oregon ha scritto:


    In questo modo sbagli perché con la && è valida solo per i uguale a 0

    i%2 funziona anche se i è uguale a zero.
    che errore stupido! Grazie mille!
  • Re: Errore nella somma

    Non servirebbe neanche la if ... basta fare una for che parte da 0 e incrementa di 2
  • Re: Errore nella somma

    oregon ha scritto:


    Non servirebbe neanche la if ... basta fare una for che parte da 0 e incrementa di 2
    ah bè si, non ci avevo pensato!
  • Re: Errore nella somma

    giulia18395 ha scritto:


    oregon ha scritto:


    Non servirebbe neanche la if ... basta fare una for che parte da 0 e incrementa di 2
    ah bè si, non ci avevo pensato!
    C'è un modo per capire (non riguarda questo esercizio) quando il conta=0 o la somma=0 non vanno messi nei dati ma vanno inizializzati all'interno di un ciclo?
  • Re: Errore nella somma

    Nel momento in cui ci sganciamo dal suddetto esercizio, parlare di conta=0 o somma=0 non ha alcun senso!

    Ricordo che anche nell'altro topic eri alla ricerca di regole di carattere generale da applicare meccanicamente... purtroppo non funziona così, e quand'anche fosse possibile, non sarebbe comunque una buona pratica!
Devi accedere o registrarti per scrivere nel forum
10 risposte