Permalänk

matematisk gåta c++

tjo!
ska göra ett program som testar om detta påstående är sant, talet ska matas in via en cin sats.
tänk på ett heltal
addera 1
multiplicera med 2
subtrahera med 6
halvera
addera 3
subtrahera ditt tal
nu har du talet 1

har gjort denna kod men får error, varför?

#include <iostream> using namespace std; int main() { cout << "skriv ett heltal :"; int tal; cout << "talet aderat med ett blir: " << tal + 1 << endl; int tal1; cout << "talet multiplicerat med 2 blir: " << tal1 * 2 << endl; int tal2; cout << "talet subtraherat med 6 blir: " << tal2 - 6 << endl; int tal3; cout << "Talet halverat blir: " << tal3 / 2 << endl; int tal4; cout << "talet addarat med 3 blir: " << tal4 +3 << endl; int tal5; cout << "talet subtraherat med" << tal << "blir" << tal5 -tal << endl; system("pause"); return 0; }

Visa signatur

Processor: Amd fx 4100 Klockad till 4,3ghz. Graffekort: R9 280x Mobo: ASUS M5A99X EVO R2.0 Chassi: Moddat scaleo x. RAM: Corsair Vengence 16gb 1600mhz. SSD: NADA HDD: 1TB WesternDigital Nätagg: Corsair CX 750M
Logitch G430 7.1 , Func KB460 , Razer Imperator
Hata förfan inte på mitt agg, det funkar fint!

Permalänk
Medlem

Edit: cin>> för att läsa in det som användaren matar in

Permalänk
Hedersmedlem

Du läser inte in talet från användaren någonstans.

Permalänk
Medlem

cout << "skriv ett heltal :"; int tal; <--- Du deklarerar endast variabeln tal här. cin >> tal; // För att initiera den med värdet som användaren matar in.

Permalänk

tack så mycket, det var klantigt att jag glömde *facepalm*

Visa signatur

Processor: Amd fx 4100 Klockad till 4,3ghz. Graffekort: R9 280x Mobo: ASUS M5A99X EVO R2.0 Chassi: Moddat scaleo x. RAM: Corsair Vengence 16gb 1600mhz. SSD: NADA HDD: 1TB WesternDigital Nätagg: Corsair CX 750M
Logitch G430 7.1 , Func KB460 , Razer Imperator
Hata förfan inte på mitt agg, det funkar fint!

Permalänk

Nån som kan hjälpa mig? får fel vid halveringen.
var ska jag använda modulus?

Visa signatur

Processor: Amd fx 4100 Klockad till 4,3ghz. Graffekort: R9 280x Mobo: ASUS M5A99X EVO R2.0 Chassi: Moddat scaleo x. RAM: Corsair Vengence 16gb 1600mhz. SSD: NADA HDD: 1TB WesternDigital Nätagg: Corsair CX 750M
Logitch G430 7.1 , Func KB460 , Razer Imperator
Hata förfan inte på mitt agg, det funkar fint!

Permalänk
Medlem

% istället för / för att använda modulus

Permalänk

Jag får fel, endast där halveringen sker. tex om jag skriver 10 så säger programmet att 16 halverat är 22. Vad har jag glömt? nån parantes?

Visa signatur

Processor: Amd fx 4100 Klockad till 4,3ghz. Graffekort: R9 280x Mobo: ASUS M5A99X EVO R2.0 Chassi: Moddat scaleo x. RAM: Corsair Vengence 16gb 1600mhz. SSD: NADA HDD: 1TB WesternDigital Nätagg: Corsair CX 750M
Logitch G430 7.1 , Func KB460 , Razer Imperator
Hata förfan inte på mitt agg, det funkar fint!

Permalänk
Hedersmedlem
Skrivet av poppeskoglund:

Jag får fel, endast där halveringen sker. tex om jag skriver 10 så säger programmet att 16 halverat är 22. Vad har jag glömt? nån parantes?

Vilket tal halverar du? Är det verkligen 16?

Permalänk

Skriver jag såhär ch sätter in 10 så blir det ju:
10+1=11
*2=22
-6=16
sen när det ska halveras så blir det ju fel....

#include <iostream> using namespace std; int main() { int tal; cout << "skriv ett heltal :"; cin >> tal; cout << "talet aderat med ett blir: " << tal+1 << endl; cout << "talet multiplicerat med 2 blir: " << (tal+1)*2 << endl; cout << "talet subtraherat med 6 blir: " << (tal+1)*2-6 << endl; cout << "Talet halverat blir: " << << endl; cout << "talet addarat med 3 blir: " << (tal+1)*2-6/2 << endl; cout << "talet subtraherat med " << tal << " blir: " << (tal+1)*2-6/2-tal << endl; system("pause"); return 0; }

Visa signatur

Processor: Amd fx 4100 Klockad till 4,3ghz. Graffekort: R9 280x Mobo: ASUS M5A99X EVO R2.0 Chassi: Moddat scaleo x. RAM: Corsair Vengence 16gb 1600mhz. SSD: NADA HDD: 1TB WesternDigital Nätagg: Corsair CX 750M
Logitch G430 7.1 , Func KB460 , Razer Imperator
Hata förfan inte på mitt agg, det funkar fint!

Permalänk
Medlem

du kanske borde deklarera om variablen vid varje uträkning istället för att undvika matematiska fel.

Inte så insatt i c++ men principen är samma.

Alltså t.ex

tal++
cout << "talet adderat med ett blir: " << tal << endl;
tal = tal*2
cout << "talet multiplicerat med 2 blir: " << tal << endl;
osv osv

Permalänk
Hedersmedlem
Skrivet av poppeskoglund:

cout << "Talet halverat blir: " << << endl;

Vad har du här då?

Permalänk
Medlem

Du halverar ju inte talet på den raden?

cout << "Talet halverat blir: " << << endl;

Visa signatur

| 3700X | B450 Mortar Max | 2070 Super | AX860 | GL850 & UL650 |

Permalänk

Jag tog bort det just innan, det ska stå (tal+1)*2-6/2 men det verkar ju vara fel....

Visa signatur

Processor: Amd fx 4100 Klockad till 4,3ghz. Graffekort: R9 280x Mobo: ASUS M5A99X EVO R2.0 Chassi: Moddat scaleo x. RAM: Corsair Vengence 16gb 1600mhz. SSD: NADA HDD: 1TB WesternDigital Nätagg: Corsair CX 750M
Logitch G430 7.1 , Func KB460 , Razer Imperator
Hata förfan inte på mitt agg, det funkar fint!

Permalänk
Hedersmedlem
Skrivet av poppeskoglund:

Jag tog bort det just innan, det ska stå (tal+1)*2-6/2 men det verkar ju vara fel....

Du behöver parenteser; det där tolkas som (tal+1)*2-3, men det blir inte 22 heller...

Permalänk
Medlem
Skrivet av poppeskoglund:

Jag tog bort det just innan, det ska stå (tal+1)*2-6/2 men det verkar ju vara fel....

Tänk på prioriteringsreglerna.
Hur parsas din input?
Exakt vad är det du vill halvera?
Vad är det du egentligen halverar där?

Visa signatur

En potatis

Permalänk
Medlem

(((tal+1)*2)-6)/2

Så borde gå tycker ja (som inte skrivit en rad c++).

Men l4nky är väl inte på rätt spår att uppdatera en variabel istället så du slipper upprepa samma sak massa gånger.

Permalänk
Medlem
Skrivet av poppeskoglund:

Jag tog bort det just innan, det ska stå (tal+1)*2-6/2 men det verkar ju vara fel....

Stämmer allt annat?

Jag kan ingenting om just c++ så vi får väl se om detta ens går:

Går det inte att skippa alla tal1, tal2 etc? Och använda samma variabel som bara ändras?

#include <iostream> using namespace std; int main() { int tal; cout << "skriv ett heltal :"; cin >> tal; int startTal = tal; cout << "talet aderat med ett blir: " << tal = tal + 1 << endl; cout << "talet multiplicerat med 2 blir: " << tal = tal * 2 << endl; cout << "talet subtraherat med 6 blir: " << tal = tal - 6 << endl; cout << "Talet halverat blir: " << tal = tal / 2 << endl; cout << "talet addarat med 3 blir: " << tal = tal + 3 << endl; cout << "talet subtraherat med" << startTal << "blir" << tal - startTal << endl; system("pause"); return 0; }

Be gentle - Jag har inte läst ett ord om c++ förut men jag försöker mer hjälpa med problemlösningen som jag hoppas är mer rätt!

Edit: Redigerar bort den första kodsnutten eftersom den andra är mer relevant som jag hoppas är ganska rätt.

Edit2: Jag redigerar koden för jag är lite trött nu. Jag ser ju själv att du skriver ut talet varje gång. Mitt fel.

Permalänk

Division med udda heltal blir decimaltal, t ex 3/2 = 1,5.
Därför bör du deklarera variablerna som float, annars tas decimalen bort vid kompilering och det blir fel i uträkningen, även om programmet skulle funka.

Permalänk
Medlem
Skrivet av MathNinja:

Division med udda heltal blir decimaltal, t ex 3/2 = 1,5.
Därför bör du deklarera variablerna som float, annars tas decimalen bort vid kompilering och det blir fel i uträkningen, även om programmet skulle funka.

Så som uppgiften ser ut kommer division med udda tal aldrig kunna inträffa om koden är korrekt skriven.

Visa signatur

i7 8700k @ 4.7GHz | NH-L12 | ASUS Z270i ROG Strix Gaming | EVGA 1080 FTW | 32GB Corsair Vengeance 3000MHz | Samsung 970 Evo M.2 500GB, 840 250GB, Crucial MX500 2TB | Loque Ghost S1 | XB271HU | QX2710 | U2412M | U2719D | Filco Majestouch 2 MX Brown TKL

Permalänk
Skrivet av era909:

Så som uppgiften ser ut kommer division med udda tal aldrig kunna inträffa om koden är korrekt skriven.

Alla heltal multiplicerat med 2 är jämnt?

Visa signatur

Blegh <3 ^^

Permalänk
Medlem
Skrivet av Anitramane:

Alla heltal multiplicerat med 2 är jämnt?

Ja, och eftersom detta (samt subtraktion med ett jämnt heltal, 6) görs innan divisionen kommer det alltid vara ett jämnt heltal som divideras med två.

Visa signatur

i7 8700k @ 4.7GHz | NH-L12 | ASUS Z270i ROG Strix Gaming | EVGA 1080 FTW | 32GB Corsair Vengeance 3000MHz | Samsung 970 Evo M.2 500GB, 840 250GB, Crucial MX500 2TB | Loque Ghost S1 | XB271HU | QX2710 | U2412M | U2719D | Filco Majestouch 2 MX Brown TKL

Permalänk

Här är vad jag kommit på.

#include <iostream>

using namespace std;

int main()
{
int tal, tal2;
cout << "Skriv in ett heltal" << endl;
cin >> tal;
tal2 = tal;
cout << tal << " adderat med 1 blir ";
tal = tal + 1;
cout << tal << endl;
cout << tal << " multiplicerat med 2 blir ";
tal = tal * 2;
cout << tal << endl;
cout << tal << " subtraherat med 6 blir ";
tal = tal - 6;
cout << tal << endl;
cout << tal << " halverat blir ";
tal = tal / 2;
cout << tal << endl;
cout << tal << " adderat med 3 blir ";
tal = tal + 3;
cout << tal << endl;
cout << tal << " subtraherat med " << tal2 << " blir ";
tal = tal - tal2;
cout << tal << endl;
cout << endl << "Du har nu talet " << tal << endl;
return 0;
}

Dold text
Visa signatur

Blegh <3 ^^