Avatar billede laguha Nybegynder
01. marts 2009 - 23:57 Der er 5 kommentarer

Centrer text output i c++?

Hej eksperter

Jeg er lige begyndt og programmere og mangler en måde hvor på man kan centrer text, lign. det her?


          *
          **
        ***
          **
          *

Hvordan gør man det?
Avatar billede bertelbrander Praktikant
02. marts 2009 - 00:05 #1
Hvis det er i konsol, er der ikke rigtigt andet at gøre end at gøre det manuelt, dvs. udskrive et passende antal mellemrum inden det du vil have centreret.
Avatar billede laguha Nybegynder
02. marts 2009 - 08:56 #2
Okay, men så kan det være at I kan hjælpe mig med følgende.

Programmet skal indlæse et stjerne_antal feks 5, output'et skulle gerne komme til at se sådan ud.

http://ridderb.org/Eksperten.tiff

Og jeg skal bruge dobbelt for løkke.

Nogen der kan hjælpe.?
Avatar billede bertelbrander Praktikant
02. marts 2009 - 19:25 #3
Det ligner en simpel skoleopgave med et par simple for-loops og lidt udregninger. Hvis du gør et ærligt forsøg på at løse opgaven, men har problemer, så post det du har, og lad os hjælpe dig færdig.
Avatar billede laguha Nybegynder
03. marts 2009 - 07:22 #4
Jeg har lavet den første halvdel således:

#include <iostream>
#include <iomanip>
using namespace std;

int main ( void )
{   
   
    int antal_stjerner, n, taeller, m;
   
    cout << " Indtast antal stjerner " << endl;
    cin >> antal_stjerner;
    cout << endl;
   
    for(taeller = 1, m = (antal_stjerner + 5); antal_stjerner >= taeller; taeller++, m--)
    {
        cout << setw(m);

        for(n = taeller; n > 0; n--)
        {
            cout << " *";
        }
       
        cout << endl;
    }
   
   
    return 0;
}

Den nederste del har jeg lavet sådan:


#include <iostream>
#include <iomanip>
using namespace std;

int main ( void )
{   
   
    int antal_stjerner, n, m;
   
    cout << " Indtast antal stjerner " << endl;
    cin >> antal_stjerner;
    cout << endl;
   
    for(m = 5; antal_stjerner > 0; antal_stjerner--, m++)
    {
   
        cout << setw(0+m);
       
        for(n = antal_stjerner; n > 0; n--)
        {
            cout << " *";
        }
           
        cout << endl;
    }
   
   
    return 0;
}


Jeg har fundet ud af hvordan man laver indrykning, godt nok ikke som jeg havde forstillet mig, problemet er at man ikke kan rykke en "halv karakter", men skidt nu med det. Det jeg ønsker er nu at kunne gennemskue hvordan jeg skal kombinere de to stykker kode, så jeg får som beskrevet.?
Avatar billede bertelbrander Praktikant
03. marts 2009 - 20:53 #5
Der er den hurtige måde:
#include <iostream>
#include <iomanip>
using namespace std;

int main ( void )
{
    int antal_stjerner, n, taeller, m;

    cout << " Indtast antal stjerner " << endl;
    cin >> antal_stjerner;
    cout << endl;

    for(taeller = 1, m = (antal_stjerner + 5); antal_stjerner >= taeller; taeller++, m--)
    {
        cout << setw(m);

        for(n = taeller; n > 0; n--)
        {
            cout << " *";
        }

        cout << endl;
    }

    antal_stjerner--;
    for(m = 5; antal_stjerner > 0; antal_stjerner--, m++)
    {

        cout << setw(2+m);

        for(n = antal_stjerner; n > 0; n--)
        {
            cout << " *";
        }

        cout << endl;
    }
}

Man kan naturligvis også forsøge at bygge de to loops sammen til en...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester