Inlägg

Inlägg som Skogskotten har skrivit i forumet
Av Skogskotten

Hej igen, så tror jag förstår hur man skapar en vektor genom att användaren matar in storleken. Men jag förstår inte hur man kan lägga till eller ta bort element.

T.ex jag har en annan övningsuppgift där man ska skapa ett program som ska kontrollera temperaturer i olika städer. Användaren ska kunna lägga till en stad och ange namn och temperatur. Utan att använda sig av <vector>

Kan någon snälla hjälpa mig med hur jag ska börja och vad jag behöver använda mig av?

Av Skogskotten
Skrivet av Thomas:

Hur ny (eller gammal) är boken?
C++ har ändrats ganska mycket med tiden. Dagens kompilatorer är nog striktare än de som användes för 15+ år sedan. Ovanstående inlägg stämmer bra.

Om du kompilerar programmet som det står i boken (med en kompilator som accepterar det -- GCC ger "bara" en varning), och i Hello() försöker t ex sätta name[0] = 'A' så kommer programmet krascha, eftersom textsträngen lagras i minne som inte är skrivbart.
Om parametern istället är "const char *", som den (åtminstone numer) bör vara så får man kompileringsfel, vilket förstås är att föredra över en krasch.

Den är från 2012 så mycket kan nog ha ändrats sen dess? Går en baskurs i programmering och de går efter den här boken. Men skönt att veta vad problemet var i alla fall

Skrivet av BjornPaulstrom:

@Skogskotten: Om det är C++ du ska använda skulel jag rekommendera std::string istället:

#include <iostream>
#include <string>

void Hello(std::string name)
{
std::cout << "Hej " << name << "!";
}

int main()
{
Hello("Krister");

std::cin.get();
return 0;
}

Tack för tipset, jag föredrar att använda string men ville gärna veta hur jag skulle göra för att använda char också

Av Skogskotten
Skrivet av BjornPaulstrom:

@Skogskotten: "Krister" är konstant i.o.m att du skrivit in det direkt, så det kommer aldirg gå att ändra, funktionen Hello, förväntar sig en char array som den kan mutera (ändra)

Tack förstår vad du menar! Konstigt att de använder det som ett exempel i boken när det är fel. Prövade att göra om det till en char vektor och det funkade

Av Skogskotten

Tack alla för hjälpen! Har nu löst uppgiften och förstår mer hur man skapar dynamiska vektorer

Har också en annan övningsuppgift jag har problem med som har med char och funktioner att göra. Skriver exakt som ett exempel i boken men jag får error när jag försöker köra det. Det funkar när argumentet är const char* istället för char*, men exemplet i boken säger att man ska använda char*. Vet någon varför det inte funkar för mig?

#include "stdafx.h" #include <iostream> using namespace std; void Hello(char* name) { cout << "Hej " << name << "!"; } int main() { Hello("Krister"); cin.get(); return 0; }

Av Skogskotten

Vektorer C++ Hjälp

Hej,

Jag försöker lösa en övningsuppgift i C++ och skulle behöva hjälp med hur man skapar dynamiska vektorer. Detta är övningsuppgiften:

"Skapa en vektor som ska innehålla temperaturmätningar från en väderstation. I programmets början ska användaren få ange hur många mätningar som har gjorts. Därefter får användaren mata in olika temperaturer. Temperaturerna ska anges i decimaltal. Programmet ska sedan skriva ut de olika temperaturerna och medeltemperaturen."

Tror att man ska använda sig av en dynamisk vektor. Tyvärr står det inte så mycket i boken hur man gör detta. Detta är det enda exemplet vilket jag inte riktigt förstår:

int size; cin >> size; int* x; x = new int[size]; . . . delete[];

Så här långt har jag kommit hittills men det går inte att köra. Har bara använt int nu men vill att size ska vara int och att temperaturerna användaren anger ska vara float. Vad gör jag fel?

#include "stdafx.h" #include <iostream> using namespace std; int main() { float sum = 0; int temperatures[]; cout << "Hur många m\x84tningar har gjorts?\n"; int size; cin >> size; int* x; x = new int[size]; for (int i = 0; i < size; i++) { cin >> temperatures[i]; sum = sum + temperatures[i]; } cout << "Summan blir: " << sum; float avg = sum / size; cout << "Medeltemperaturen blir: " << avg; cin.get(); return 0; }