Witam. Muszę napisać program który pobierze od użytkownika "Imie_Nazwisko" + "Wzrost" około 10 osób. Następnie znajdzie najniższą osobę. Nie wiem czy to mam zrobic na tablicach czy jak... Mógłby ktoś pomóc? Przynajmniej naprowadzić trochę?
Robisz dwie tablice 10-elementowe. Jedna przechowuje imię i nazwisko, a druga wzrost. W drugiej wyszukujesz najmniejszą wartość i wypisujesz nazwisko o tym samym indeksie z pierwszej tablicy.
Nie trzeba tablic. Skoro ma wyznaczyć najniższa osobę to nie potrzeba przechowywania imion,nazwisk i wzrosty innych.
Nie znam nic javy ale coś takiego może:
-> Tworzysz stringa z imieniem i nazwiskiem, inta czy tam float ze wzrostem.
->Pobierasz dane 1 osoby zapisujesz do zmiennych.
->Pobierasz dane kolejnej osoby -> Jeśli jej wzrost jest mniejszy od aktualnie zapisanej to podmieniasz. I tak do końca ;p
Mam na razie tyle... co dalej?
import java.util.Scanner;
public class Pracadomowa{
public static void main(String[] args){
String[] imiona = new String[4];
Scanner odczytimion = new Scanner(System.in);
//pobranie danych
System.out.println("Podaj imiona: ");
for(int i=0; i<4; i++)
imiona[i] = odczytimion.nextLine();
int[] wzrost = new int[4];
Scanner odczytwzrostu = new Scanner(System.in);
System.out.println("Podaj wzrost: ");
for(int i=0; i<4; i++)
wzrost[i] = odczytwzrostu.nextInt();
}
}
ace4ur: Właśnie chodzi mi o to żeby najpierw pobrać wszystkie a później prównać.
A skoro tak to tak jak kolega napisał powyżej.
->Stwórz tablice imion i wzrostu.
->Pobierz w pętli imiona i wzrost.
-> Porównaj wzrosty(pętlą? sortowaniem? jest wiele sposobów)
Po co sortować? Przecież powinien jednocześnie podawać imię, nazwisko i wzrost danej osoby, tylko wzrost umieszczać w osobnej tablicy. Następnie wypisać imię i nazwisko z pierwszej po czym znaleźć ten sam index w drugiej i wypisać wzrost.
allocer Tak by było najlepiej tylko zapomniałeś chyba że mam znaleźć najmniejszy wzrost na koniec.
Nie wiem dokładnie, jak jest w Javie. Ale jakbyś zastosował coś, jak vector par w C++ czy hashtable z C#, gdzie kluczem byłoby imię i nazwisko a wartością wzrost.
Najmniejszy wzrost możesz szukać na bieżąco przy podawaniu danych. Tworzysz zmienną minWzrost=300 (nikt nie będzie miał więcej :)) i porównujesz podawane zmienne. Jeśli jest mniejsza to minWzrost=zmienna;
no a ja kompletnie się na C++ nie znam :). Może ktoś kto w javie siedzi się odezwie?
Naskrobałem coś takiego w c#:
using System;
class App
{
static void Main()
{
Console.Write("Ile osób: ");
string[] nazwa = new string[Convert.ToInt32(Console.ReadLine())];
int[] wzrost = new int[nazwa.Length];
int WzrostMin = 250, index = 0;
for (int i = 0; i < nazwa.Length; i++)
{
Console.Write("Osoba[{0}]. Podaj imię i nazwisko: ",i);
nazwa[i] = Console.ReadLine();
Console.Write("Podaj jej wzrost: ");
wzrost[i] = Convert.ToInt32(Console.ReadLine());
if (wzrost[i] < WzrostMin)
{
WzrostMin = wzrost[i];
index = i;
}
}
Console.Write("Najniższa osoba to {0} a wzrostu ma {1}.", nazwa[index], WzrostMin);
Console.ReadLine();
}
}
Nie wiem czy w javie w ten sposób się da...? Zobaczymy może ktoś ogarniający jave się wypowie :)
Sądzę, że powyższy kod będzie prawie identyczny w Javie, gdy zmienisz "Console.Write();" na "Scanner zmienna = new Scanner(System.in);"
nie wychodzi mi jakoś....
Kod w Javie będzie prawie że identyczny. Z dokładnością do String z dużej literki, length z małej, Interger.parseInt() zamiast Convert.ToInt32, i System.out.println zamiast Console.Write
import java.io.Console;
import java.util.Scanner;
public class Minimum{
public static void main(String[] args){
System.out.println("Ile osób: ");
String[] nazwa = new String[Interger.parseInt(Console.reader())];
int[] wzrost = new int[nazwa.length];
int WzrostMin = 250, index = 0;
for (int i = 0; i < nazwa.length; i++)
{
System.out.println("Osoba[{0}]. Podaj imię i nazwisko: ");
nazwa[i] = Console.reader();
System.out.println("Podaj jej wzrost: ");
wzrost[i] = Interger.parseInt(Console.reader());
if (wzrost[i] < WzrostMin)
{
WzrostMin = wzrost[i];
index = i;
}
}
System.out.println("Najniższa osoba to {0} a wzrostu ma {1}.", nazwa[index], WzrostMin);
Console.reader();
}
}
Może ktoś mi wskazać jakie błędy jeszcze popełniłem?
Trochę pomyśleć:
Scanner odczyt = new Scanner(System.in);
imiona[i] = odczyt.nextLine();
wzrost[i] = odczyt.nextInt();
Hmmm... Powiem tak. Jestem na etapie nauki javy (dopiero co skończyłem tabele wielowymiarowe i będę się brał za obiektowe). Niestety muszę napisać ten program ale mi namieszaliście trochę tym c# i teraz nie wiem która część kodu wgl nie należy do javy, którą muszę zmienić. Więc stąd moja ogromna prośba. Czy mógłby ktoś podać poprawny kod?
import java.util.Scanner;
public class Wkuwacz {
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
System.out.println("Ile osób: ");
int ilosc = in.nextInt();
String[] nazwa = new String[ilosc];
int[] wzrost = new int[ilosc];
int WzrostMin = 250, index = 0;
for (int i = 0; i < ilosc; i++)
{
System.out.println("Podaj imię i nazwisko: ");
nazwa[i] = in.next();
System.out.println("Podaj wzrost: ");
wzrost[i] = in.nextInt();
if (wzrost[i] < WzrostMin)
{
WzrostMin = wzrost[i];
index = i;
}
}
System.out.println("Najnizsza osoba to "+nazwa[index]+". Jej wzrost to: "+WzrostMin);
}
}
nazwą klasy proszę się nie sugerować hyhy ; )
Ok... Jedyne do czego się można przyczepić to to że trzeba podawac Imie i Nazwisko w postaci Jan_Kowalski. Wielkie dzięki.