Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 09. 01. 2013 16:12

xEro
Příspěvky: 57
Reputace:   
 

java příklad

ahoj lidičky, mam úlohu, která zní velmi jednoduše, ale nějak mi nejde to dát dohromady.
úloha zní, abych z čísel v rozmezí od 10 po 100 a po jejich zadání  provedl jejich součet,
takže 13 a 14 součet 27.
Něco jsem zkusil, ale nefunguje mi to, zajímalo by mě, co dělám špatně?(zkoušel jsem ještě jednu podmínku s a zároveň,[x<10 && y>100] ale stejný případ, nefungovalo to)

Code:

import java.util.Scanner;


public class soucet {
    
    
    
    static int soucet(int x, int y)
    {
        int soucet=0;
        if(x<10 | x>100 | y<10 | y>100)
        {
            System.out.println("Je mi líto, rozsah čísel je: 10 až 100");
        }
        else
        {
            if(y<x)
            {
                for(int i=y;i<x;i++)
                {
                    soucet+=i;
                }
            
            }
            else
            {
                for(int i=x;i<y;i++)
                {
                    soucet+=i;
                }
            }
          
        }return soucet;
    
    
    }
    public static void main(String[]args)
    {
        Scanner s=new Scanner(System.in);
        System.out.println("Zadejte čísla: ");
        int x=s.nextInt(); int y=s.nextInt();
        int secti=soucet(x,y);
        System.out.println("Součet dvou čísel  v rozmezí je:"+secti);
    }
}

Offline

 

#2 09. 01. 2013 17:14

Stýv
Vrchní cenzor
Příspěvky: 5710
Reputace:   215 
Web
 

Re: java příklad

co znamená "nefunguje mi to"?

Offline

 

#3 09. 01. 2013 17:25

xEro
Příspěvky: 57
Reputace:   
 

Re: java příklad

podmínka se splní, když zadávám čísla mimo rozsah tak to vypíše "Je mi líto, rozsah čísel je: 10 až 100"
ale když dám třeba čísla 15 a 16, vypíše to součet 15, což je špatně, jelikož to má být 31

Offline

 

#4 09. 01. 2013 18:09

Dommy73
Zelenáč
Příspěvky: 10
Škola: FI MUNI
Pozice: student
Reputace:   
 

Re: java příklad

Protože do proměnné "soucet" jsi na začátku nedal obsah proměnné "x" ale nulu. A ani nikde poté, takže jsi do ní v podmínce vložil pouze obsah proměnné "y".

Offline

 

#5 09. 01. 2013 18:15

xEro
Příspěvky: 57
Reputace:   
 

Re: java příklad

aha, ale jak dosadit i to x hodnotu? nemůžu dosadit místo 0 v proměnné "soucet" x ne?

Offline

 

#6 09. 01. 2013 18:54 — Editoval Dommy73 (09. 01. 2013 18:59)

Dommy73
Zelenáč
Příspěvky: 10
Škola: FI MUNI
Pozice: student
Reputace:   
 

Re: java příklad

Promiň, přehlídnul jsem ještě, že ta druhá podmínka má taky else.
Upravil bych to takhle:

if(y<x)
            {
                soucet=x; // Začíná s hodnotou x a pak přičítá y.
                for(int i=y;i<x;i++)
                {
                    soucet+=i;
                }
           
            }
            else
            {
                soucet=y; // Začíná s hodnotou y a pak přičítá x.
                for(int i=x;i<y;i++)
                {
                    soucet+=i;
                }
            }

Když jsem to narychlo přepsal do Cčka (já v Javě nedělám, ale tohle vypadá jako základy... Pokud v přiřazení těch hodnot mám syntakticky špatně, tak si to prosím převeď do správné podoby), tak to fungovalo.
BTW je správně podle zadání, že by to při zadání x=10;y=12 vyhodilo soucet==33?

Offline

 

#7 09. 01. 2013 18:58

Jookyn
Místo: Mar. Lázně / Praha
Příspěvky: 143
Reputace:   11 
 

Re: java příklad

A proc misto

Code:

        else
        {
            if(y<x)
            {
                for(int i=y;i<x;i++)
                {
                    soucet+=i;
                }
            
            }
            else
            {
                for(int i=x;i<y;i++)
                {
                    soucet+=i;
                }
            }
          
        }

nenapsat

Code:

        else
        {
            soucet = x + y;          
        }

Tak jak to mas ty to po par uopravach upravach muze sice pocitat spravne (ted je to uplne mimo), ale velice neefektivne... Pokud je to ukol do skoly, pak si rozhodne myslim, ze by to takto nemelo byt uznano.

Offline

 

#8 09. 01. 2013 19:00

Jookyn
Místo: Mar. Lázně / Praha
Příspěvky: 143
Reputace:   11 
 

Re: java příklad

Pockat, mozna uz chapu, co mel program delat, kazdopadne to slovni zadani na zacatku tomu neodpovida...

Offline

 

#9 09. 01. 2013 19:01 — Editoval xEro (09. 01. 2013 19:03)

xEro
Příspěvky: 57
Reputace:   
 

Re: java příklad

Jookyn páni! mockrát děkuji funguje je to!(za to slovní zadání se omlouvám) i tobě děkuji Dommy,
můžu ještě jednu otázku, ať nemusím zakládat nové téma? :)

Offline

 

#10 09. 01. 2013 19:09

Dommy73
Zelenáč
Příspěvky: 10
Škola: FI MUNI
Pozice: student
Reputace:   
 

Re: java příklad

Ptej se :)
Jen k zadání: mělo to jen vypočítat součet těch dvou čísel nebo všech čísel v tom rozmezí? Pro upřesnění...

Offline

 

#11 09. 01. 2013 19:12 — Editoval xEro (09. 01. 2013 19:12)

xEro
Příspěvky: 57
Reputace:   
 

Re: java příklad

Mělo to sečíst jen ty dvě čísla, to zadání mohlo být trošku matoucí, za to se omlouvám.
Fajn, mám ještě jeden příklad, přesné zadání:
"Vytvořte jednorozměrné pole z náhodných čísel od 100 do 999, rozměr pole zadejte z klávesnice a zobrazte uvedené pole a pak pouze sudá čísla. "

bohužel mám trošku nedostatky, co se týče metod, takže nevím vůbec jak to pole vypsat, něco jsem zkusil, ale vůbec nevím jak pokračovat, nebo spíš jak to dokončit.
Děkuji za pomoc


Code:

package projekt;
import java.util.Scanner;
import java.util.Random;
/**
 *
 * @author 
 */
public class pole_sude {
    
    
    static  int [] nacteniCisel(int x)
    {
        int [] pole=new int[x];
        for(int y=0;y<pole.length;y++)
        
        { 
            pole[x]=(int)Math.round(Math.random()*899+10);
        }
        
        
      return pole;  
    }
    
    static void  nacteni(int [] pole)
    {
       for(int x=0;x<pole.length;x++)
       {
           if(x % 2==0)
           {
            System.out.print(pole[x]+" "); 
           }
           
       }
       System.out.println("");
    }
    
    
    public static void main(String[]args)
    {
        Scanner s=new Scanner(System.in);
        int x=s.nextInt();
        int [] pole =nacteniCisel(x);
        nacteni(pole);
        System.out.println("čísla jsou: "+pole);
        
    }
}

Offline

 

#12 09. 01. 2013 19:39

Dommy73
Zelenáč
Příspěvky: 10
Škola: FI MUNI
Pozice: student
Reputace:   
 

Re: java příklad

můj postup by byl:

Code:

input x;
inicializace pole[x]; // Nevím jestli Java umí dynamická pole, ale to snad jo.
for(i=0;i<x;i++){pole[i]=(příkaz pro náhodnou hodnotu od 100 do 999)}
//Opět nevím jestli v Javě se pole indexuje o 0 nebo od 1. Pokud od 1 tak to samozřejmě změní na for(i=1;i=<x;i++)
for(i=0;i<x;i++){příkaz na vypsání pole[i]}; 
for(i=0;i<x;i++)
{
  if (pole[i]%2==0){příkaz na vypsání pole[i]}; 
}

Mezi číslicemi tam samozřejmě nech mezery a mezi vypsáním celého pole a pouze sudých číslic bych dal nějaký odstavec, aby se v tom člověk vyznal.

Offline

 

#13 09. 01. 2013 19:59

xEro
Příspěvky: 57
Reputace:   
 

Re: java příklad

jéé kamaráde, pomalu na mě, musím to mít přes metody, a vůbec si nevím rady, jak aplikovat tvoje řešení na můj "program"
(prosím o strpení, s javou začínám dost pozdě a je toho na mě teď hodně )

Offline

 

#14 09. 01. 2013 20:21

Dommy73
Zelenáč
Příspěvky: 10
Škola: FI MUNI
Pozice: student
Reputace:   
 

Re: java příklad

Koukám že metody v Javě je jen jiný jméno pro funkce. (doufám že to chápu dobře)

dejme tomu že budeš mít metody

Code:

vytvor_pole(int x)
{
  int [] pole=new int[x];
  for (int i=0;i<x;i++)
     {
       pole[i]=(int)Math.round(Math.random()*899+100);
     }
  return pole;
}


vypis_pole(int pole,int x)
{
  
  for (int i=0;i<x;i++)
     {
       System.out.print(pole[i]+" "); 
     }
}


vypis_sude(int pole,int x)
{
  for (int i=0;i<x;i++)
     {
       if (pole[i]%2==0)
        {
          System.out.print(pole[i]+" "); 
        }
     }
}

main() pak bude vypadat tak, že od uživatele na vstupu získáš x, které je jak dlouhé to pole má být.
pak voláš vytvor_pole(x); následně získáš pole náhodných čísel, to předáš vypis_pole(pole,x). A pak znovu vypis_sude(pole,x).

Snažil jsem se to psát podle kódu v tomhle threadu, aby to bylo syntakticky co nejblíž javě, ale chyby nevylučuju. Doufám, že to z toho ale pochopíš, jak jsem to celý myslel.

Offline

 

#15 09. 01. 2013 21:28 — Editoval xEro (09. 01. 2013 21:29)

xEro
Příspěvky: 57
Reputace:   
 

Re: java příklad

ahoj! tak takhle jsem to nějak dal dohromady, ale pořád ještě mám někde chybku, už to tedy ale  co mi nejde, je že nevypíše ty prvky pole, a pak ty sudé prvky, vypíše to dohromady, někde asi v main mi něco chybí, strašně ti ale děkuji! už cítím finále :D

Code:

public class pole_sude {
    
    
   public static  int [] vytvor_pole(int x)
   {
       int [] pole=new int[x];
       for(int i=0;i<pole.length;i++)
       {
           pole[i]=(int)Math.round(Math.random()*899+10);
       }
      return pole;
   }
   
   public static void vypis_pole(int []pole, int x)
   {
       for(int i=0;i<pole.length;i++)
       {
           System.out.println(pole[i]+" ");
       }
   
   }
   
   public static void vypis_sude(int [] pole, int x)
   {
       for(int i=0; i<pole.length;i++)
       {
           if(pole[i]%2 ==0)
           {
               System.out.println(pole [i]+" ");
           }
       }
   }
   
   
    
    
    public static void main(String[]args)
    {
        Scanner s=new Scanner(System.in);
        int x=s.nextInt();
        int [] pole=vytvor_pole(x);
        
        vypis_pole(pole,x);
        vypis_sude(pole,x);
        
    }
}

Offline

 

#16 09. 01. 2013 21:44

xEro
Příspěvky: 57
Reputace:   
 

Re: java příklad

Měním názor, tak to nakonec funguje přesně!!!!! Špatně jsem to vyzkoušel, ono to vypíše přesně prvky, a hned pod to to vypíše i sudé z těch náhodných!
Mockrát děkuji za tvojí ochotu!

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson