Inlägg

Inlägg som Maacus har skrivit i forumet
Av Maacus
Skrivet av ggustavsson:

3 av 10 rätt riktigt bra med tanke på att jag chansade hejvilt på alla frågorna utom fråga 3, den med Half life 2.
I övrigt ingen koll alls på detta quiz

Statistiskt sett inte så bra egentligen. Men tycker du ska vara nöjd ändå!

Av Maacus
Skrivet av MinscS2:

Sorgligt när 4190:- för GTX 1070 ses som "ganska bra pris", när man för ett år sedan under Black Week kunde hitta GTX 1070 Ti för 3990:- och GTX 1080 för 4690:-.

Härligt när utvecklingen går bakåt...

Fast egentligen satte de väl fel produkt förra året? Det skulle egentligen varit 1070 för 3990 och inte 1070ti, iirc. Däremot var de sjyssta och faktiskt levererade produkten till det priset istället för att skylla på tryckfel som andra företag gör titt som tätt.

EDIT: Dock så är jag helt med på att grafikkort är snuskigt dyra just nu. Behöver du inte uppgradera just nu så är det antagligen bättre att vänta tills priserna hittar tillbaka lite.

Av Maacus

Har ett Corsair RM1000X att bli av med. Är du intresserad?

Av Maacus
Skrivet av crazysanta:

Nej.

Av Maacus

Diverse delar. Vega 56 , RM850x m.m.

Hej!

Har lite delar liggandes som jag tänkt göra mig av med. Priserna är riktlinjer, så lämna bud. Alla delarna fungerar helt felfritt. Delarna finns i Göteborg/Mölndal men kan även skickas, i detta fall står köparen för frakt. Förbehåller mig rätten att sälja till vem jag vill.

  • 5000kr - Sapphire Vega 56 i referensmodel. Den har endast använts till mining där den gått svalt mellan 55-60 grader med 35% fläkt. Inget coilwhine eller annat missljud. Inköpt november 2017

  • 1200kr - Corsair RM850X nätaggregat. Fortfarande inplastad, inköpt i vintras.

  • 900kr - Corsair RM850X nätaggregat. Använt sen i höstas.

  • 350kr - Kingston HyperX DDR4 4GBx1 2133MHz. Svart.

  • 800kr - MSI Z270 SLI Plus moderkort.

  • 300kr - Intel Celeron G3930 2,9GHz 1151

Ha det gott!
/Marcus

Läs hela annonsen här

Av Maacus

Ett av korten är nu sålt till evirob.

Av Maacus

Korten finns kvar så länge annonsen finns kvar.

Av Maacus

Ej i lager, varken hos butik eller leverantör. Billigaste jag kan se i sverige är ~7500kr.

Ifall du läser annonsen ser du att korten inhandlades i november. Alltså är det garanti även på korten jag säljer.

Men tack för din input

Av Maacus
Skrivet av Iksu:

Är det 5000 kr st eller för båda?

Styck

Av Maacus

Nej, de finns kvar.

Jag skriver här i tråden samt tar bort annonsen när de är sålda.

Av Maacus

2x Sapphire Vega 56

Hallå i vårvärmen!

Har 2 stycken Sapphire Vega 56 i referensmodell som jag nu gör mig av med, styckvis går bra ifall så önskas. De har endast använts till mining där de gått svalt mellan 55-60 grader med 35% fläkt. Inget coilwhine eller annat missljud från något av exemplaren.

Inköpta november 2017.
Kvitto finns.
Korten finns i Göteborg/Mölndal men de kan även skickas, i detta fall står köparen för frakt.

Bud börjar på 5000kr styck. Förbehåller mig rätten att sälja till vem.

Läs hela annonsen här

Av Maacus

Inte första gången postnord ställs inför rätta för brott mot konkurrenslagen. Tidigare har det till exempel gällt deras brevavdelning, där de har erbjudit sina kunder sorteringsrabatt först vid en volym på 100 000 försändelser, vilket är helt befängt då en sorteringsrabatt alltid borde gälla. De har gjort detta då de är den enda postoperatören som är rikstäckande, och om kunden vill skicka med en annan postoperatör där dessa finns så kommer de i 99% av fallen hamna under 100 000 brev hos postnord, vilket resulterar i en förlorad sorteringsrabatt, vilket gör det billigare att skicka allt med postnord. Så ifall de andra operatörerna vill ha en del av kakan får de nöja sig med en bråkdel av priset postnord kan ta. Visst, de har inte monopol längre, men de gör det väldigt svårt för konkurrerande bolag.

Samtidigt läcker de pengar som ett såll men snålar inte för det, de får ju ändå våra skattepengar

Av Maacus

float a = 0.4; float b = 0.7; int sum = 0; sum = 'a eller b' + 0.5; cout << sum;

Detta blir väl korrekt avrundat?

Av Maacus
Skrivet av Yoshman:

Städat lite i programmet. Finns ingen anledning att någonsin använda C-arrayer i C++, kör med std::vector<> så slipper man problem med att bestämma längd i förväg.

Lade även in en variant på hur du kan verifiera att det man läser in via in std::istream faktiskt gick att konvertera till den typ man skickade, i ditt fall en kontroll på att 'temp' verkligen gick att läsa in som ett heltal.

Fortfarande väldigt bristfällig felkontroll, läsa in text från terminalen och använda det som indata är ett väldigt svårt problem att få helt rätt!

#include <iostream> #include <string> #include <vector> using namespace std; struct City { const string name; const int temp; City(const string &_name, int _temp) : name(_name), temp(_temp) {} }; string readString() { string aString; while (getline(cin, aString), aString.size() == 0); return aString; } int readInt() { int anInt; while (!(cin >> anInt).good()) { cout << "Måste vara ett heltal, försök igen: "; cin.clear(); string _; getline(cin, _); } return anInt; } City addCity() { cout << "Ange namn på staden du vill lägga till: "; auto name = readString(); cout << "Ange temperatur: "; auto temp = readInt(); return City(name, temp); } int main() { bool isRunning = true; vector<City> listOfCities; while (isRunning) { cout << "\n[L]ägg till stad" << endl; cout << "[S]kriv ut temperaturer" << endl; cout << "[M]edeltemperatur" << endl; cout << "[V]armast" << endl; cout << "[K]allast" << endl; cout << "[A]vsluta" << endl; auto menuSelection = readString(); switch (menuSelection[0]) { case 'L': case 'l': listOfCities.emplace_back(addCity()); break; case 'S': case 's': for (auto &city: listOfCities) { cout << city.name << ' ' << city.temp << endl; } break; case 'M': case 'm': break; case 'V': case 'v': break; case 'K': case 'k': break; case 'A': case 'a': isRunning = false; break; } } }

Dold text

åäö fungerar hur bra som helst i både Linux och Cygwin, men blir pannkaka i cmd.exe...

Tack! Det är väldigt mycket där som inte är med i kursmaterialet, så får nog vänta lite med det och fokusera på att lära mig det som ingår i kursen. Men väldigt intressant läsning och kul att se exempel på hur jag kan förbättra koden.

Kanske blir mer sådant sedan i programmering 2

std::vector verkar väldigt smidigt, hade en sådan för att lagra bool värden i ett tidigare program och det gick jättebra!

Av Maacus
Skrivet av perost:

Att få ut annat än ASCII från Windows terminal kräver svart magi. Jag skulle rekommendera att du struntar i det om det inte är ett krav, alternativt kör Linux istället

Du bör för övrigt fundera lite på vad for-loopen som lägger till en ny stad egentligen har för syfte.

Haha okej, då nöjer jag mig utan de svenska bokstäverna.

Tack för att du nämner det, ser nu att just den loopen är helt fantastiskt onödig.. Blev nog en for-loop i bara farten då det har varit många sådana det senaste i kursmaterialet

Av Maacus
Skrivet av Cas:

int cityNumber = 0; ... while(isRunning) { City listOfCities[cityNumber]; ... listOfCities[i].setInfo(x, y); ... }

Nu håller jag inte primärt på med C++. Men initieringen av din array som du sparar alla instanser av klasserna/objekten ser inte korrekt ut.

Om jag inte tolkar detta helt tokigt:
Du initierar en klass som en array, med 0 platser? Detta görs varje gång din While-loop körs, så du kommer skriva över din array med tiden, vilket jag gissar inte är tanken. (Dock kommer arrayen ta det större värdet nästa gång, om du ökat cityNumber's storlek.)
Du försöker sedan spara data i en array med... 0 platser. (Första gången)

Bara för att du ökar värdet på

cityNumber++;

i din for-loop, så kommer inte arrayen automatiskt att bli större.

Tack! Ändrade till

int cityNumber = 255; City listOfCities[cityNumber]; cityNumber = 0;

och nu fungerar det som det ska, såvida användaren inte matar in mer än 255 städer såklart.

Skrivet av perost:

@Maacus: Du skapar en ny array med City-objekt i varje iteration av din huvud-loop, som du använder cityNumber som storlek för. Men sen ökar du bara cityNumber med 1 när du ska lägga till en ny stad, vilket gör att du skriver utanför arrayen.

Du bör istället antingen sätta en fast storlek på arrayen och se till att du inte lägger till fler städer än så, eller använda t.ex. std::vector som dynamiskt kan ändra storlek. Sen misstänker jag att du i själva verket inte vill slänga bort all data du matat in så fort loopen börjar om från början, så du bör deklarera din array med städer utanför loopen.

Ack! Vad dum jag känner mig nu, självklart ska inte arrayen skapas inuti loopen..
Nu ser det ut såhär istället:

int main() { SetConsoleOutputCP(1252); int cityNumber = 255; City listOfCities[cityNumber]; cityNumber = 0; bool isRunning = true; while(isRunning) { cout << "\n[L]ägg till stad" << endl; cout << "[S]kriv ut temperaturer" << endl; cout << "[M]edeltemperatur" << endl; cout << "[V]armast" << endl; cout << "[K]allast" << endl; cout << "[A]vsluta" << endl; char menuSelection; cin >> menuSelection; switch(menuSelection) { case 'L': case 'l': for(int i = cityNumber; i < cityNumber+1; i++) { cout << "Ange namn på staden du vill lägga till: "; string x; cin >> x; cout << "Ange temperatur: "; int y; cin >> y; listOfCities[i].setInfo(x, y); } cityNumber++; break; case 'S': case 's': for(int i = 0; i < cityNumber; i++) { cout << "i " << listOfCities[i].name << " är det " << listOfCities[i].temp << " grader." << endl; } break;

Dold text

och det tycks fungera att mata in städer och skriva ut dem. Å, ä och ö fungerar dock inte när namnen hämtas från klassen, SetConsoleOutputCP funktionen når väl inte dit. Hur kan man åtgärda det?

Av Maacus
Skrivet av perost:

Du gör massor av olika fel med char*, som att skriva till den med cin utan att allokera minne, och att spara en pekare till en temporär variabel i dina City-objekt istället för att kopiera strängen. Om du inte absolut måste använda char* så bör du istället använda std::string, så slipper du allt sånt.

Tack! Bytte ut alla char* mot string, men får fortfarande samma problem fast nu hänger programmet sig vid inmatning av temperatur istället för namn på stad som tidigare var fallet. Misstänker då att något är fel vid raden listOfCities[i].setInfo(x, y);, alternativt i setInfo?

Av Maacus

c++ skapa klassobjekt

Hej på er! Hoppas ni har en trevlig helg!

Sitter med en uppgift där jag ska skapa ett program där användaren i en meny får lägga till städer samt vilken temperatur det är i dessa. Sedan ska användaren kunna välja att skriva ut temperaturen i städerna, medeltempatur, samt vart det är varmast/kallast.

Min kod än så länge ser ut såhär:

#include <iostream> #include <windows.h> #include <string> using namespace std; class City { public: char* name; int temp; void setInfo(char* _name, int _temp) { name = _name; temp = _temp; } }; int main() { SetConsoleOutputCP(1252); int cityNumber = 0; bool isRunning = true; while(isRunning) { City listOfCities[cityNumber]; cout << "\n[L]ägg till stad" << endl; cout << "[S]kriv ut temperaturer" << endl; cout << "[M]edeltemperatur" << endl; cout << "[V]armast" << endl; cout << "[K]allast" << endl; cout << "[A]vsluta" << endl; char menuSelection; cin >> menuSelection; switch(menuSelection) { case 'L': case 'l': cityNumber++; for(int i = 0; i < cityNumber; i++) { cout << "Ange namn på staden du vill lägga till: "; char* x; cin >> x; cout << "Ange temperatur: "; int y; cin >> y; listOfCities[i].setInfo(x, y); } break; case 'S': case 's': for(int i = 0; i < cityNumber; i++) { cout << listOfCities[i].name; } break; case 'M': case 'm': break; case 'V': case 'v': break; case 'K': case 'k': break; case 'A': case 'a': isRunning = false; break; } } return 0; }

Dold text

Mitt problem är att programmet hänger sig under runtime när användaren matar in namn på staden. Förstår inte vart problemet ligger.

All hjälp är mycket uppskattad!

Mvh
Marcus

Av Maacus

Ifall du ska länka in de med <> behöver du väl ställa in vart din din kompilerare/IDE hittar filerna. Annars vet programmet inte vart dessa filer finns. När du använder " " så kollar den på samma plats som filen du anropar ifrån finns.

Någon får gärna rätta mig om jag har fel.

Av Maacus
Skrivet av perost:

Variablerna i funktionen är lokala för funktionen, så du kan ge dem vilket (tillåtet) namn du vill. Och det finns förstås alltid en poäng med att ge dem logiska namn. Deras enda syfte är ju att göra koden lättare att läsa för människor, datorn struntar helt i vad du kallar dina variabler, så för din egen skull bör du namnge dina variabler så bra du kan.

Fast för en så här enkel funktion kan med fördel skrivas utan att deklarera en extra variabel:

int getGuess (int a, int b) { return (a + b) / 2; }

@Alling: Maacus kod skriver ut den slutgiltiga balansen, så jag utgår ifrån att det är ett krav i uppgiften att även ta reda på den.

Lite det jag tänkte då, att i större mer avancerade funktioner så bör jag ge dem logiska variabelnamn men i en sån pyttefunktion räckte a och b gott och väl

Sant att programmet ska skriva ut den slutgiltiga balansen så fort antal år (i helår) är nådda.