Софтуерно Инженерство
Loading...
+ Нов въпрос
DanteSparda avatar DanteSparda 32 Точки

[Homework] C# Basics - Introduction To Programming - Problem {9}

Стигнах до 9 задача и се зачудих какво се иска от нас. Има доста начини за решение а ето за кои имам предвид:
1) С чиста логика пресмятаме, че израза 2, -3, 4, -5, 6, -7, ... завършва с  8, -9, 10, -11 и просто да ги напиша с Console.WriteLine("")
2) Да я реша като математически израз : a, b, a+2, b-2, a+4, b-4, a+6, b-6, a+8, b-8
3) Да завъртя цикъл, което няма как да го направя, но един приятел знае :D
Спрял съм се на ( 2) ) защото реших да упражня int и {} :)

Въпроса ми е накратко: Изисква ли се според вас да мислим гениални начини за решение на прости задачи или всичко е наред щом работи :D

Anonymous:
Duplicate of https://softuni.bg/forum/questions/details/34
Samuil.Petrow avatar Samuil.Petrow 1548 Точки

Спри се по-добре на 3, защото циклите са един от най-важните фундаменти в програмирането като цяло и колкото по-рано ги научиш, толкова по-добре :)

Иначе в случая няма проблем и да изпраскаш многото WriteLine-a, но след 1-2 лекции вече ще е грешно :) :D

2
TsvetinaKoleva avatar TsvetinaKoleva 99 Точки
Препоръчвам ти да се разтърсиш за информация за for цикъл. Ще научиш нещо ново и доста използвано :)

Цък (for)
Цък (if-else)

Не мисля, че задачата ти ще бъде приета за грешна дори да използваш написаното по-горе, но защо пък да не научиш и нещо ново. Успех :)
1
XmUrF avatar XmUrF 363 Точки

Аз също като теб бях учуден в началото. Струваше ми се, че едва ли искат от нас просто да допишем поредицата с Console.Writeline(), така че и аз като теб потърсих други варианти.

След като обаче стигнах до една от следващите задачи, която по същество е същата, но със звездичка, защото поредицата е до 1000, разбрах, че всъщност да, от нас са искали възможно най-простия вариант 1 за тази задача :). Но така или иначе като стигнеш по-трудната, вече ще трябва да го направиш по друг начин, затова почвай от сега.

1
Masovski avatar Masovski 211 Точки
"3) Да завъртя цикъл, което няма как да го направя, но един приятел знае :D" 

Както казва, господин Петров, по-добре е да се спреш на този вариант. Аз искам само да подчертая, че е хубаво, този твой приятел само да те насочи и обясни как работят циклите, но ти сам да се помъчиш и създадеш решение. В интернет има достатъчно ресурс, а ако вече много не се сещаш какво да правиш, винаги можеш да погледнеш в една от темите с домашните тук, във форума. Все пак, прави го в краен случай. Дори и да не успееш да го разбереш напълно сега, като дойде време за урока по цикли, ще имаш една основа, която ще ти помогне по-лесно да усвоиш материала. Успех! : )

 

EDIT: А на въпроса, дали се изискват гениални отговори - не, ако задачата ти работи според изискването, значи решението е вярно. Друг е въпроса, че няма да получиш нови знания, ако го направиш така. 

0
qvorrr avatar qvorrr 3 Точки

Аз ползвах следното решение на задачата.

Ползвам цикъл for, условие и деление с остатък %.

for (int i = 2; i <= 12; i++) {

  if (i % 2 == 0) Console.WriteLine(i);// ако числото няма остатък - значи е положително
  else Console.WriteLine(-i);// ако числото има остатък 
}

2/2= остатък 0 - числото е положително

3/2= остатък 1 - числото е отрицателно

Надявам се да съм помогнал.

0
ViValDam avatar ViValDam 23 Точки

За Явор

2%2=0 - числото е четно

3%2 =1 -числото е нечетно

Нищо общо няма с положително и отрицателно - проверката с % е за четност и нечетност.

Имаш един цикъл който проверява положителните числа 2 ,3,4,5,6,7,8,9,10,11 за четност и нечетност

Ако, числото е четно го записва както си е положително , без знак ,четни са 2,4,6,8,10

Ако числото е нечетно , го записва с минус пред него , нечетни са 3,5,7,9,11

Ето това прави твоята програма. 

1
sasho.damqnov avatar sasho.damqnov 4 Точки

Според мен Явор е имал предвид, че в конзолата нечетните числа трябва да бъдат изкарани като отрицателни (с минус), а не, че са такива в действителност :)

Иначе - няма нужда i да е по-малко от 12, тъй като в случая 12 е число, не позиция. Така ще ти изкарва резултати до 12, а в условието се иска до 10.

В моето решение съм обърнал if и else, съответно в условието на if-а съм писал (k % 2 != 0).

0
Ventsislav avatar Ventsislav 343 Точки
аз съм я решил по 2 начина - http://pastebin.com/uaKpbzBA , вторият е закоментиран , трябва да се разкоментира за да го видиш как работи . Мисля че е хубаво да се реши по един от тези 2 начина . С Console.Writeline пак отговаря на условието , пак е вярно , но там не следва никаква логика ...
0
ivaylo.yanchev.5 avatar ivaylo.yanchev.5 80 Точки

Смятам, че зависи от формАта и знанията на конкретния човек. Веднага ти давам пример.

Тъй като това все пак е курс за основите, в първия урок би било нормално да използваш вариант 1, тъй като само това сме учили в урока. Веднъж след като сме взели цикли и е дадена пак същата задача ще е по-логично да използваш цикъл.

Ако тази задача беше част от проект в работата ти, щеше да потърсиш кой е най-добрият вариант и да използваш него!

Аз примерно използвах друг вариант с цикъл for - цикълът започва от 2 и ако поредното число в низа е четно го отпечатва с "+", ако не - с "-".

За този урок и тази задача всеки от изброените варианти и ОК! И все пак, похвално е, че виждаш няколко варианта за решаване на проблема и разсъждаваш кой е най-добрият, вместо просто да напишеш този, който е най-лесен. Например, можеш да използваш и само 1 променлива: а; (-1)*(а+1); а+2; (-1)*(а+3).

В отговор на конкретния въпрос по принцип - да, трябва да мислим и да прилагаме най-добрия начин, не най-лесния или този, който просто работи.

2
qvorrr avatar qvorrr 3 Точки
Това за (-1)-цата го бях забравил. 
0
ViValDam avatar ViValDam 23 Точки
Все още не - засега е важно да направим работещ алгоритъм - не е важно как е направен !
1
venconi91 avatar venconi91 18 Точки
лично според мен е хубаво да се изпипват нещата а не да е успокоение че просто нещото работи. Ако просто работи лесно може да се скапе. Аз лично го направих това с for цикъл една променлива и умножение по -1^n , при четно n се появява положително число и при нечетно отрицателно като при всяка врътка на цикъла n се увеличава с 1 : ) 
2
qvorrr avatar qvorrr 3 Точки

Точно си мислих да напиша, че това е най-добрия метод за решаване на задачата, но ти ме изпревари.

имаме i=2

2*(-1)^2 = 2

i=3

3*(-1)^3 = -3

0
georgi.b.stoilov avatar georgi.b.stoilov 6 Точки

и аз така го направих. това е редица от числа

power(-1,i)*i, където i = 0 до N-1

пускаш цикъла и си готов.

0
p.tseperski avatar p.tseperski 21 Точки
Ползвай for цикъл. :) Може и с while де, ама for-a в случая е по-удачен защото имаш граници. Не е нищо особено. :)
0