Gå til innhold

Skoleoppgave som driver meg gal!


Anbefalte innlegg

Skrevet

Hei,

 

Jeg har fått en oppgave som jeg må løse - og jeg vet ikke engang hvor jeg skal begynne. Har gjort alle de andre deloppgavene; men denne får jeg bare ikke til!

 

Oppgave 2:

Skriv et program som skriver ut følgende:

*

*****

*********

*************

*********

*****

*

 

På arket er de formet som en "stjerne" i mangel på et bedre ord.

Videoannonse
Annonse
Skrevet

#include <iostream>

using std::cout;
using std::endl;

int main (int argc, char **argv)
{
  cout << "*" << endl;
  cout << "*****" << endl;
  cout << "*********" << endl;
  cout << "*************" << endl;
  cout << "*********" << endl;
  cout << "*****" << endl;
  cout << "*" << endl;
}

:D :D :D

 

Eventuelt kan du løse det på en mer elegant måte med noen for-løkker. :)

Skrevet

Jeg blander sammen en hel haug av ulike kommandoer; og det ender med at intet virker.

 

Fikk til de første oppgavene etter noen timer; men jeg kan ikke si at jeg har teken på det.

 

Uansett. Takk alfred! Skal ikke levere inn ditt forslag kliss identisk. Vedder penger på at Grusomme-Geir, egentlig heter Helge, og tilfeldigvis er lærer på HIVE!

Skrevet (endret)

Jeg blander sammen en hel haug av ulike kommandoer; og det ender med at intet virker.

 

Fikk til de første oppgavene etter noen timer; men jeg kan ikke si at jeg har teken på det.

 

Uansett. Takk alfred! Skal ikke levere inn ditt forslag kliss identisk. Vedder penger på at Grusomme-Geir, egentlig heter Helge, og tilfeldigvis er lærer på HIVE!

Du får gi meg hundre kroner på skolen i morgen. Jeg går tredje klasse nå. Jeg var også fadder for 11 stykker fra dataklassen.

 

Opggaven er for C, ikke C++, og etter det jeg husker kan du ikke bruke mer enn en stjerne eller et kryss i en printf.

 

Du kan derfor enkelt løse den slik:

 

#include <stdio.h>

const char* msg = 
"\
  *\n\
 ***\n\
*****\n\
*******\n\
*****\n\
 ***\n\
  *\n";

int main(int argc, char** argv)
{
 printf("%s", msg);
 return 0;
}

Endret av GeirGrusom
Skrevet

Okay. Endelig kom den frem på skjermen!

 

 

 

#include <stdio.h>

 

const char* msg =

"\

*\n\

***\n\

*****\n\

*******\n\

*****\n\

***\n\

*\n";

 

int main(int argc, char** argv)

{

printf("%s", msg);

getchar();

return 0;

}

Skrevet (endret)

Som The Maister nevner så er denne oppgaven ikke om og hardkode en stjerne form.

Handler om et par for loops,stjerner har et visst mønster 1,5,9,13,9...

Da blir for loopen sånn opp til 13,for (int i = 1; i < 14; i+=4)

Vil ikke skrive den ferdig i C++ p.g.a skoleoppgave skriver den i python,da kan den skrive om til C++ rimlig greit.

for asterics  in range(1,13,4):
   print '*' * (asterics)
for asterics in range(13,0,-4):
   print '*' * (asterics)

Endret av SNIPPSAT
Skrevet

en liten digresjon:

dette er en ufattelig tåplig oppgave om den ikke skal løses med løkker eller rekursivt.

Skrevet

Uansett, er det ikke angitt i oppgaveteksten (eller i konteksten, hvis oppgavesamlingen heter "Løkker" f.eks), så er vel et tåpelig svar så godt som noe, bare programmet gjør det det skal.

Skrevet (endret)

Løsningsforslaget var uten løkker da jeg tok dette kurset. Husk at dette er det første programmeringskurset (5 stdp) de tar, og forventningene er veldig lave. Jeg leverte en besvarelse som brukte løkker, men når jeg så løsningsforslaget, så var det egentlig bare bortkastet tid.

Endret av GeirGrusom
Skrevet

skjønner, tror jeg hadde en veldig lignende oppgave i mitt andre kurs på UiO som måtte løses med rekursivitet.

 

men ellers så er det vel ikke veldig høye forventninger til første programmeringskursene man tar

Skrevet

#include <stdio.h>

int main(void) {
   for (int i = 0; i < 7; i++) printf("%*c%s\n", i < 4 ? 7-i : i+1, ' ', "*************" + (i < 4 ? (12-i*2) : (i*2)));
   return 0;
}

 

Output:

      *
     ***
    *****
   *******
    *****
     ***
      *

Skrevet

Slenger jeg på en getchar(); på den, får jeg opp et tall, men jeg ser ikke en vakker stjerne.

 

 

Jeg kan strekke meg til lunsj!

Det er fordi getchar henter inn int-verdien til char. Du må gjøre om int-verdien til en char.

Skrevet (endret)

#include <stdio.h>

int main(void) {
   for (int i = 0; i < 7; i++) printf("%*c%s\n", i < 4 ? 7-i : i+1, ' ', "*************" + (i < 4 ? (12-i*2) : (i*2)));
   return 0;
}

 

Output:

      *
     ***
    *****
   *******
    *****
     ***
      *

 

Høhø. Skikkelig lesbart det der ja ;)

 

Litt mindre lesbar printf:

printf("%*c%s\n", i < 4 ? 7-i : i+1, ' ', &(i < 4 ? (12-i*2) : (i*2))["*************"]);

Endret av TheMaister

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...