Je suis nouveau sur ce site J'ai peut-être posé la question de la mauvaise manière, veuillez pardonner

J'ai terminé le choix a mais je n'arrive pas à obtenir le résultat souhaité pour la somme du choix b Je peux imprimer la série mais je ne peux pas imprimer la somme 2 - 5 + 10 - 17 + 26 - 37 +…. Jusqu'à n termes

import java.util.*;
class menu
{
    public static void main(String args[])
    {
        String choice="";
        Scanner sc=new Scanner(System.in);
        System.out.println("Enter your choice 'a' or 'b'");
        choice=sc.nextLine();
        switch(choice)
        {
            case "a":
            int i,j;
            for ( i=1; i <=5; i++)
            {
                for (j=5; j >=i; j--)
                {
                    if ((i + j) % 2 == 0) {
                        System.out.print("1 ");
                    } 
                    else 
                    {
                        System.out.print("0 ");
                    }
                }
                System.out.println();
            }
            break;
            case "b":
            System.out.println("Enter 'n' th term"); 
            int sum=0,f,s,into,n;
            n=sc.nextInt();
            for(f=1;f<=n;f++)
            {
                s=(f*f+1);
                sum+=s;
                
                
            }
            System.out.print(sum);
            break;
            default:
            System.out.println("Wrong Choice");
        }
    }
}
0
Soulmack 18 oct. 2020 à 17:21

2 réponses

Meilleure réponse

Gardez une variable sgn qui bascule entre 1 et -1. Multipliez chaque terme par sgn avant de l'ajouter à la somme, puis retournez sgn pour vous préparer au terme suivant:

int sgn = 1; 
for(f=1;f<=n;f++)
{
    s=sgn*(f*f+1);
    sum+=s;
    sgn *= -1;
}
0
Kevin Anderson 18 oct. 2020 à 14:53

Commencez le terme par 2, puis traitez le terme restant mais le dernier pour pouvoir imprimer le signe approprié (c'est-à-dire +/-) après tous les termes sauf le dernier. Notez que vous devez également ajouter chaque terme, avec le signe correct, à sum.

System.out.println("Enter number of terms: ");
int sum = 0, f, n, term;
n = sc.nextInt();

// Start term with 2
term = 2;

// Process the remaining but the last term
for (f = 2; f <= n; f++) {
    System.out.print(term + (f % 2 == 0 ? " - " : " + "));
    sum += f % 2 == 0 ? term : -term;
    term = term + (2 * f - 1);
}

// Process the last term
System.out.println(term);
sum += f % 2 == 0 ? term : -term;

// Display sum
System.out.print(sum);

Un exemple d'exécution:

Enter your choice 'a' or 'b'
b
Enter number of terms: 
5
2 - 5 + 10 - 17 + 26
16
0
Arvind Kumar Avinash 18 oct. 2020 à 15:54