Avatar billede Slettet bruger
18. marts 2007 - 13:58 Der er 14 kommentarer og
1 løsning

Printe indhold af vektor.

Jeg skal have printet indholdet ud af en vektor i C++, som er blevet indtastet af brugeren. Jeg er kommet frem til det her vha. Google, men får compile-fejl. Kan I hjælpe?

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

int main()
{
    int i;

    cout << "Indtast modstandsværdier: " << endl;

    vector<double> modstande;
    double x;
    while(cin >> x)
        modstande.push_back(x);

    for(int i=0;i < modstande.size(); i++)
    {
    std::string strd = modstande.at(i);
    cout << strd.c_str() << endl;
    }

return 0;
}
Avatar billede bertelbrander Novice
18. marts 2007 - 14:01 #1
Det simpleste:

    for(int i=0;i < modstande.size(); i++)
    {
      cout << modstande[i] << endl;
    }
Avatar billede Slettet bruger
18. marts 2007 - 14:35 #2
Hvis jeg har:

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

int main()
{
    int i;

    cout << "Indtast modstandsværdier: " << endl;

    vector<double> modstande;
    double x;
    while(cin >> x)
        modstande.push_back(x);

    for(int i=0;i < modstande.size(); i++)
    {
      cout << modstande[i] << endl;
    }

return 0;
}

Og jeg så indtaster et par modstandsværdier, og derefter lavet break i cmd med ctrl + c, så får jeg intet output?
Avatar billede bertelbrander Novice
18. marts 2007 - 14:38 #3
Du skal afslutte med Ctrl+Z (eller Ctrl+D i Linux/Unix)
Avatar billede Slettet bruger
18. marts 2007 - 14:41 #4
Sker intet ved Ctrl + z. Vi snakker start -> kør -> cmd prompten?
Avatar billede bertelbrander Novice
18. marts 2007 - 14:48 #5
Ja, du kører programmet fra cmd prompten, skriver nogle tal, hvert tal efterfølges af en enter.
Til slut trykker du på Ctrl+Z (på samme tid) og så bør den skrive listen af tal ud.
Avatar billede Slettet bruger
18. marts 2007 - 14:58 #6
Yes, bør, men gør det ikke. Men jeg har nu altid brugt ctrl + c. Det er den danske version af XP.
Avatar billede arne_v Ekspert
18. marts 2007 - 16:44 #7
CTRL/C afbryder programmet

CTRL/Z fungerer som EOF
Avatar billede bertelbrander Novice
18. marts 2007 - 16:54 #8
Du kan evt. afbryde loopen ved at taste noget der ikke er et tal, f.eks. et bogstav.
Men Ctrl+Z bør virke.
Avatar billede Slettet bruger
18. marts 2007 - 17:09 #9
Af uranselige årsager er det Ctrl + x på min maskine? Men nu får jeg i hvert fald printet indholdet ud.
Avatar billede Slettet bruger
18. marts 2007 - 17:21 #10
Men hvis jeg gerne vil arbejde med hvert enkelt element i vektoren, hvordan gøres det så bedst? Ideen er at der skal indtastes R1, R2, R3.. Rn i ohm, og derefter beregnes en Req med formlen:

1/((1/R1)+(1/R2)+(1/Rn))
Avatar billede bertelbrander Novice
18. marts 2007 - 19:55 #11
modstande[i] giver dig den i'the modstands værdi, derfor:

    double sum = 0;
    for(i = 0; i < modstande.size(); i++)
      sum += 1/modstande[i];
    std::cout << "Samlet modstand: " << 1/sum << std::endl;
Avatar billede Slettet bruger
18. marts 2007 - 20:11 #12
Øhm, jeg har:
#include <iostream>
#include <vector>
using namespace std;

int main()
{
    int i;


    cout << "Indtast modstandsværdier: " << endl;

    vector<double> modstande;
    double x;
    while(cin >> x)
        modstande.push_back(x);

    double sum = 0;

    for(i=0; i<modstande.size(); i++)
    {
    sum += 1/modstande[i];
    cout << "Samlet modstand: " << 1/sum << endl;
    }

return 0;
}

Nu, men jeg får printet:
"Samlet modstand: 2
Samlet modstand: 1.333"

.. hvis jeg indtaster 2 og 4 som modstandværdier. Den sidste udregning er god nok, men hvorfor printer den 2?
Avatar billede Slettet bruger
18. marts 2007 - 20:13 #13
Ah, cout skal selvfølgelig ikke være inde i for-løkken. Mange tak bertel. :)
Avatar billede Slettet bruger
23. april 2012 - 20:53 #14
Smid et svar, så lukker vi tråden.
Avatar billede Slettet bruger
02. maj 2012 - 23:02 #15
Lukker tråden.
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