Gå til innhold

Anbefalte innlegg

hei folk,

 

trenger hjelp med en oppgave:

 

int[] tall = { 34, 53, 2, 3, 34, 26, 26, 85, 3, 4, 98, 2, 12 };

 

a) skriv ut arrayen

b) skriv ut arrayen baklengs

c) skriv ut annethvert tall i arrayen

d) skriv ut de tallene som er mindre en 10

e) skriv ut alle partall i arrayen.

Lenke til kommentar
Videoannonse
Annonse

Her er noe som kanskje kan brukes som en start:

static void Main(string[] args)
{
   Console.Write("Alle: ");
   int[] tall = { 34, 53, 2, 3, 34, 26, 26, 85, 3, 4, 98, 2, 12 };
   var data = new System.Xml.Linq.XElement("Root", from t in tall let x = t select new System.Xml.Linq.XElement("tall", x));
   var reader = data.CreateReader(System.Xml.Linq.ReaderOptions.None);
   reader.MoveToContent();
   while(reader.NodeType != System.Xml.XmlNodeType.EndElement)
       Console.Write(reader.ReadElementString() + " ");
   Console.Write("\nReversert: ");
   data.Descendants("tall").Reverse().All(rt => { Console.Write(rt.Value + " "); return true; });
   Console.Write("\nAnnethvert: ");
   data.Descendants("tall").Where((ah, ix) => ix % 2 == 0).All(ahv => { Console.Write(ahv.Value + " "); return true; });
   Console.Write("\nMindre enn 10: ");
   data.Descendants("tall").Where(lt => lt.Value.Length == 1).All(sma => { Console.Write(sma.Value + " "); return true; });
   Console.Write("\nDelelig på 2: ");
   data.Descendants("tall").Where(dt => (Convert.ToInt32(dt.Value) & 1) != 1).All(dpt => { Console.Write(dpt.Value + " "); return true; });
   Console.ReadLine();
}

Endret av Paull
Lenke til kommentar

Du bør greie sette isammen noe kode for dette.

Dette er helt grunnleggende i de fleste språk.

Rask hvordan dette ser ut i python.

>>> l = [34, 53, 2, 3, 34, 26, 26, 85, 3, 4, 98, 2, 12]
>>> l
[34, 53, 2, 3, 34, 26, 26, 85, 3, 4, 98, 2, 12]

>>> reverse = l[::-1]
>>> reverse
[12, 2, 98, 4, 3, 85, 26, 26, 34, 3, 2, 53, 34]

>>> step_2 = l[::2]
>>> step_2
[34, 2, 34, 26, 3, 98, 12]

>>> less_10 = [i for i in l if i < 10]
>>> less_10
[2, 3, 3, 4, 2]

>>> even = [i for i in l if not i % 2]
>>> even
[34, 2, 34, 26, 26, 4, 98, 2, 12]

Lenke til kommentar

...
>>> reverse = l[::-1]
...
>>> even = [i for i in l if not i % 2]
...

Deprimerende å se hvor mye enklere det er enn det ville vært i java.

Ta første:

int[] rev = new int[l.length];
int pos = l.length;
for (int i : l) rev[--pos] = i;

... og det er allerede temmelig kompakt.

 

 

 

On topic: alle oppgavene er om iterasjon på liste.

lag annen liste
for hvert element {
  hvis elementet oppfyller kriteriet: legg til i annen liste
}
skriv ut annen liste

 

Ut ifra hvordan du beskriver oppgaven, er det mulig du bare kan skrive ut elementene direkte i stedet for å legge til i ny liste.

 

Annethvert tall kan du finne ved å sjekke om indeksen til tallet kan deles med 2, dvs om resten når man deler tallet med to blir null ( (i % 2) == 0), evt la en boolean skifte verdi ved hver operasjon

boolean add = true;
foreach (int i in list){
  if (add) 
     // legg til nummer;
  add = !add;
}

... burde stemme brukbart med C#-syntaks.

 

Resten burde gå greit.

Endret av hlnd
Lenke til kommentar

C#-varianten er nok nærmere Python enn Java:

 

   var tall = new [] { 34, 53, 2, 3, 34, 26, 26, 85, 3, 4, 98, 2, 12 };

   var baklengs = tall.Reverse();

   var annenhvert = tall.Where((val, index) => index%2 == 0);

   var mindreEnn10 = tall.Where(x => x < 10);

   var partall = tall.Where(x => x % 2 == 0);

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...