- Liittynyt
- 23.12.2016
- Viestejä
- 674
En saa tuota hetu-juttua eteenpäin, olisko jollain hyviä vinkkejä tai ratkaisua?
Follow along with the video below to see how to install our site as a web app on your home screen.
Huomio: This feature may not be available in some browsers.
En saa tuota hetu-juttua eteenpäin, olisko jollain hyviä vinkkejä tai ratkaisua?
Kommentti "Ei vaan toimi" -ei oikein kerro meille yhtään mitään.En nyt saa sitä toimimaan oikein. No pitää vaan pähkäillä jos sitä jotain keksis.
En saa tuota hetu-juttua eteenpäin, olisko jollain hyviä vinkkejä tai ratkaisua?
const checkSum = hetu[10];
Voisko joku autellla tuon oman ongelman kanssa vielä?
Pliis, tarviin siitä checkSumista sitten 3 eri alerttia.
// tämä on vertailu jota sinun pitää käyttää if-elsessä
a === 10
b === "A"
c === "-"
// muista launausmerkit merkkijonoissa!
// ei näin koska tämä on assignment joka asettaa muuttujaan arvon:
a = 10
Voisiko toimia jotenkin näin sitten tuon checksumin saannin jälkeen:
if(checkSum = +)
Kiitokset raadille hyvistä vastauksista ja siitä että viitsitte etsiä molemmat virheet. Välillä omat yritelmät liipannut läheltä, olen kuin sokea kana yrittänyt löytää oikaa kombinaatiota. mm olen kokeillut parametrien (sana1, sana2) lisäämistä funktiokutsuun ja return komennon lisäämistä funktion loppuun, mutta en tajunnut kokeilla molempia yhtä aikaa. Tämä selvitti kyllä hyvin!
Tuossa on linkki toimivaan versioon.
Juu tuo toimii, koska paluuarvona on string, void haluaa että mitään ei palauteta jolloin tuo ensimmäinen yritys olis ollut oikein
using System;
namespace sanaVRT
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Kirjoita sana 1:");
string sana1 = Console.ReadLine();
Console.WriteLine("Kirjoita sana 2:");
string sana2 = Console.ReadLine();
sanaVRT();
}
static void sanaVRT()
{
if (sana1.Length > sana2.Length)
{
Console.WriteLine("Sana 1 on pidempi");
}
else if (sana2.Length > sana1.Length)
{
Console.WriteLine("Sana 2 on pidempi");
}
if (sana2.Length == sana1.Length)
{
Console.WriteLine("Sanat ovat yhtä pitkiä");
}
}
}
}
static void funktio(string s1, string s2)Eli periaatteessa
Juuri kun luulin ymmärtäneeni jotain....
Kysymys 1:
Onko niin että tämä esimerkki "pitäisi" toimia ilman palautettavia parametreja koska itse lopputuloksen tulostus tapahtuu funktion toimesta?
Jos näin on niin millä saan funktiolle tiedon mitä nuo sana 1 ja 2 ovat? Eli nuo herjat pois? (siis muuten kuin määrittelemällä parametrit + return;.
Kysymys2:
Miten tämä funktio pitäisi toteuttaa jos halutaan palauttaa tulos, esim "pidempi" ja hoitaa tulostus pääohjelmassa. Se on varmaan se mitä alunperin hainkin, tällä pääohjelman ja funktion yhdistelmällä.
return "test";
Console.Write(funktio("a", "b");
Funktio tuntee vain omat parametrinsa, omat muuttujansa ja (sen kannalta) globaalit muuttujat, joita ei nyt ole yhtään. Tuossa sana1 ja sana2 on määritelty vain main-funktiossa, joten sanaVRT ei tiedä niistä mitään. Ne pitää siis antaa sille parametreina.Eli periaatteessa
Juuri kun luulin ymmärtäneeni jotain....
disclaimer: tämä ratkaistiin jo aiemmin, mutta jatketaanpa nyt sitten vielä...
Koodi:using System; namespace sanaVRT { class Program { static void Main(string[] args) { Console.WriteLine("Kirjoita sana 1:"); string sana1 = Console.ReadLine(); Console.WriteLine("Kirjoita sana 2:"); string sana2 = Console.ReadLine(); sanaVRT(); } static void sanaVRT() { if (sana1.Length > sana2.Length) { Console.WriteLine("Sana 1 on pidempi"); } else if (sana2.Length > sana1.Length) { Console.WriteLine("Sana 2 on pidempi"); } if (sana2.Length == sana1.Length) { Console.WriteLine("Sanat ovat yhtä pitkiä"); } } } }
Kokeilin aiemmin tälläista jossa funktion alustuksessa on void ilman parametreja. mutta sain virheitä joissa se herjasi ettei (funktio) tunne sana 1 ja sana 2 muuttujia?
https://repl.it/@Khots0/EagerRoundQbasic
Tämä antoi seuraavat virheet:
main.cs(21,17): error CS0103: The name `sana1' does not exist in the current context
main.cs(25,22): error CS0103: The name `sana2' does not exist in the current context
main.cs(29,17): error CS0103: The name `sana2' does not exist in the current context
Kysymys 1:
Onko niin että tämä esimerkki "pitäisi" toimia ilman palautettavia parametreja koska itse lopputuloksen tulostus tapahtuu funktion toimesta?
Jos näin on niin millä saan funktiolle tiedon mitä nuo sana 1 ja 2 ovat? Eli nuo herjat pois? (siis muuten kuin määrittelemällä parametrit + return;.
Kysymys2:
Miten tämä funktio pitäisi toteuttaa jos halutaan palauttaa tulos, esim "pidempi" ja hoitaa tulostus pääohjelmassa. Se on varmaan se mitä alunperin hainkin, tällä pääohjelman ja funktion yhdistelmällä.
Jees, Kysymys1 selvisi näin. Tattista!static void funktio(string s1, string s2)
jolloin tulostat siellä funktiossa mitä ikinä tulostatkaan
static string funktio(string s1, string s2)
Se on se paluuarvo jonka funktio palauttaa, ja se on string. Eli funktiossa ennen loppua määrittelet return jotain, ja se on sitten se testF("nimi",42) arvo.Nyt tulee niin paljon informaatiota että täytyy vähän miettiä.
Kysytään nyt vielä tästä: eli miten tilanteessa jos funktion parametreiksi määritellään kaksi eri tyyppiä (string & int), esim "static string testF(string name, int age)" , onko tuota funktiota edeltävä datatyyppi edelleen string? ja mikä merkitys sillä on?
Kiitoksia! Tämän idean avulla pääsen eteenpäin parissa muussa testiprojektissa.C# Online Compiler | .NET Fiddle
Test your C# code online with .NET Fiddle code editor.dotnetfiddle.net
Tuossa esimerkki miten voisi tulostaa pääohjelmassa, vertailu voisi hyvin käydä mainissa eikä omana funkkarina. Joku osaa varmaan toteuttaa fiksumman tavan
Se on se paluuarvo jonka funktio palauttaa, ja se on string. Eli funktiossa ennen loppua määrittelet return jotain, ja se on sitten se testF("nimi",42) arvo.
Tossa nyt eka google linkki funktioista:
Niin kuin tuossa yllä mainittiin:Functions in C
Functions in C - A function in C is a block of organized reusuable code that is performs a single related action. Every C program has at least one function, which is main(), and all the most trivial programs can define additional functions.www.tutorialspoint.com
Console.Write(funktio("a", "b");
Eli konsoliin tulostetaan funtktio "funktio" paluuarvo.
E: Laitoin C funtkiosta esimerkin, se on kuitenkin simppeli ja toimii aikalailla samalla tavalla kielestä riippumatta.
Se mikä tässä esimerkissä edelleen askarruttaa on se että, nyt kun käyttäjä määritteli pääohjelmassa muuttujat sana1 ja sana2.C# Online Compiler | .NET Fiddle
Test your C# code online with .NET Fiddle code editor.dotnetfiddle.net
Koodi:using System; public class Program { public static void Main() { string sana1 = TakeInput("Anna eka sana: "); string sana2 = TakeInput("Anna toka sana: "); CompareInputLength(sana1, sana2); } static string TakeInput(string outputText) { Console.WriteLine(outputText); string input = Console.ReadLine(); //Console.WriteLine(input); return input; } static void CompareInputLength(string firstVal, string secondVal) { if (firstVal.Length > secondVal.Length) { Console.WriteLine("Eka pidempui"); } if (firstVal.Length < secondVal.Length) { Console.WriteLine("toka pidempui"); } else { Console.WriteLine("yht pitke"); } } }
Nyt tulee niin paljon informaatiota että täytyy vähän miettiä.
Kysytään nyt vielä tästä: eli miten tilanteessa jos funktion parametreiksi määritellään kaksi eri tyyppiä (string & int), esim "static string testF(string name, int age)" , onko tuota funktiota edeltävä datatyyppi edelleen string? ja mikä merkitys sillä on?
JA sorry että jankkaan (muille) selvästä asiasta, mutta en pääse eteenpäin ellen ymmärrä tätä tärkeää asiakokonaisuutta.
Se mikä tässä esimerkissä edelleen askarruttaa on se että, nyt kun käyttäjä määritteli pääohjelmassa muuttujat sana1 ja sana2.
Kuitenkin funktioon: CompareInputLenght laitoit parametreiksi täysin tuntemattomat "firstVal" ja "secondVal" Miksi näin?
Ymmärsin eilisen perusteella, että nuo sulkuihin tulevat funktion parametrit on ikäänkuin input arvoja pääohjelmalta. mutta ne ilmeisesti voi olla mitä vain, vaikka tyhjiä vasta nimettyjä muuttujia?
Eli miksi et käyttänyt sana1 ja sana2 muuttujia joihin oli jo tuo lukujono syötetty. Tai mistä tuo CompareInputLenght - funktio tietää mitä nämä firstval ja secondval muuttujat sisältää jos niitä ei mainita pääohjelmassa?
JA sorry että jankkaan (muille) selvästä asiasta, mutta en pääse eteenpäin ellen ymmärrä tätä tärkeää asiakokonaisuutta.
Kaipa se koko kanta/kollatio pitää muuttaa utf-8 muotoon.Ei nyt varsinaisesti ohjelmointikysymys mutta SQL kysymys.
Miten SQL Developerissa saa kyselyn tuloksen tuottamaan ääkkösiä?
Kyselyssä on sarake, jonka nimesin "MÄÄRÄ". Kyselyn tuloksiin tulee "MÄÄRÃ".
Merkistöihin kai tämä jotenkin liittyy, mutta en keksi mistä tuo vaihdetaan..
Koneessa Win 10, Windowsin näyttökielenä English (US) ja muut asetukset suomea. SQL Developerissa on asetuksissa "Encoding" UTF8.
Ei tuo varsinaisesti haittaa mitään mutta minua ärsyttää
Ei ole siitä kiinni, vanhalla Win 7 koneella toimii ääkköset oikein. Ja jos en väärin muista niin Toad antaa ääkköset oikein.Kaipa se koko kanta/kollatio pitää muuttaa utf-8 muotoon.
How to convert an entire MySQL database characterset and collation to UTF-8?
How can I convert entire MySQL database character-set to UTF-8 and collation to UTF-8?stackoverflow.com
Mikä kanta ja mikä on sen merkistö?Ei nyt varsinaisesti ohjelmointikysymys mutta SQL kysymys.
Miten SQL Developerissa saa kyselyn tuloksen tuottamaan ääkkösiä?
Kyselyssä on sarake, jonka nimesin "MÄÄRÄ". Kyselyn tuloksiin tulee "MÄÄRÃ".
Merkistöihin kai tämä jotenkin liittyy, mutta en keksi mistä tuo vaihdetaan..
Koneessa Win 10, Windowsin näyttökielenä English (US) ja muut asetukset suomea. SQL Developerissa on asetuksissa "Encoding" UTF8.
Ei tuo varsinaisesti haittaa mitään mutta minua ärsyttää
Minkä takia seuraava argumentti on true? Eikö ! muuta tuon ensimmäinen false:ksi, jolloin ohjelman pitäisi siirtyä seuraavaan if ehtoon kun molemmat eivät täyty?
luku a on 100
function luku(a) {
if ( !a % 100 == 0 && a % 4 == 0 ) {
message = "totta";
!(a % 100 == 0) ehkäpä?
Oracle kanta ja merkistö UTF8. Clientissa selvästi oli ongelma.Mikä kanta ja mikä on sen merkistö?
Vähän kannasta riippuen voi joutua säätämään eri paikoista mutta oletan että käytät developerilla jdbc:tä.
"MÄÄRÃ" tulee silloin kun utf8 dataa käytetään kuten latin1/vastaavat, 2 byten mittainen utf8 Ä näkyy silloin kahtena merkkinä.
Muunnos voi tapahtua server-client välillä ja sen jälkeen vielä client- näyttö...
Miten onnistuisi?
const tester = <T>(data: T) => Promise.resolve(data);
const foo = { bar: 123 };
tester(foo).then(data => console.log(data));
Toimii, kiitti. Juuri se mitä hain.Toimisko tällainen generic:
JavaScript:const tester = <T>(data: T) => Promise.resolve(data); const foo = { bar: 123 }; tester(foo).then(data => console.log(data));
Nyt se päättelee T:n automaattisesti ja then:n sisällä oleva data saa oikean tyypin.
draw=0 #Ensimmäinen kortti on vuoronumeroltaa 0, koska myös korttipakan pienin kortti on arvoltaan 0
poang=0
for card in range(13):
k=random.choice(kortlek) #valitsee pakasta kortin
kortlek.remove(k) #poistaa pakasta käytetin kortin
if k==draw: #jos nostettu kortti vastaa sen sijalukua, loppuu peli siihen ja uusi kierros alkaa
break
elif draw==12: #jos pääsen loppuun asti pelissä saamatta vuorolukua vastaavaa korttia, saan yhden pisteen"
poang=poang+1
else: #jos nostettu kortti ei vastaa vuoronumeroa, otan uuden kortin
draw=draw+1
print poang #tulostaisi 10 000 kierroksen jälkeen voittojen määrän
Laitat vaikka for-silmukan ennen tuota luupattavaa koodia tyyliin for luuppi in range(10000):
File "C:\Python27\lib\random.py", line 274, in choice
return seq[int(self.random() * len(seq))] # raises IndexError if seq is empty
IndexError: list index out of range
Yritetty on ja se ei valitettavasti suostu toimimaan:
import random
rows=range(1,9) #generates the row number
columns=range(97,97+8) #generates the column number
hot=0 #times threat took place
icke_hot=0 #times threat did not take place
for spel in range(10000):
white_row=random.choice(rows) #Gets position in row
black_row=random.choice(rows)
white_column=random.choice(columns) #Gets position in column
black_column=random.choice(columns)
if white_column==black_column or white_row==black_row: #checks if rook can attack
hot=hot+1
elif white_column==black_column or white_column==black_column+1 or white_column==black_column-1:
hot=hot+1
#checks if queen can attack
elif white_row==black_row or white_row==black_row+1 or white_row==black_row-1:
hot=hot+1
#checks if queen can attack
else:
icke_hot=icke_hot+1
print "Threats took place in", hot/100.0,"% of cases"
print hot
print icke_hot
Kortti-casen sain toimimaan, mutta vielä viimeisellä kysymyksellä haluaisin vaivata (Python 2.7). Alla olevan koodin tulisi simuloida shakkilautaa ja koodin tulisi laskea todennäköisyydet sille, että satunnaisiin paikkoihin asetetut a) kaksi tornia ja b) kaksi kuningatarta uhkaisivat toisiaan jos simulaatio ajettaisiin 10 000 kertaa. Olen saanut alla olevan pätkän rakennettua, mutta siinä on pari ongelmaa.
* Ensinnäkin nappulat eivät saisi osua samaan ruutuun.
* Kuningattaren liikerata on laskettuna väärin
Onko neuvoja, miten koodia muuttaa jotta yllä olevat kaksi asiaa saisi toimimaan? Mieluusti niin, että alkuperäistä koodia muokattaisiin mahdollisimman vähän.
Koodi:import random rows=range(1,9) #generates the row number columns=range(97,97+8) #generates the column number hot=0 #times threat took place icke_hot=0 #times threat did not take place for spel in range(10000): white_row=random.choice(rows) #Gets position in row black_row=random.choice(rows) white_column=random.choice(columns) #Gets position in column black_column=random.choice(columns) if white_column==black_column or white_row==black_row: #checks if rook can attack hot=hot+1 elif white_column==black_column or white_column==black_column+1 or white_column==black_column-1: hot=hot+1 #checks if queen can attack elif white_row==black_row or white_row==black_row+1 or white_row==black_row-1: hot=hot+1 #checks if queen can attack else: icke_hot=icke_hot+1 print "Threats took place in", hot/100.0,"% of cases" print hot print icke_hot
En tiedä paljoakaan shakista (tai ohjelmoinnista), mutta eikö tuo kuvauksesi sovi paremminkin kuninkaan liikkeisiin kuin kuningattaren?Olettaen, että nuo a ja b ovat tosiaan erilliset tapaukset, niin sinun tulisi testata ne erikseen, nyt lisäilet 'osumia' s.e. molemmat variaatiot ovat mukana. Eli tarkista_osuuko_kuningatar tms suattaisi olla hyvä ajatus. (ruutupaperilla tai excelillä mietit miten kuningatar liikkuu... Yksi suunta +1 molempiin akseleihin, toinen +1, - 1 jne.)
En tiedä paljoakaan shakista (tai ohjelmoinnista), mutta eikö tuo kuvauksesi sovi paremminkin kuninkaan liikkeisiin kuin kuningattaren?
DarryIG avasikin stackoverflowssa noita ongelmia tuossa (mutta ymmärsin, että kaipaat hieman lisää selkokieltä?).
Olettaen, että nuo a ja b ovat tosiaan erilliset tapaukset, niin sinun tulisi testata ne erikseen, nyt lisäilet 'osumia' s.e. molemmat variaatiot ovat mukana. Eli tarkista_osuuko_kuningatar tms suattaisi olla hyvä ajatus. (ruutupaperilla tai excelillä mietit miten kuningatar liikkuu... Yksi suunta +1 molempiin akseleihin, toinen +1, - 1 jne.)
Lisäksi huomio siitä, että voit keksiä paikat ottamalla yhden 64:sta kolumni-rivi-parista ja sitten seuraavan jäljelle jäävistä 63:sta ratkaisee tuon arpomisongelman.
Selkokieltä kaipaisin ja mielellään selkeää koodinpätkääkin. Sen verran aloittelija vielä, että en kovin helposti saa ajatuksia muunnettua koodiksi.
Tavallaan nuo kaksi tapausta (torni & kuningatar) voi nähdä yhtenä tapauksena, koska kuningattaren liikkeet ovat samat kuin tornin, mutta lisäyksenä ristisuunnassa liikkumiset. Eli tavallaan tuon tornin voi tästä ajatusleikistä jättää pois.
Miten tuon kuningattaren liikkeen saisi toteutettua kunnolla? Seinä voi akselilla tulla vastaan heti tai vasta monen ruudun päästä.