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
Ahoj všichni, mám problém. Dostal jsem ve škole úkol udělat program a nevím si stím rady. Mohl by mi někdo pomoci?
Zadnání:
Napište program, který bude pracovat s maticí NxN. Velikost matice bude odvozena od vstupního textu, čili N = počet znaků vloženého textu. Program bude mít 4 základní funkce:
1. Inicializace matice - Program vyzve uživatele k zadání textu. Poté vytvoří matici NxN a inicializuje ji čísly 1 .. NxN
2. Diagonála - Program provede vynulování hlavní diagonály
3. Dolní trojúhelník - Program vynuluje dolní trojúhelníkovou matici (diagonála musí zůstat nezměněna)
4. Výpis matice - Program vypíše aktuální stav matice
Moje zpracování(dost mozny ze tam mam chyby):
package domaci_ukol;
import java.util.Scanner;
public class Domaci_ukol {
private static String jmenoString;
private static int matice[][];
private static int i;
private static void printMenu() {
System.out.println("Menu:\n"
+ "1 .. Zadat Jmeno\n"
+ "2 .. Inicializace matice\n"
+ "3 .. Diagonala\n"
+ "4 .. Dolni trojuhelnik\n"
+ "5 .. Vypis matice\n"
+ "6 .. Menu\n"
+ "7 .. Konec");
}
// Nacteni INT ze vstupu
private static int readInt() {
int d;
Scanner input = new Scanner(System.in);
d = input.nextInt();
if (d>7)
System.out.println("Volba "+d+". neni definovana");
switch (d){
case 1:
menu1();
break;
case 2:
menu2();
break;
case 3:
menu3();
break;
case 4:
menu4();
break;
case 5:
menu5();
break;
case 6:
printMenu();
break;
case 7:
System.exit(0);
break;
}
return input.nextInt();
}
// Nacteni STRING ze vstupu
private static String readString() {
String input = jmenoString;
i = jmenoString.length();
return input;
}
private static void menu1() {
System.out.println("Zadejte jmeno");
Scanner sc = new Scanner(System.in);
jmenoString = sc.nextLine();
jmenoString = readString();
}
private static void menu2() {
System.out.println("Matice byla inicializovana");
}
private static void menu3() {
System.out.println("Diagonala vynulovana");
}
private static void menu4() {
System.out.println("Dolni trojuhelnik vynulovan");
}
private static void menu5() {
}
public static void main(String[] args) {
printMenu();
readInt();
}
}
Předem děkuji všem za pomoc:)
Offline
package domaci_ukol;
import java.util.Scanner;
public class Domaci_ukol {
private static String jmenoString;
private static int matice[][];
private static int i;
private static void printMenu() {
System.out.println("Menu:\n"
+ "1 .. Zadat Jmeno\n"
+ "2 .. Inicializace matice\n"
+ "3 .. Diagonala\n"
+ "4 .. Dolni trojuhelnik\n"
+ "5 .. Vypis matice\n"
+ "6 .. Menu\n"
+ "7 .. Konec");
}
// Nacteni INT ze vstupu
private static int readInt() {
int d;
Scanner input = new Scanner(System.in);
d = input.nextInt();
if (d>7)
System.out.println("Volba "+d+". neni definovana");
switch (d){
case 1:
menu1();
break;
case 2:
menu2();
break;
case 3:
menu3();
break;
case 4:
menu4();
break;
case 5:
menu5();
break;
case 6:
printMenu();
break;
case 7:
System.exit(0);
break;
}
return input.nextInt();
}
// Nacteni STRING ze vstupu
private static String readString() {
String input = jmenoString;
i = jmenoString.length();
return input;
}
private static void menu1() {
System.out.println("Zadejte jmeno");
Scanner sc = new Scanner(System.in);
jmenoString = sc.nextLine();
jmenoString = readString();
}
private static void menu2() {
System.out.println("Matice byla inicializovana");
}
private static void menu3() {
System.out.println("Diagonala vynulovana");
}
private static void menu4() {
System.out.println("Dolni trojuhelnik vynulovan");
}
private static void menu5() {
}
public static void main(String[] args) {
printMenu();
readInt();
}
}
Předem děkuji všem za pomoc:)Offline
Zdravím,
tentokrát (výjimečně) budu jenom napovídat, psát kód nebudu. Ten budu psát, pokud budeš hodně v nouzi, takže:
1) Kde je metoda Main? Už jí vidím. Jinak Main bych úplně oddělil... Něco ve smyslu:
public class Matice
{
}
public class Domaci_ukol
{
public static void main(String[] args)
{
// ...
}
}2) Nechápu, proč se někde na školách používá pro čtení třída Scanner. Elegantně a správně se to dělá takto:
System.out.print("Text...");
// přiřadíme
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// a dostaneme to z konzole
String filename = in.readLine();3) Má to být domácí úkol, takže všechno budeš mít v jedné třídě Matice. Testy se pak provedou ve třídě Domaci_ukol.
4) Kód se snažíme vždycky odsazovat, aby byl srozumitelnější (takhle je to prasácky napsané).
5) Víš, co znamená klíčové slovo static?
6) Nemůžeme dávat názvy metod jako menu1 - menux. K čemu to vede? Víme potom, co která metoda dělá? Raději použijeme něco ve smyslu: inicializace(), nulovaniDiagonaly().
7) Matice bude privátní třídní proměnná a v konstruktoru jí vytvoříme - to bude ta inicializace, jak máme v zadání.
8) Zkus doplnit algoritmy do funkcí, to znamená: Vynulování hlavní diagonály, vynulování dolní trojúhelníkové matice, výpis matice.
Zkus ten kód dát do té podoby, co jsem napsal. Pak se ozvi. :-)
Offline
Prosimte a jak udelam to aby po zvolení nejake volby v menu se volba udelala a me se zobrazilo menu a mohl jsem pokracovat(zvolit dalsi volbu)?
+nevím jak uděalt matici + plus envím jak udealt aby se vytvarela podle delky Stringu co zadam...ma to byt tak ze zadam String kterej ma 5 znaku a udela se matice 5x5 prvni řádek 1-5 a dal a posledni radek 20-25.
Jsem mega zacatecnik,tak se dodatecne omlouvam za neznalost:/
dík moc
Offline
Píšu z hlavy, nemám tu překladač, podívej se na to. Ale se začátečníkem to bude těžké.
package domaci_ukol;
import java.util.Scanner;
public class Matice
{
private double[][] matice;
private int N;
// Inicializace matice
public Matice(int N)
{
this.N = N;
matice = new double[this.N][this.N];
}
// Kopírovací konstruktor kvůli zachování matice
public Matice(Matice A)
{
matice = A.matice;
}
public void nulovaniDiagonaly()
{
// ... Implementace
}
public void dolniTrojuhelnik()
{
// ... Implementace
}
public void vypisMatice()
{
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
System.out.printf("%9.4f ", matice[i][j]);
System.out.println();
}
}
}
public class Menu
{
public Menu()
{
// Naše matice
Matice m = new Matice(5);
// Naplnění matice ... implementace
do
{
System.out.print("Zadej volbu: ");
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// A dostaneme to z konzole
String d = in.readLine();
switch (d)
{
case 1:
Matice m1 = new Matice(m);
m1.nulovaniDiagonaly();
break;
case 2:
Matice m2 = new Matice(m);
m2.dolniTrojuhelnik();
break;
case 7: System.exit(0);
break;
}
}
while (d != 0);
}
}
public class Domaci_ukol
{
static void Main(string[] args)
{
Menu m = new Menu();
}
}Offline