Kezdőoldal » Számítástechnika » Programozás » Ezt a feladatot meg lehet...

Ezt a feladatot meg lehet oldani egyszerűbben mert úgy érzem túl van variálva? C#

Figyelt kérdés

[link]


//Rextester.Program.Main is the entry point for your code. Don't change it.

//Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5


using System;

using System.Text;



namespace Rextester

{

public class Program

{

public static void Main(string[] args)

{

//Your code goes here

int tablePerLine = 10;

int multiplyTableTo = 17;

int InATableTo = 8;

int columns = multiplyTableTo/tablePerLine;

int firstInLine = -(tablePerLine-1), lastInLine = 0;

bool columnsIsRounded = multiplyTableTo%tablePerLine==0;

string space7 = " ";

StringBuilder spaces = new StringBuilder(space7, space7.Length);


if(!columnsIsRounded) ++columns;

for(int i = 0; i < columns; ++i) {

if(i==columns-1 && !columnsIsRounded) {

firstInLine+= tablePerLine;

lastInLine+=multiplyTableTo%tablePerLine;

}

else {

lastInLine+=tablePerLine;

firstInLine+= tablePerLine;

}


for(int j = 1; j <= InATableTo; ++j) {

for(int k = firstInLine; k <= lastInLine; ++k) {

int product = j*k;

int productLength = product.ToString().Length;

int startIndexForRemove = (spaces.Length-1) - (productLength-1);

spaces.Remove(startIndexForRemove, productLength-1);

Console.Write("{0}*{1}={2}" + spaces, k,j,product);

spaces.Replace(spaces.ToString(), space7);

}

Console.WriteLine();


}

Console.WriteLine();

}

}

}

}


2017. okt. 4. 23:33
1 2
 11/20 anonim ***** válasza:

Lemaradt a link, bocs:)

[link]

2017. okt. 5. 19:13
Hasznos számodra ez a válasz?
 12/20 anonim ***** válasza:

Illetve a többi feleslegesnek tűnő dolgot is töröltem, sztem így lenne jóval egyszerűbb:

[link]

2017. okt. 5. 19:36
Hasznos számodra ez a válasz?
 13/20 anonim ***** válasza:
Ó, bocs, asszem a tiedet szerkesztettem, és abból készült egy új verzió.
2017. okt. 5. 19:38
Hasznos számodra ez a válasz?
 14/20 A kérdező kommentje:

"Amúgy az direkt van, hogy a második sornyi táblázatban más az oszlopszélesség"

Igen direkt van és azért mert azt akarom,hogy szépen egymás alá illeszkedjenek ne legyen az egyik sor odébb mint a másik.

2017. okt. 5. 19:58
 15/20 A kérdező kommentje:
Köszi jó lett a megoldásod tetszik is de nem igazán értem a logikát egyes részeiben. Abban vagyok a legrosszabb ha más kódjában kell tudnom meglátni az értelmet.
2017. okt. 5. 20:05
 16/20 A kérdező kommentje:
Már értem.
2017. okt. 5. 20:22
 17/20 A kérdező kommentje:

És mit tehetek azért hogy én is ilyen letisztult megoldásokat tudjak kitalálni?

Egyébként a kódomon 1 óráig szenvedtem úgy,hogy nem kelet a keresőt használnom.

2017. okt. 5. 20:24
 18/20 anonim ***** válasza:

Ismerni kell a nyelvet és framework-öt minél jobban, minél mélyebben.

Tipikusan akkor születnek ilyen gányoló megoldások, mikor valaki nem ismeri a pofon egyszerű lehetőségeket, hanem megpróbálja "ügyesen", "trükkösen" megoldani helyette.


Nagyon tipikus példája, amikor valaki vesszővel elválasztva akar kiírni valamit.

Mi a naív megoldás?


var builder = new StringBuilder();


foreach (var value in myCollection)

{

builder.Append(value);

builder.Append(", ");

}


builder.Remove(builder.Length - 2, 2);


var str = builder.ToString();


Működik? Igen. Ocsmány? Igen. Elromlik ha üres a kollekció? Igen.


Mi a szép megoldás?

var str = String.Join(", ", myCollection);


De ehhez ismerni kell, hogy milyen műveletei vannak a String osztálynak.

Ezerszer láttam az előbbi megoldást, profi fejlesztőktől production kódban.

2017. okt. 5. 20:37
Hasznos számodra ez a válasz?
 19/20 anonim ***** válasza:

És még szebb kis s-sel a string:) Sosem értettem azokat akik azt írják, hogy Int32.Parse az int.Parse helyett.

Én mindenhol az aliasokat használom, amire létezik. Van is rá stylecop szabály. Illetve lehet nagy S, csak akkor Int32 legyen int helyett, de sztem ez csúnya, de a lényeg, hogy egységes legyen.


Egyébként azt is javaslom, hogy ugyanazt a stílust használd a kód formázására mindenhol. Pl. most néhol külön sorban van a kezdő kapcsos zárójel, néhol a sor végén. Néhol raktál szóközt a függvény paraméter listájában a vessző után, néhol nem, stb...

Sőt ami még ezeknél is fontosabb az sztem a változó nevek. 1 kivétellel a lokális változóid kis betűvel kezdődnek, de az "InATableTo" nagy I-vel, mért?:)

2017. okt. 6. 11:56
Hasznos számodra ez a válasz?
 20/20 anonim ***** válasza:

int és string ha változó, paraméter, adattag, tulajdonság.

Int32 és String ha statikus függvény vagy property hívás.

2017. okt. 6. 13:19
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!