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
 1/20 A kérdező kommentje:
Miket csinálok hülyén benne és ha ez béna vagy túlvariált akkor hogyan nézne ki egy első osztályú verzió? Leírod vagy elmagyarázod pls.
2017. okt. 4. 23:37
 2/20 anonim ***** válasza:

Lehetne rajta egyszerűsíteni, tény, de az is kérdés,

hogy milyen optimalizációt akarsz? Pl dupla for-on

belül inteket deklarálni szvsz nem épp hatékony meg-

oldás. Persze egy helloworld szintű programnál ez még

elmegy, de ha ilyennel van tele egy pár száz oldalas

kód, lehetnek érdekességek :)

2017. okt. 5. 03:25
Hasznos számodra ez a válasz?
 3/20 anonim ***** válasza:

És mi volt a feladat?

Akármi is ez, biztos, hogy túl van tolva.

2017. okt. 5. 07:39
Hasznos számodra ez a válasz?
 4/20 anonim ***** válasza:

Gondolom egy szorzótábla kiíratása.


A szóközökkel szenvedés helyett használd a Write beépített tagolását, pl. így:


Console.Write("{0,10}", i);


Az oszlopok számolgatása helyett pedig inkább indíts egy harmadik for ciklust.

2017. okt. 5. 11:28
Hasznos számodra ez a válasz?
 5/20 A kérdező kommentje:

"Az oszlopok számolgatása helyett pedig inkább indíts egy harmadik for ciklust"

Ezt nem értem hogy gondolod három for ciklusom van de számolgatások nélkül egy harmadik for al nem tudom kitalálni hogy hogyan képzeled.

De nagyon kíváncsivá tettél kérlek mutasd be. :P


A többi válaszadónak is kösz nem gondoltam volna hogy a Write metódussal lehet így tabolni.

2017. okt. 5. 11:55
 6/20 anonim ***** válasza:
A belinkelt kód amúgy nem is működik, IndexOutOfRangeException-nel elszáll a második sornál.
2017. okt. 5. 13:46
Hasznos számodra ez a válasz?
 7/20 anonim ***** válasza:

Amúgy ennyi a kód:

using System;


class Program

{

static void Main()

{

for (int i = 1; i <= 10; i++)

{

for (int j = 1; j <= 10; j++)

{

Console.Write($"{i}*{j}={i * j}\t");

}


Console.WriteLine();

}

}

}

2017. okt. 5. 13:49
Hasznos számodra ez a válasz?
 8/20 A kérdező kommentje:
Előző az enyém mást is csinál szal nem ugyanaz. Megadható hogy egy szorzótáblán belül meddig menjünk és az is hogy hányas szorzótáblákig irassuk ki a szorzótáblákat és még olyat is csinál hogy a kiíratásokat pontosan egymás alá illeszti. Ez azt jelenti hogy nem lesz eltolva egy két karakterrel a kiírások. Nehéz elmagyarázni de nekem lefordul és működik nem értem neked mér nem jó.
2017. okt. 5. 18:29
 9/20 anonim ***** válasza:

"és még olyat is csinál hogy a kiíratásokat pontosan egymás alá illeszti"


Ez nem igazán működik a kódodban. Ha az InATableTo értékét 12-re állítom teljesen szétcsúszik...

2017. okt. 5. 18:41
Hasznos számodra ez a válasz?
 10/20 anonim ***** válasza:
Amúgy az direkt van, hogy a második sornyi táblázatban más az oszlopszélesség? Mert ha nem, sztem így jobb lenne és még a stringbuilderes varázslásra sincs szükség, ami egyébként is eléggé nem hatékony szerintem.
2017. okt. 5. 19:13
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!