Avatar billede Slettet bruger
15. januar 2001 - 23:20 Der er 2 kommentarer og
1 løsning

Ændre en statisk streng til et input.

Hey!

Jeg er en C++ newbie, som prøver at skrive små programmer, som helst viser så mange fejl som muligt, så jeg kan lære så meget som muligt af disse fejl! :)

Jeg har lavet koden:

#include <iostream.h>

void vis_streng(char *streng)
{
  while (*streng)
  cout << *streng++;
}

int streng_laengde(char *streng)
{
  int laengde = 0;

  while (*streng++)
  laengde++;

  return(laengde);
}

void main(void)
{
  char titel[] = \"Pacroon er den sejeste vicevaert!\";
 
  vis_streng(titel);
  cout << \" bestaar af \" << streng_laengde(titel) << \" tegn\\n\";
}

Som kort sagt tæller tegn-længden af >titel<.
Jeg ville gerne lave denne streng om, til at blive et input, så jeg selv kunne skrive en streng, hvor den så talte hvor mange tegn jeg havde skrevet... hvordan gør jeg det?

....must.....leeeaarrrn.... :)
Avatar billede alquesm Nybegynder
16. januar 2001 - 00:40 #1
Hmmm.....du KUNNE prøve det her....har ikke checket om det virker i praksis! :(

#include <iostream.h>

class MinStreng
{
  public:
  char Streng[80];
  int StrengLaengde;
};

MinStreng InputStreng(void)
{
    char key;
    char[80] TempStreng; // Her gemmer vi den midlertidig
    int i = 0;
   
    MinStreng PassClass;

    while(key!=13)
    {
        cin >> key;
        TempStreng[i] = key;
        i++;
    }
    TempStreng[i] = \'\\0\';
    PassClass.StrengLaengde = i;
    for(i = 0; i <= PassClass.StrengLaengde; i++)
    {
        PassClass.Streng[c] = TempStreng[c];
    }
    return PassClass;
}

void main(void)
{
    MinStreng Streng;
    Streng = InputStreng();
    cout << \"Strengen \"\"\" << Streng.Streng << \"\"\" er \" << Streng.StrengLaengde << \" tegn lang!\" << endl;
}


Dette eksempel virker sikkert ikke, men jeg håber at du kan se ideen i det. Du skal lave en løkke som hele tiden putter en tast ind i en chararray. Grunden til at jeg ændrede din char pointer til en char array, er at ellers skal du lave et kald til \"new\" for at allokere hukommelse til strengen, men jeg kan ikke lige se hvordan du kan flytte en tekst/streng fra en array over i en pointer...det KAN lade sig gøre....har gjort det  engang...kan bare ikke finde min kode! :(
Men du skal som sagt putte keys ind i en array og for hver tast(MINUS enter tasten) skal du lægge én til en counter og derved får du strengens længde. Du skal også huske at lægge en \"Terminating nullzero\" til slutningen af strengen, da computeren ellers ikke kan lide at printe den med cout eller andre outputs...jeg undersøger lige noget mere og ændrer nok lidt i denne her kode så du får en som virker! ;)

Håber at det her giver dig et fingerprej om hvordan du KAN gøre det. Min kode kan uden tvivl optimeres MEGET, og det kan sikkert også gøres lettere, men det her er mit midlertidige bud! :)

Ses, jeg kigger lige noget mere på det...
Avatar billede borrisholt Novice
16. januar 2001 - 08:54 #2


Så vidt jeg kan læse på dit spørgsmål er spørgsmålet hvordan du læser en værdi ind fra skærmen ... til det formål skal du bruge cin kommandoen ...

prøv det her :

#include <iostream.h>

void vis_streng(char *streng)
{
  while (*streng)
  cout << *streng++;
}

int streng_laengde(char *streng)
{
  int laengde = 0;

  while (*streng++)
  laengde++;

  return(laengde);
}

void main(void)
{
  //char titel[] = \"Pacroon er den sejeste vicevaert!\";
    char titel[80];

 
  cout << \"intast en steng: \";
  cin >>  titel;
  cout << \" bestaar af \" << streng_laengde(titel) << \" tegn\\n\";
  vis_streng(titel);
  cin;
}


Jens B
Avatar billede Slettet bruger
10. februar 2001 - 11:30 #3
Hey cool.. og tak for det..!
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