• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zliczanie sumy indeksu o wartosci min i max z podanego zakresu liczb.

Object Storage Arubacloud
0 głosów
1,261 wizyt
pytanie zadane 19 grudnia 2017 w Java przez Ohnne Nowicjusz (180 p.)

Mam problem z rozwiązaniem zaznaczonej części polecenia z zadania podanego poniżej o ile pierwsza część jest wykonana prawidłowo i nie koliduje z kontynuacją zadania. Zamieszczam również dotychczas napisany kod. Prosiłbym o wytłumaczenie za co z góry dziękuje.

1 odpowiedź

0 głosów
odpowiedź 19 grudnia 2017 przez niezalogowany
edycja 19 grudnia 2017

Z niczym Ci to nie koliduje. Instrukcja break przerywa tylko pętlę odpowiedzialną za pobieranie liczb. Gdybyś je zapisywał do tablicy (np ArrayList) mógłbyś dalej na nich działać. W ostateczności możesz jedną pętlą liczyć max, min i sumę liczb, a na końcu średnią i wypisać wyniki. Przykład:

import java.util.Scanner;
import java.util.ArrayList;
import java.util.Collections;

public class Test 
{
	public static void main(String args[])
	{
		ArrayList<Integer> array = new ArrayList<Integer>();
		
	    Scanner s = new Scanner(System.in);	    
	    while (true)
	    {
	    	System.out.print("Podaj liczbe: ");
	    	int input = s.nextInt();
	    	
	    	if (input == 0)
	    	{
	    		System.out.println("Podano liczbe 0. Zakonczenie wczytywania");
	    		break;
	    	}
	    	else
	    	{
	    		array.add(input);
	    	}
	    }
	    
	    System.out.print("Wczytano: \n");
	    for (Integer i : array)
	    {
	    	System.out.println(i + " ");
	    }
	    
	    System.out.println("Max: " + Collections.max(array));
	    System.out.println("Min: " + Collections.min(array));
	    //System.out.println("Srednia arytmetyczna: " + average(array));
	}
}
komentarz 19 grudnia 2017 przez Ohnne Nowicjusz (180 p.)
No tak, można to tak zrobic, natomiast mi bardziej zalezalo na wykorzystaniu samych petli bez zwyklych tablic, zarowno jak i ArrayList.
komentarz 19 grudnia 2017 przez niezalogowany
No to robisz przed pętlą zmienne np. min, max, sum. W sprawdzaj czy liczba jest większa od poprzedniego maksimum itd. Gdy pętla się zakończy będziesz mógł wypisać min, max i obliczyć średnią na podstawie sumy elementów i ich ilości (zmienna i).
komentarz 20 grudnia 2017 przez Ohnne Nowicjusz (180 p.)

Nie do konca potrafie poradzic sobie z przeniesieniem tego co napisales na kod. Udalo mi sie jedynie wyznaczyc max za pomoca kolejnego ifa w petli while co i tak nie do konca dziala poniewaz na liczbach ujemnych juz nie wyznacza najwiekszej liczby. Prosilbym o jasniejsze wytlumaczenie badz rozwiazanie.

 

public class Sound {
	
	public static void main(String[] args) {
		

		Scanner s = new Scanner(System.in);
		
		int min=0;
		int max=0;
		int sum=0;
		int i = 0;
		while(true)
		{
			i++;
			System.out.print("Podaj liczbe: ");
			int inPut = s.nextInt();
			if(inPut==0)
			{
				break;
			}
			sum = sum + inPut;
			if(max<inPut)
			{
				max = inPut;
			}
			
		}
		System.out.println("Sum: "+ sum);
		System.out.println("Max: "+ max);
		System.out.println("Min: "+ min);
	}
		
}

 

komentarz 20 grudnia 2017 przez niezalogowany

Jakby program miał działać także dla liczb niedodatnich to by nie dawali zera jako końca danych :D No, ale jak trzeba to zmienne min, max mogłyby mieć wartość pierwszej wczytanej liczby:
 

import java.util.Scanner;

public class Test 
{
     
    public static void main(String[] args) 
    {

        Scanner s = new Scanner(System.in);
        
        System.out.print("Podaj liczbe: ");
        int first = s.nextInt();
  
        if (first == 0)
        {
        	System.out.println("Tablica pusta!");
        }
        else
        {
        	int min = first;
            int max = first;
            int sum = first;
        	int size = 1; // bardziej czytelne niz i
        	
	        while(true)
	        {
	            System.out.print("Podaj liczbe: ");
	            int inPut = s.nextInt();
	            if(inPut==0)
	            {
	                break;
	            }
	         
	            sum = sum + inPut; // lub sum += inPut
	            if (max < inPut)
	            {
	                max = inPut;
	            }
	            if (min > inPut)
	            {
	            	min = inPut;
	            }
	            size++;
	             
	        }
	    
	        System.out.println("Sum: " + sum);
	        System.out.println("Max: " + max);
	        System.out.println("Min: " + min);
	        System.out.println("Avg: " + (float) sum / size);
        }
    }
}
komentarz 20 grudnia 2017 przez Ohnne Nowicjusz (180 p.)
Dzieki wielkie ! :)

Podobne pytania

0 głosów
1 odpowiedź 1,579 wizyt
pytanie zadane 29 maja 2018 w JavaScript przez C1chutki Nowicjusz (120 p.)
0 głosów
5 odpowiedzi 3,118 wizyt
pytanie zadane 10 marca 2018 w C i C++ przez giedymin33 Początkujący (290 p.)
0 głosów
1 odpowiedź 1,350 wizyt
pytanie zadane 14 maja 2016 w C i C++ przez Evelek Nałogowiec (28,960 p.)

92,554 zapytań

141,399 odpowiedzi

319,535 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...