Aide à la programmation C ++

Vous créez un programme qui affiche la sum d’entiers pairs compris entre deux nombres entrés par l’utilisateur.

ex) 2 et 7 = la sum de 12 (2 + 4 + 6)

c’est ce que j’ai jusqu’à présent! fesses si vous pouvez juste me mettre dans la bonne direction qui serait utile

//Advanced30.cpp - displays the sum of the even integers between and //including two numbers entered by the user //Created/revised by  on  #include  using namespace std; int main() { // declare variables int num1 = 0; int num2 = 0; int sum= 0; cout << "Enter the First Number:" <> num1; cout << "Enter the Second Number:" <> num2; if ( num1 > num2) { cout << "Invalid entry. Final number must be less than the first number. Please try again." << endl; } for ( int sum = (((num1 + 1)/2)*2); num1 <= (((num2 + 1)/2)*2) ; sum = 2 + (((num1 + 1)/2)*2) ) return 0; } //end of main function 

Dans votre boucle, ça devrait être comme ça.

 double sum = 0.0; for(i = num1; i <= num2; i++){ if(i % 2 == 0){ // Is our number even sum += i; } } 

C'est ça et ça imprime la sum.

Je simplifierais votre boucle

 for(int i = num1; i <= num2; i++) { if(i % 2 == 0) sum += i; } 

Cela donnera deux fois plus de chiffres, mais honnêtement, ce n’est pas si cher.

Vous pouvez également le faire en un temps O (1) en tirant parti du fait que la sum 1..n == n * (n + 1)

Voici un exemple très simple en Java, le traduire en C ++ ne sera pas trop difficile, j'espère 🙂 pas de compilateur C ++ sur cette machine: -X

 import java.util.*; class DoubleSum { public static void main(Ssortingng[] args) { Scanner sc = new Scanner(System.in); int num1 = sc.nextInt(); int num2 = sc.nextInt(); int low = (num1 - 1)/ 2; int high = num2 / 2; int sumLow = (low*(low + 1)); int sumHigh = (high*(high + 1)); int sum = sumHigh - sumLow; System.out.println(sum); } } 

Vous utilisez la même variable pour contrôler la boucle for et pour la sum, cela ne fonctionnera pas. Essaye ça:

 int even1 = num1 % 2 == 0 ? num1 : num1+1; int even2 = num2 % 2 == 0 ? num2 : num2-1; for (int i = even1; i <= even2; i += 2) sum += i; 

Notez que vous n'avez pas vraiment besoin d'une boucle for:

 int even1 = num1 % 2 == 0 ? num1 : num1+1; int even2 = num2 % 2 == 0 ? num2 : num2-1; // how many numbers you will sum (remember they are even, so we need to divide by 2) int count = 1 + (even2 - even1)/2; sum = (even1 + even2) * (count/2); if (count % 2 == 1) sum += (even1 + even2)/2; 
 for(int i = num1; i <= num2; i++) { if(!(i & 1)) sum += i; } 

Votre code se retrouverait dans une boucle infinie.

Regardez la boucle for (). Vous avez la condition

 num1 <= (((num2 + 1)/2)*2) 

pour déterminer si votre boucle se termine. Cependant, puisque num1 n'est jamais incrémenté et que num1