Permalänk
Medlem

Noob programmering C hjälp!

Hej, har suttit och klurat en bra stund på denna uppgift nu ett bra tag.

programmet heter Code:Blocks!

Alla positiva heltal kan skrivas som produkter av primtal (63 = 3 * 3 * 7, 31213 = 7 * 7 * 7 * 7 * 13 osv).
Att dela upp ett tal på detta sätt kallas primtalsfaktorisering. En sådan faktorisering är alltid unik, dvs inget
tal kan skrivas som produkter av två olika serier av primtal.
Fula tal är tal som har den egenskapen att de bara har tre primfaktorer: 2, 3 och 5. Alla fula tal (men inga
andra) kan skrivas som (2
x
) * (3
y
) * (5
z
), där x, y och z är icke-negativa heltal. För att undersöka om ett tal N
är ett fult tal behöver du bara dividera det med talen 2, 3 och/eller 5 så långt det går. Om du kommer ner till
1 är talet ett fult tal, annars inte. Talet 1 räknas som ett fult tal av konvention.
I denna laboration ska ett program implementeras som undersöker om ett positivt heltal är ett fult tal.
Laborationen ska lösas enskilt.
Syfte
Syftet med uppgiften är att träna på:
 Inläsning från tangentbord och utskrift till skärm
 Val av alternativ
 Repetitioner
 Aritmetik
Uppgift
Din uppgift är att skriva ett program som läser in positiva heltal från tangentbordet och talar om ifall de är
fula tal eller inte. Om talet är ett fult tal ska primtalsfaktoriseringen skrivas ut. Programmet ska avslutas när
användaren skriver in heltalet 0 eller ett negativt heltal.
Nedan visas hur interaktionen med användaren ska se ut. Notera att x**y är samma sak som x
y

jag fattar inte vad jag ska skriva. hjälp uppskattas och det är snabbt!

Permalänk

Prompta tal

Kolla om det är fult genom att dividera med 2, 3 eller 5 så långt det går.

Om siffran då är 1 skriv ut vad det består av.

Frågor?

Skickades från m.sweclockers.com

Permalänk
Medlem

Det förstår jag också, Men det är Commands, som är problemet.
Vilken Int, jag ska använda osv osv, vet ju vad jag skagöra:p men vet inte vilka commands eller hur jag ska göra alls.

Permalänk
Medlem

men har ni inte gått genom programmeringsgrunderna på lektionerna innan ni fick uppgiften eller är det meningen att ni ska leta, läsa och förstå på egen hand?

Skickades från m.sweclockers.com

Visa signatur

schack rules, i don't...:-(

Permalänk
Medlem

Bara för att förtydliga, du sitter en lördag kväll och hoppas att någon ska göra din läxa åt dig ?

OT.
Du vet altså hur lösningen sker matematiskt men vill ha hjälp med själva koden?
om detta är fallet hur långt har du kommit med en lösning än så länge?

Visa signatur

Jag gillar datorspel!

Permalänk
Medlem
Skrivet av taimanov:

men har ni inte gått genom programmeringsgrunderna på lektionerna innan ni fick uppgiften eller är det meningen att ni ska leta, läsa och förstå på egen hand?

Skickades från m.sweclockers.com

Antar attvi ska förstå själva, dockförstår jag inte,Därför kommer jag hit...

Permalänk
Medlem

Brukar inte vara några problem alls att googla på varje moment du vill genomföra.
Och eftersom du vet hur det ska ske rent schematiskt så ska det väl inte vara några problem?
Om du har ett specifikt problem kan vi hjälpa dig, men inte genomföra hela din läxa!

Visa signatur
Permalänk
Medlem
Permalänk
Medlem

kollade igenom alla dem, men kommer inte längre än så här.

#include <stdio.h>

int main(void)
{
printf("Ange ett possitivt heltal(avsluta med: 0)"); // Detta beskriver vad man vill att användaren ska göra.
scanf("%d"); // Jag scanar sedan in svaret och behöver beräkna det.

return 0;
}

Förstår verkligen inte vad jag ska skriva, har suttit nu i och läst och kollat runt på nätet i timmar..

Permalänk
Medlem

Jag kan inte säga att jag saknar programmeringen....

Visa signatur

Krusidullen är stulen

Permalänk
Hedersmedlem

*Tråd rensad*

Vi har en policy (ej regel) som innebär att vi endast tillåter läxhjälp, inte att någon gör läxan/uppgiften åt någon annan.

När det gäller programmering är det alltså okej att hjälpa till så som LeMisanthrope01 gör, d v s hjälpa till med hur man ska tänka, men att skriva kod åt trådskaparen är inte okej. Exempelkod är dock okej.

Permalänk

Jag gjorde samma uppgift här i veckan och ett tips är att kolla upp vad % (modulus) betyder och börja jobba därifrån.

mvh

Visa signatur

intel pentium fyra processor, 6800le, 1024mb, 160gig, is7-e, m.m.

Permalänk
Skrivet av widL::

*Tråd rensad*

Vi har en policy (ej regel) som innebär att vi endast tillåter läxhjälp, inte att någon gör läxan/uppgiften åt någon annan.

När det gäller programmering är det alltså okej att hjälpa till så som LeMisanthrope01 gör, d v s hjälpa till med hur man ska tänka, men att skriva kod åt trådskaparen är inte okej. Exempelkod är dock okej.

Jag ber om ursäkt för policy-brott? Det hade varit händigt i framtiden om policyer av denna typ finns tillgängliga för allmänheten att se för att förhindra dessa situationer.

Så nu försöker jag igen utan att använda kod:

Uppgiften i klartext:

Ett heltal läses in från tangentbordet. Villkoret för att programmet ska köras är att det är större än 0. Ifall talet är 0 eller mindre ska programmet avslutas. Det inlästa talet testas med programmet. Ifall talet går att skriva med primfaktorer på följande form, 2^x * 3^y * 5^z, där x, y och z är heltal och ^-tecknet innebär "upphöjt till", är talet ett fult tal. Programmet ska berätta för användaren huruvida talet är ett fult tal eller ej. Ifall talet är fult ska även primtalsfaktorerna skrivas ut.

Linusn1 skrev att han har koll på det matematiska i uppgiften, men jag skriver trots det hur jag tänker, då andra kan finna detta användbart.

Talet kommer jag kalla för "T" framöver.

T testas ifall det är delbart med 2 utan rest. >Ifall det är det börjar denna algoritm om med T/2 som T. >Annars: T testas ifall det är delbart med 3 utan rest. >Ifall det är det börjar denna algoritm om med T/3 som T. >Annars: T testas ifall det är delbart med 5 utan rest. >Ifall det är det börjar denna algoritm om med T/5 som T.

Ifall T = 1 efter denna algoritm är det ursprungliga talet ett fult tal.

För att skriva ut exponenten till de tre primtalsfaktorerna behövs en variabel för varje primtalsfaktor som börjar på noll, och varje gång T är delbart med korresponderande primtalsfaktor ökas värdet av denna variabel med ett.
Ifall ett tal aldrig var delbart med t.ex. 3 kommer 3^0 skrivas ut, vilket är lika med 1 (exponentregler), och påverkar därför inte resultatet. Av denna anledning ses 1 som ett fult tal.

För att testa delbarheten hos ett tal mot ett annat används modulus-operatorn, '%', ex. 17 % 5 = 2.
Detta innebär att det första talet delas med det andra tills det första talet är mindre än det andra, och det andra talet är nu "resten", i exemplets fall:
5 * 3 = 15
17 - 15 = 2
=> 17 % 5 = 2

Ifall talen i divisonen är jämnt delar blir det ingen rest, t. ex. 20 % 5 = 0
5 * 4 = 20
20 - 20 = 0
=> 20 % 5 = 0