Kuinkahan tämä nyt kannattaisi tehdä ? Tämä yhdestä C# kirjasta josta teen omaksi iloksi tehtäviä, oppiakseni ohjelmarakennetta paremmin.
Tämä ei tulosta kuin "Erilaiset merkit ovat", en kuitenkaan ottaisi niitä tässä
string tyyppiseen jonoon, kun niitä tuossa käsitellään myöhemmin.
/*Ohjelma, jossa määrittelet kaksi char-tyyppiä olevaa taulukkoa. * joiden koko on 10. Alusta ensin taulukoiden alkiot mielesi mukaan * ja vertaile niitä sitten keskenään siten, että ohjelma tulostaa ne alkiot, * jotka olivat taulukossa erilaisia. */ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace s131Tehtava9 { class Program { static void Main(string[] args) { char[] merkit1 = { 'j', 'a', 't', 'k', 'a' }; char[] merkit2 = { 'a', 'h', 't', 'e', 'a' }; foreach (char merkit in merkit1) { foreach (char kirjaimet in merkit2) { if (merkit != kirjaimet) { char a = kirjaimet; Console.WriteLine("Erilaiset merkit ovat: ", a); } } } } } }
Mod. lisäsi kooditagit.
Pitääkö ohjelman vertailla kaikkia merkkejä toisiinsa, vai riittääkö merkkijononen erilaisuus? Eli juha ja juah pitää onko oikea tulostus ah vai samanlaisia ovat? Jos eka pitää kutinsa, niin vertailet merkkejä toisiinsa ja eron kohdalla lisäät erolistaan merkin, joka oli erilainen. Jos taas järjestyksellä ei ole väliä selviät hiukka helpommalla järjestämällä molemmat taulukot ensin aakkosjärjestykseen ja sen jälkeen tekemällä äskeisen operaation.
Mielestäni pitää verrata onko alkioissa olevat merkit erilaiset ja tulostaa kaikki ne alkion sisällöt.Jos alkiossa olevat merkit on samat, ei niitä tulisi tulostaa.
Kuinkas näitä alkioita voidaan keskenään verata ?
esim. onko merkit1[0] != merkit2[0] olisiko tämä sama kuin vertaisi onko muistipaikkojen koot samat.
Ok eli siis pitää olla samat kirjaimet ja samoilla paikoilla. Vertailuoperaattorit kannattaa lukaista dokumentaatiosta / kurssimateriaalista. Melko varmasti tuo != ei anna missään määrin mielekästä tulosta. String-olio käyttö olisi varmaanki ihan ok ja siellä on melko varmasti tehty fiksut vertailuoperaattorit valmiiksi.
Kiitoksia vastauksista, laitakin vastauksen tänne kun olen saanut valmiiksi.
C#:a en väitä osaavani alkuunkaan, mutta esitän silti muutaman valistuneen arvauksen; pohjana oletus, että C# muistuttaa kieliopiltaan niitä kieliä, joita se muistuttaa syntaksiltaankin.
Jos merkit
on olio (taulukko) tyyppiä char[]
, silloin merkit[0]
viittaa taulukon ensimmäiseen alkioon (tyyppiä char
) - jos vain sellainen on olemassa. C#:ssäkin char
on ns. perustietotyyppi (Javaismi, C#-piireissä engl. simple type, en ole perehtynyt mitä yleisimmin käytetään suomennoksena). Perustietotyypeillä vertailuoperaattori !=
vertaa identiteetin sijaan kahden char
-muuttujan arvoa (eli kirjainta), ja palauttaa näin ollen mielekkään tuloksen (eli ovatko kirjaimet samat). Esimerkiksi siis:
char[] m1 = {'a', 'b', 'c'}; char[] m2 = {'c', 'b', 'a'}; (m1[0] == m2[0]) -> false // (vrt. 'a' == 'c') (m1[1] == m2[1]) -> true // (vrt. 'b' == 'b')
Aloitusviestin ohjelmassa jokaista taulukon merkit1
kirjainta kohti käytiin läpi koko taulukko merkit2
- vaikka tehtävänä on ilmeisesti (tarkentavien viestien perusteella) verrata taulukoissa indeksiltään samoja kirjaimia.
Jep, saan kyllä erikseen nuo tulostettua boolen algebralla vertaamalla indeksejä keskenään ja näin itseasiassa olen parasta-aikaa tekemässäkin,mutta yritän pähkäillä kuinka saan tuon fiksusti silmukkarakenteella.
Tämä C# on javasta ja c-kielestä tehty.syntaksiltaan tietääkseni hyvin samanlainen kuin java.
Zam kirjoitti:
Tämä C# on javasta ja c-kielestä tehty.syntaksiltaan tietääkseni hyvin samanlainen kuin java.
C# ei ole "tehty" Javasta tai C:stä sanan missään merkityksessä - ihan oma kielensä se on, ja periaatteessa tyhjästä aloitettu. Syntaksi on joka tapauksessa hyvin samankaltainen Javan kanssa (josta seuraa syntaksin jonkinasteinen samankaltaisuus myös C:n kanssa) - paitsi toki niiltä kielen osilta, jotka ovat spesifejä C#:lle.
Silmukkarakenteessa tehdään aivan sama vertailu; erona on vain indeksin arvo, joka silmukan sisällä on muuttuja. Periaatteessahan silmukkaa ei tässä tehtävässä tarvitsisi käyttää... (poistuu jakelemasta huonoja neuvoja.)
Artigulointi ei ole vahvimpia puoliani, mutta tarkoitin juuri ohjelmakoodin kirjoittamista c#:ssa verrattuna javaan. Tottahan se on että näissä tulisi tarkana olla mitä sanoo.
Kiitoksia eq sain sen ratkaistua, tosin tein sen yksinkertaisesti if-vertailu-lauseilla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.