Suma liczb z przedziału od a do b

0

Dzień dobry, jestem naprawdę początkujący w świecie programowania a dodatkowo sytuacja która jest teraz w kraju utrudnia mi kontakt z nauczycielem i mam problemy z pisaniem programu, więc prosiłbym o wyrozumiałość.
Otóż mam problem z napisaniem programu który zsumuje liczby z przedziału z pobranych danych z pętli for. Wszystko mam napisane tylko nie wiem jak dodać do siebie te liczby.

Mam coś takiego

import java.util.Scanner;

public class GGGG {

	public static void main(String[] args) {
	        {
			
			Scanner wejscie = new Scanner(System.in);
			int A;
			System.out.println("Podaj liczbę całkowitą A");
			A = wejscie.nextInt();
			int B;
			System.out.println("Podaj liczbę całkowitą B");
			B = wejscie.nextInt();
			int C;
			System.out.println("Podaj liczbę całkowitą C");
			C = wejscie.nextInt();
			
			if(A<B){
				int suma = 0;
				for (int i=A; i<=B; i++) {
					if(i%C==0) {
						suma=suma+i;
						System.out.print(i +", ");
					}
				}
			}
			else if(A>B){
				int suma = 0;
				for (int i=A; i>=B; i--) {
					if(i%C==0) {
						suma=suma+i;
						System.out.print(suma+", ");
					}
				}
			}
			else {
				System.out.print("Liczby A i B są takie same");
			}
			}
			}
	}
1

Nie potrzebujesz do tego pętli; ba: powinieneś być to w stanie całkiem sprawnie policzyć nawet na kartce papieru :-)

0

W tak prostym przypadku może lepiej iterować od a do b (lub od b do a), ale na przyszłość warto wiedzieć o sumach prefixowych. W Javie nie piszę, więc w implementacji nie pomogę.

1
Y Dd napisał(a):

Dzień dobry, jestem naprawdę początkujący w świecie programowania a dodatkowo sytuacja która jest teraz w kraju utrudnia mi kontakt z nauczycielem i mam problemy z pisaniem programu, więc prosiłbym o wyrozumiałość.
Otóż mam problem z napisaniem programu który zsumuje liczby z przedziału z pobranych danych z pętli for. Wszystko mam napisane tylko nie wiem jak dodać do siebie te liczby.

Po co ci (w kodzie) C? Z treści zadania - w takim brzmieniu, w jakim podajesz ją powyżej - nie wynika, żeby było do czegokolwiek potrzebne.

I jaki konkretnie masz problem z tym programem? Tzn. w jaki sposób nie działa - dla jakich parametrów?

Trudno to z ciebie wyciągnąć. Sama implementacja wygląda na poprawną.

Trochę do życzenia pozostawia styl kodu. Np. osobno zaimplementowałeś przypadki dla A większego od B, i odwrotnie:

        if (A < B) {
            int suma = 0;
            for (int i = A; i <= B; i++) {
                if (i % C == 0) {
                    suma = suma + i;
                    System.out.print(i + ", ");
                }
            }
        } else if (A > B) {
            int suma = 0;
            for (int i = A; i >= B; i--) {
                if (i % C == 0) {
                    suma = suma + i;
                    System.out.print(suma + ", ");
                }
            }
        }

Można to przecież ująć prościej.
Dodamy sobie kolejną zmienną, która będzie miałą taką wartość jak mniejsza z liczb A i B.
I drugą, o wartości takiej jak ta większa.
Wtedy nie trzeba robić dwóch osobnych pętli.
Czyli zamiast tego co wyżej - coś takiego:

        int smaller = A > B ? B : A; // lub Math.min(A, B);
        int larger = A > B ? A : B; // lub Math.max(A, B);
        int suma = 0;
        for (int i = smaller; i <= larger; i++) {
            if (i % C == 0) {
                suma += i; // skrótowy zapis suma = suma + i;
                System.out.print(i + ", ");
            }
        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1