Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C#: char taulujen vlisten merkkien vertailu

Sivun loppuun

Zam [06.11.2010 22:45:05]

#

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.

Teuro [06.11.2010 23:13:02]

#

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.

Zam [06.11.2010 23:29:41]

#

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.

Teuro [06.11.2010 23:34:22]

#

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.

Zam [06.11.2010 23:45:45]

#

Kiitoksia vastauksista, laitakin vastauksen tänne kun olen saanut valmiiksi.

eq [07.11.2010 00:36:01]

#

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.

Zam [07.11.2010 00:56:37]

#

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.

eq [07.11.2010 01:03:34]

#

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.)

Zam [07.11.2010 19:09:53]

#

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.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta