nybörjaren behöver hjälp igen =) C++

Permalänk

nybörjaren behöver hjälp igen =) C++

hej,
hopplösa distansstudier där man inte har någon att bolla med... tur att jag hittat hit, där proffsen hänger!
har fått en uppgift som jag ska lösa med ett antal kombinerade funktioner, just funktionerna har jag koll på (tror jag) men initialt trasslar det till sig. det är som att jag har missat något grundläggande... men mitt problem är att jag vill läsa in en (tal)lista, som jag inte på förhand vet hur många tal den ska innehålla utan den ska avslutas med 0. jag kan inte deklarera 'tallista[]'utan att direkt bestämma storleken på den, min tanke var att jag skulle använda en variabel som räknade looparna vid inmatningen av talen, men det funkar absolut inte=/
den färdiga produkten är tänkt att se ut så här:(hittepåsiffror)

ange ett antal tal, avsluta med 0: 27 99 -2 897
summan=94
medelvärdet=84.4
största talet=847
näst största talet=784

nu har jag slut på idéer och är färdig att ge upp, någon som har ett förslag?
själva beräknings-funktionerna och sorteringen tror jag som sagt att jag klarar bara jag får min lista[] på plats.
tacksam för svar=)

Permalänk
Medlem

Hej!

Eftersom du nämner att du är nybörjare misstänker jag att du inte behöver göra det så svårt för dig. Deklarera din array med en godtycklig storlek och använd 0 som slutet på den.

Du kan annars använda en länkad lista ( http://en.wikipedia.org/wiki/Linked_list ), men det tror jag är lite för avancerat för uppgiften. Du kan även använda en vector ( http://www.cplusplus.com/reference/vector/vector/ ) som växer dynamiskt.

Men min röst faller på att allokera en array som är godtyckligt stor, då det finns gott om minne!

Visa signatur

Lian Li 6070B / Asus P8P67 B3 / Intel Core i5 2500K @ 4.5GHz
Corsair Vengance 8GB 1600MHz / Asus GTX780 / Corsair TX650V2

Permalänk

std::vector<int> v //ta bort std:: om du skriver using namespace std; v.push_back(tal);

Resten löser du nog!

Visa signatur

Citera, tack!
Har du läst tråden om strandhögtalare och andra musiklådor?

Permalänk

ja, jag tror att det är en vector jag måste använda... har lite svårt att få den snyggt inläst och den vill bara förstå 0 om man trycker enter efter,går det att förbättra?

#include<iostream>
#include<conio.h>
#include<vector>
using namespace std;
int main()
{
int tal;
int count=0;
vector<int>tallista;
cout<<"Ange ett tal, tryck 0 för avslut: ";
do
{
cin>>tal;
tallista.push_back(tal);
count++;
}
while(tal!=0);

Permalänk
Medlem

Tyvärr måste du trycka enter efter varje tal. Hur ska programmet annars veta om du vill ha 123 eller 1 2 3?

Sedan lite optimeringar på koden, du behöver inte count. Vectorn har en size-metod som du kan anropa när du ska räkna medelvärde t.ex. samt att du inte behöver lagra 0, så slipper du ta den i hänsyn.

typ såhär:

int main() { vector<int> numVec; bool run = true; int num; cout << "Skriv tal - avsluta med 0: "; while(run) { cin >> num; if(num) numVec.push_back(num); else run = false; } }

Visa signatur

Lian Li 6070B / Asus P8P67 B3 / Intel Core i5 2500K @ 4.5GHz
Corsair Vengance 8GB 1600MHz / Asus GTX780 / Corsair TX650V2

Permalänk
Medlem

Du gör uppgiften svårare än vad den är genom att tänka att du måste läsa in alla talen först och sedan räkna ut summa, max, ...
Det finns ett annat sätt om är mycket lättare.

Visa signatur

I'm Winston Wolfe. I solve problems.

Permalänk

Det finns lite olika roliga alternativ här.

Du skulle kunna göra så här:

#include <list> #include <iostream> int main(int argc, char **argv) { std::list<int> numbers; int number; std::cout << "Enter Numbers: " << std::endl; // Detta är inte så snyggt. // För det kommer att göra så att vi hänger på input // tills det att det kommer något som inte är en // integer eller ett mellanslag. // Så för att användandet av detta skulle se ut typ så här. // Enter Numbers: // 15 15 15 b // The mean is: 15 // Och det är ju inte så snyggt ... while(std::cin >> number) { // Trycker in alla integers vi från från input i listan. // editerat: // Om man lägger till en väldigt ful break // så kanske det funkar. // Har inte testat detta så jag vet inte... // då slipper man nog bokstaven på slutet. if(numbers == 0) { break; } numbers.push_back(number); } std::list<int>::iterator it = numbers.begin(); //skapar en iterator för listan double sum; // Itererar över listan och summerar all nummer. for(; it != numbers.end(); it++) { sum += static_cast<double>((*it)); } // Kolla så att listan inte är tom så vi slipper division by zero if(numbers.size() != 0) { double mean = sum/static_cast<double>(numbers.size()); // Räknar ut medelvärdet. std::cout << "The mean is: " << mean << std::endl; } else { std::cout << "The mean is: Undefined" << std::endl; } return 0; }

En annan lösning som kanske är lite bättre är att läsa in en
hel rad från std::cin och sedan använda en stringstream för
att på så sätt undvika att man hänger på input. Det skulle kunna
se ut på följande sätt.

#include <iostream> #include <sstream> int main(int argc, char **argv) { std::cout << "Enter numbers:" << std::endl; std::string inputLine; std::getline(std::cin, inputLine); // std::cin skrivs till inputLine std::stringstream input(inputLine); // konstruerar in stringstream från inputLine int number; double sum; int index = 0; while(input >> number) // Går igenom input nummer för nummer { if(number == 0) { break; } sum += static_cast<double>(number); index++; } if(index != 0) // Kolla så att det faktiskt har skrivits några tal annars kan det bli division by zero { double mean = sum /static_cast<double>(index); std::cout << "The mean is: " << mean << std::endl; } else { std::cout << "The mean is undefined." << std::endl; } return 0; }

Det finns mängder av fler sätt att göra det på. Alla har sina fördelar och nackdelar detta var bara några exempel. Hoppas det kan vara till inspiration för dig. Lycka till.

Permalänk
Medlem

Som påpekats är det onödigt att använda sig av vector eller liknande, och det är väl lite det som är poängen med uppgiften?

#include <iostream> using namespace std; int main(){ int input; int sum = 0; int total = 0; int storsta; int naststorsta; while(cin >> input){ if(!input){ break; } total++; sum+= input; if(total == 1){ storsta = input; naststorsta = input; } else if(input > storsta){ naststorsta = storsta; storsta = input; } else if(input > naststorsta){ naststorsta = input; } } cout << sum << endl; cout << (float)sum/total << endl; cout << storsta << endl; cout << naststorsta << endl; return 0; }

Permalänk
Medlem

Finns ju alltid en mängd olika sätt att lösa en uppgift på, du har ju fått många exempel här i tråden.
Men det du måste utgå ifrån är ju själva uppgiften, står det klart och tydligt vad du ska använda och inte använda?

Står det vad du ska använda så måste du ju använda det, står det inte, så bör du ju använda det som är inom aktuellt avsnitt i din bok.

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Medlem

Klass (det var ju c++ detta här) som implementerar basala statistikmått på en serie av tal

#ifndef LSTATS_H #define LSTATS_H #include <string> #include <sstream> #include <limits> template <class T> class LStats { public: LStats() : numberOfItems(0), minimum(std::numeric_limits<T>::max()), maximum(std::numeric_limits<T>::min()), secondLargest(0), sum(0.0), average(0.0), ok(true) {} double getAverage() {return average;} T getMaximum() {return maximum;} T getMinimum() {return minimum;} T getNextToMaximum() {return secondLargest;} void addNumber(T number) { numberOfItems++; //One number added sum += number; //Update sum average = sum/numberOfItems; //Calculate average if (number > maximum) { //New maximum value? secondLargest = maximum; maximum = number; } else if(number > secondLargest) { //New second largest value? secondLargest = number; } if(number < minimum) { //New minimal value? minimum = number; } } friend std::ostream& operator<< (std::ostream &out, LStats<T> &lstat) { out << "The sum is : " << lstat.sum << std::endl; out << "Minimum value is : " << lstat.minimum << std::endl; out << "Maximum value is : " << lstat.maximum << std::endl; out << "Second largest value is: " << lstat.secondLargest << std::endl; out << "The average value is : " << lstat.average << std::endl; return out; } friend std::istream& operator>> (std::istream &in, LStats<T> &lstat) { T newNumber; in >> newNumber; if(newNumber == 0) { lstat.ok = false; } else { lstat.addNumber(newNumber); } return in; } bool isOk() { return ok; } private: unsigned long numberOfItems; T minimum; T maximum; T secondLargest; double sum; double average; bool ok; }; #endif // LSTATS_H

sedan som sig bör, ett kort exempel på hur huvudprogrammet ser ut...

#include <iostream> #include "lstats.h" int main() { std::cout << "Input a couple of numbers, end with 0 (zero)" << std::endl; LStats<float> stats; while( stats.isOk() ) { std::cin >> stats; std::cout << stats << std::endl; } std::cout << "Final stats:" << std::endl << stats; return 0; }

genom överlagring av strömoperatorerna så funkar det klockrent att mata in en mellanslags-separerad lista av tal... t.ex:

Input a couple of numbers, end with 0 (zero) 0.1 0.2 -1e2 123 19.2 0 The sum is : 0.1 Minimum value is : 0.1 Maximum value is : 0.1 Second largest value is: 1.17549e-038 The average value is : 0.1 The sum is : 0.3 Minimum value is : 0.1 Maximum value is : 0.2 Second largest value is: 0.1 The average value is : 0.15 The sum is : -99.7 Minimum value is : -100 Maximum value is : 0.2 Second largest value is: 0.1 The average value is : -33.2333 The sum is : 23.3 Minimum value is : -100 Maximum value is : 123 Second largest value is: 0.2 The average value is : 5.825 The sum is : 42.5 Minimum value is : -100 Maximum value is : 123 Second largest value is: 19.2 The average value is : 8.5 The sum is : 42.5 Minimum value is : -100 Maximum value is : 123 Second largest value is: 19.2 The average value is : 8.5 Final stats: The sum is : 42.5 Minimum value is : -100 Maximum value is : 123 Second largest value is: 19.2 The average value is : 8.5

Visa signatur

weeeee

Permalänk

jag blir tokig! =(

Vill börja med att be om ursäkt för min ineffektivitet här i forumet (två febriga barn som tagit all min tid)
en del av tipsen förstår jag inte då man är en färsking=)
uppgiften är att bygga programmet med funktioner som deklareras utanför main i huvudsak. och vektorn hör också till kapitlet så jag misstänker att läraren vill att jag använder det. (doch inser jag att vektorns funktioner ligger långt bortom vår nuvarande kunskapsnivå med itreatorer och sånt.... jag har vekligen försökt att förstå, kollat massor på youtube, läst boken, instruktioner,läst igen, kliat mig i huvudet, raderat allt å börjat om massor av gånger..... nu tror jag att jag hittat 'stommen' men jag har trasslat in mig rejält för ingenting fungerar och errorsarna bara flyger ur datorn=((( har några saker som jag vet är fel men inte förstår hur jag ska rätta till. tex hakparanteserna...när och varför, de funkar ju ibland och sen denna * som visar värdet på pekaren, eller? när ska den användas och framförallt hur får jag in en vektor som är globalt deklarerad in i funktionen, vill inte fungera. Bubbelsorteringen vill inte heller, inte ens innan jag trasslade in mig i iteratorerna.
här är koden som jag skulle önska att den såg ut(och fungerade såklart;))
väldigt tacksam för hjälp!

#include<iostream> #include<conio.h> #include<vector> using namespace std; vector<int>tallista; void inlasning(void) { int tal=1; cout<<"Ange ett antal tal, 0 avslutar: "; while(tal!=0) { cin>>tal; tallista.push_back(tal); } tallista.pop_back(); } int sortering(void) { int storst, naststorst; int i, slask; vector<int>::iterator j; for ( i=0;i<tallista.size();i++) for (vector<int>::iterator j=tallista.end();j!=tallista.begin();j--) if (tallista[*j]>tallista[*(j-1)]) { slask=tallista[*(j-1)]; tallista[*(j-1)]=tallista[*j]; tallista[*j]=slask; } storst=tallista[*j]; naststorst=tallista[*(--j)]; return storst, naststorst; } int summering(void){ int summa,x=0; for (int i=0;i<tallista.size();i++) summa=tallista[x]+tallista[x++]; x++; return summa; } float medeltal(int sum, int ant) { float medelv=sum/ant; return medelv; } int main() { int summan; inlasning(); cout<<"stors och nast stort "<<sortering(); summan=summering(); cout<<"summan "<<summering(); cout<<"medelv "<<medeltal(summan,tallista.size()); getch(); return 0; }

Permalänk
Hedersmedlem
Skrivet av kattenpluto:

jag trasslade in mig i iteratorerna

Inget säger att du måste använda iteratorer (och det är förmodligen inte heller tanken i en grundkurs). Fortsätt med hakparenteser och .size().

for ( i=0;i<tallista.size();i++) for(int j = tallista.size() -1; j > 0; --j) if (tallista[j]>tallista[j-1]) { slask=tallista[j-1]; tallista[j-1]=tallista[j]; tallista[j]=slask; }

För övrigt vill du nog inte avreferera iteratorerna så ofta (om du ändå vill använda sådana). *j ger värdet som j pekar på (och inte positionen i vektorn). Om man istället behöver denna kan man till exempel använda (j - tallista.begin()), men har man iteratorer är det nog tjusigare att avstå hakparenteser och använda iteratorerna fullt ut:

if (tallista[*j]>tallista[*(j-1)]) if (*j >*(j-1))

Permalänk

[QUOTE]

Skrivet av Elgot:

Inget säger att du måste använda iteratorer (och det är förmodligen inte heller tanken i en grundkurs). Fortsätt med hakparenteser och .size().

Men vad ska jag använda för att peka ut index i min vector om inte en iterator?

Kan jag använda pekare? hakparanteser, hur funkar de med en vector jämfört med en vanlig array? Har prövat det mesta, men nu funkar absolut ingenting...
Jag kan inte se hur vectorn och dess funktioner påverkas när jag anropar den som ett funktions-argument.
hur ser ett korrekt deklarerad och anropad funktion ut när man vill använda en vector som argument?

Och en annan nöt är om jag har deklarerat vectorn globalt(för att slippa föra in dem som argument i funktionerna) består då resultatet av funktionen över kodblocket? dvs om jag har en sorteringsfunktion som körs, kommer vectorns sorterade ordning att bestå till nästa gång de den används?
börjar tvivla på mitt val av kurs trots att jag fått bra betyg på alla uppgifter hitills :/ jag tror ju som du säger att det inte är tänkt att vara så avancerat men ...jag vet inte hur jag ska ta mig ur detta 'fel' tankesätt.
hjälp!

Permalänk
Hedersmedlem
Skrivet av kattenpluto:

Men vad ska jag använda för att peka ut index i min vector om inte en iterator?

Antingen använder man iteratorer eller också använder man hakparenteser (och då kan man använda vektorn precis som ett fält).

for(int i = 0; i < tallista.size(); ++i) cout << "värde " << i << ": " << tallista[i] << std::endl;

skriver till exempel ut hela innehållet.
Motsvarande iteratorlösning är:

for(vector<int>::iterator i = tallista.begin(); i != tallista.end(); ++i) cout << "värde " << i - tallista.begin() << ": " << *i << std::endl;

Skrivet av kattenpluto:

Jag kan inte se hur vectorn och dess funktioner påverkas när jag anropar den som ett funktions-argument.
hur ser ett korrekt deklarerad och anropad funktion ut när man vill använda en vector som argument?

Om den är globalt deklarerad kan alla komma åt den och alla har rätt att ändra den.
En funktion som tar ett vektorargument kan till exempel se ut såhär:

void test(vector<int> v) { v.push_back(5); }

men den kopierar den vektor som anges som argument och utför sina modifieringar endast på kopian, så originalvektorn kommer inte att påverkas. Om man istället vill att detta skall ske kan man använda en referens (eller en pekare):

void test(vector<int>& v) { v.push_back(5); }

Om man nu till exempel kör

vector<int> u; test(u); test(u); test(u);

kommer man erhålla en vektor med innehållet {5, 5, 5}.

Permalänk

Tack!

tack, för att du tar dig tid att svara så jag förstår=)
ja nu har jag lite att bita i.... men det ska nog gå.
Annars återkommer jag

Permalänk

kan du se var felet är i min kod? får felmedelande om PDB filen hela tiden...

#include<iostream> #include<conio.h> #include<vector> using namespace std; vector<int>tallista; void inlasning(void) { int tal=1; cout<<"Ange ett antal tal, 0 avslutar: "; while(tal!=0) { cin>>tal; tallista.push_back(tal); } tallista.pop_back(); } int sorteringst(vector<int> tlista) //funktion som sorterar och hittar största tal { int slask, i; for(i=0;i<tlista.size();i++) for(int j=tlista.size();j>i;j--) if(tlista[j-1]>tlista[j]) { slask=tlista[j-1]; tlista[j-1]=tlista[j]; tlista[j]=slask; } cout<<endl; for(i=0;i<tlista.size();i++) cout<<tlista[i]<<" "<<endl; return tlista[i]; } int main() { int summan; inlasning(); cout<<"storst tal ar:"<<sorteringst(tallista)<<endl; getch(); return 0; }

Permalänk
Hedersmedlem
Skrivet av kattenpluto:

får felmedelande om PDB filen hela tiden...

Det låter som ett visual studio-problem (snarare än ett kodproblem. Vad säger den?

Permalänk

ok, då kanske det finns hopp då?
jag kan ju börja köra programmet, fast det kommer varningar i komentatsfältet som ser ut så här:

'My new project.exe': Loaded 'C:\Program Files (x86)\McAfee\SiteAdvisor\sahook.dll', Cannot find or open the PDB file 'My new project.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file 'My new project.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file

sen körs funktionen inläsning och sen plingar det till och en stor ruta hoppar upp och säger att:

microsoft visual c++ studio debug libary
Debug assertion faild!
(min fils namn)
fil:c programxxxxxx(x86)10.0\include\vector line 932
expression: Vectorsubscript out of range.

Permalänk
Medlem
Skrivet av kattenpluto:

ok, då kanske det finns hopp då?
jag kan ju börja köra programmet, fast det kommer varningar i komentatsfältet som ser ut så här:

'My new project.exe': Loaded 'C:\Program Files (x86)\McAfee\SiteAdvisor\sahook.dll', Cannot find or open the PDB file 'My new project.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file 'My new project.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file

sen körs funktionen inläsning och sen plingar det till och en stor ruta hoppar upp och säger att:

microsoft visual c++ studio debug libary
Debug assertion faild!
(min fils namn)
fil:c programxxxxxx(x86)10.0\include\vector line 932
expression: Vectorsubscript out of range.

Felet är att indexerar din vektor felaktigt och därför får ett exception. Se kommentarer i koden.

int sorteringst(vector<int> tlista) //funktion som sorterar och hittar största tal { int slask, i; for(i=0;i<tlista.size();i++) for(int j=tlista.size();j>i;j--) if(tlista[j-1]>tlista[j]) // Utanför vektorn när När j == tlista.size() { slask=tlista[j-1]; tlista[j-1]=tlista[j]; // Utanför vektorn när När j == tlista.size() tlista[j]=slask; // Utanför vektorn när När j == tlista.size() } cout<<endl; for(i=0;i<tlista.size();i++) cout<<tlista[i]<<" "<<endl; return tlista[i]; }

Permalänk
Skrivet av MagnusL:

Felet är att indexerar din vektor felaktigt och därför får ett exception. Se kommentarer i koden.

int sorteringst(vector<int> tlista) //funktion som sorterar och hittar största tal { int slask, i; for(i=0;i<tlista.size();i++) for(int j=tlista.size();j>i;j--) if(tlista[j-1]>tlista[j]) // Utanför vektorn när När j == tlista.size() { slask=tlista[j-1]; tlista[j-1]=tlista[j]; // Utanför vektorn när När j == tlista.size() tlista[j]=slask; // Utanför vektorn när När j == tlista.size() } cout<<endl; for(i=0;i<tlista.size();i++) cout<<tlista[i]<<" "<<endl; return tlista[i]; }

jo jag vet att jag gör något fel... men HUR ska jag skriva för att det ska bli rätt?

jag är lessen men jag förstår inte =(

Permalänk
Hedersmedlem
Skrivet av kattenpluto:

jo jag vet att jag gör något fel... men HUR ska jag skriva för att det ska bli rätt?

Felet finns här:

for(int j=tlista.size();j>i;j--)

tlista.size() ger antalet element i tlista, men då det första elementet är tlista[0] kommer det sista vara tlista[tlista.size()-1]. tlista[tlista.size()] existerar inte och därför vill du sannolikt inte börja med j = tlista.size().

Permalänk

men ger inte size värdet av antalet element? eller går den bara att jämföra andra värden med?
hur ska jag få sorteringsloopen att fungera utan iterators isf? hur ska jag annars peka ut det sista elementet om storleken är okänd?
(ursäkta frågestormen)

Permalänk
Hedersmedlem
Skrivet av kattenpluto:

men ger inte size värdet av antalet element?

Jo, men då det första elementet är tlista[0] kommer det sista vara tlista[tlista.size()-1].

Om tlista = {1, 2, 3, 4} kommer tlista.size() vara 4 och
tlista[0] = 1,
tlista[1] = 2,
tlista[2] = 3 och
tlista[3] = 4.

Permalänk

så jag pekar på ett index som är ett stötte än vad jag har? så dumt;) ska jag lösa det genom fler minustecken eller har du ett snyggare förslag?

Permalänk
Inaktiv

Det mest rekommenderade sättet att iterera STL-containers (typ std::vector) är att använda deras inbygga iterators. Använd även typedefs för att snygga till koden lite och göra den mer lättläslig

exempel:

typedef std::vector<int> IntegerList; IntegerList m_Lista; // nu är m_Lista av typen std::vector<int> for(IntegerList::iterator i = m_Lista.begin(); i != m_Lista.end(); ++i){ std::cout << (*it) << std::endl; }

Du kan även göra iteratorn till en typedef, dock tycker jag det är lite overkill:

typedef std::vector<int> IntegerList; typedef std::vector<int>::iterator IntegerIterator; IntegerList m_Lista; // nu är m_Lista av typen std::vector<int> for(IntegerIterator i = m_Lista.begin(); i != m_Lista.end(); ++i){ std::cout << (*it) << std::endl; }

EDIT: Glömde självklart förklara varför: Man slipper segfaults/exceptions som beror på out-of-range (dvs att du accessar lista[2] om det bara finns 2 element i listan (0, och 1)).

Permalänk

jag önskar att jag kunde inledningsvis har jag försökt....Verkligen försökt! men trasslat in mig som f****n och blandat ihop begreppen och pekarna i en salig röra, kanske ska tillägga att jag läser grundkurs på gym nivå(och jag tror att jag hamnat lite off track).... men jag vet att det är det 'rätta' sättet, absolut!

Permalänk
Hedersmedlem
Skrivet av kattenpluto:

så jag pekar på ett index som är ett stötte än vad jag har? så dumt;) ska jag lösa det genom fler minustecken eller har du ett snyggare förslag?

Det gäller att hålla sig innanför gränserna ([0, tlista.size()-1] alltså), så man vill nog inte sätta j som nedan.

for(int j=tlista.size();j>i;j--)

Följande bör lösa i alla fall de där problemen.

for(int j=tlista.size()-1;j>i;j--)

Permalänk

nu funkar sorteringen!
tack!
men jag får fortfarande jättemånga "Cannot find or open the PDB file" i output och den rutan som plongar till när programmet kör är kvar.... någon ide?

Permalänk
Medlem
Skrivet av kattenpluto:

nu funkar sorteringen!
tack!
men jag får fortfarande jättemånga "Cannot find or open the PDB file" i output och den rutan som plongar till när programmet kör är kvar.... någon ide?

PDB-filer innehåller debuginformation till program och bibliotek, de du fick varningar för tidigare i tråden tillhör antivirus och operativsystemet, normalt så måste de installeras separat (om de ens finns att tillgå i fallet med antivirus). Typiskt så räcker det långt med debuginfo till för ditt eget program och C++-standardbiblioteket och enligt den output du visade tidigare så finns båda.

Permalänk
Medlem
Skrivet av Elgot:

Inget säger att du måste använda iteratorer (och det är förmodligen inte heller tanken i en grundkurs). Fortsätt med hakparenteser och .size().

for ( i=0;i<tallista.size();i++) for(int j = tallista.size() -1; j > 0; --j) if (tallista[j]>tallista[j-1]) { slask=tallista[j-1]; tallista[j-1]=tallista[j]; tallista[j]=slask; }

För övrigt vill du nog inte avreferera iteratorerna så ofta (om du ändå vill använda sådana). *j ger värdet som j pekar på (och inte positionen i vektorn). Om man istället behöver denna kan man till exempel använda (j - tallista.begin()), men har man iteratorer är det nog tjusigare att avstå hakparenteser och använda iteratorerna fullt ut:

if (tallista[*j]>tallista[*(j-1)]) if (*j >*(j-1))

Hej! Ser att detta inlägg är väldigt gammalt men jag gör i princip samma uppgift. Jag tänker inte använda <vector> då det inte är tanken. Jag vill istället använda ev dynamisk pekare för att lagra talen, eller är det fel?
Om du skulle se detta har jag några frågor ang. t.ex. tallista och andra funktioner som jag verkligen hade behövt hjälp med!