C - Program för att bestämma storleken på ett Ax papper

Permalänk

C - Program för att bestämma storleken på ett Ax papper

Tjena! Sitter nu och läser min första riktiga programmeringskurs och har kört fast litegranna. Skriver från laptopen och kommer inte in här från skoldatorn så kan inte copy-pastea koden, så simplifierar den enormt nu.

Problemet är egentligen en simpel matematisk funktion som lyder såhär: Ax = Ax * (4 - i)

if (a == 4)
printf("your paper size is %i %i",Ax,Ay); // För ett vanligt A4 papper, funkar kalas

// Nu kommer felet, skriver jag A3 eller A5 multipliceras måtten med 1 (A5 vid a > 4, men skriver inte ner den), vilket ger samma resultat som A4. Hur kan man lösa det?

if (a < 4)

Ax = Ax * (4-i) // i är input värdet
Ay = Ay * (4-i)

printf ("Your paper size is %i %i",Ax,Ay);

Hoppas ni förstår, tack på förhand!

Visa signatur

Datorn: i5-4690k@4.3ghz, Asus Dual OC 1070, Fractal Design Newton R3 1000w, Asus Z97-A, Fractal Define R5, 16GB Corsair@1600mhz, Hyper 212 EVO, Crucial BX100, WD Black 1TB x2
Kringutrustning: BenqXL2411Z, AOC 24" x2, Func KB-460, Mionix Naos 7000, Logitech MX Master, Logitech Z-906, Sehnheiser HD 558, Optuma uDAC 3, Blue Yeti, Akai LPK 25 Steelseries QCK XXL

Permalänk
Medlem

Tror du behöver beskriva lite mer.

Permalänk
Skrivet av Pake:

Tror du behöver beskriva lite mer.

Jag råka skicka iväg det innan jag skrivit klart! Uppdaterat nu.

Visa signatur

Datorn: i5-4690k@4.3ghz, Asus Dual OC 1070, Fractal Design Newton R3 1000w, Asus Z97-A, Fractal Define R5, 16GB Corsair@1600mhz, Hyper 212 EVO, Crucial BX100, WD Black 1TB x2
Kringutrustning: BenqXL2411Z, AOC 24" x2, Func KB-460, Mionix Naos 7000, Logitech MX Master, Logitech Z-906, Sehnheiser HD 558, Optuma uDAC 3, Blue Yeti, Akai LPK 25 Steelseries QCK XXL

Permalänk
Medlem

Detta problem är lösbart utan irriterande if-satser. Gör det!

Skickades från m.sweclockers.com

Permalänk
Medlem

@Sten sax påse:

if (a == 4)
{
// Skriv vad du vill göra här
}

if kan man säga är en komparator.

i detta fallet så vill du kolla om a är lika med 4.

Om a är lika med 4, skriv i kod vad som ska utföras.

exempelvis i c# som en console-applikation

if(a == 4)
{
Console.WriteLine("a is equal to 4"); // Skriver ut texten inom citationstecknena till skärmen.
}

Hoppas det är en liten knuff i rätt riktning.

Visa signatur

Profectus est bonus introductionem scitis quoniam coepit usquam

Permalänk
Skrivet av Irre:

Detta problem är lösbart utan irriterande if-satser. Gör det!

Skickades från m.sweclockers.com

Jo, men tiden rinner ut och jag är extremt ny inom detta, så if satser får det vara sålänge!

Skrivet av Mahkizmo:

@Sten sax påse:

if (a == 4)
{
// Skriv vad du vill göra här
}

if kan man säga är en komparator.

i detta fallet så vill du kolla om a är lika med 4.

Om a är lika med 4, skriv i kod vad som ska utföras.

exempelvis i c# som en console-applikation

if(a == 4)
{
Console.WriteLine("a is equal to 4"); // Skriver ut texten inom citationstecknena till skärmen.
}

Hoppas det är en liten knuff i rätt riktning.

Ledsen jag fattar inte riktigt

Visa signatur

Datorn: i5-4690k@4.3ghz, Asus Dual OC 1070, Fractal Design Newton R3 1000w, Asus Z97-A, Fractal Define R5, 16GB Corsair@1600mhz, Hyper 212 EVO, Crucial BX100, WD Black 1TB x2
Kringutrustning: BenqXL2411Z, AOC 24" x2, Func KB-460, Mionix Naos 7000, Logitech MX Master, Logitech Z-906, Sehnheiser HD 558, Optuma uDAC 3, Blue Yeti, Akai LPK 25 Steelseries QCK XXL

Permalänk
Medlem

@Sten sax påse: Om uppgiften bara är att skriva ut storleken för en viss Ax-storlek, varför har du två variabler (a och i)? Och formlerna du använder borde väl vara samma för alla storlekar, så du borde som sagt inte behöva några if-satser.

Ett tips är för övrigt att du kan använda code-taggar för att behålla formateringen på kod du klistrar in:
[code]
Kod här
[/code]
blir:

Kod här

Permalänk
Skrivet av perost:

@Sten sax påse: Om uppgiften bara är att skriva ut storleken för en viss Ax-storlek, varför har du två variabler (a och i)? Och formlerna du använder borde väl vara samma för alla storlekar, så du borde som sagt inte behöva några if-satser.

Ett tips är för övrigt att du kan använda code-taggar för att behålla formateringen på kod du klistrar in:
[code]
Kod här
[/code]
blir:

Kod här

Oj, jag har bara en variabel (i) inuti min kod, skrev snabbare än vad jag tänkte! Det där med att formeln är likadan lät smart, ska testa lite mer nu!

Visa signatur

Datorn: i5-4690k@4.3ghz, Asus Dual OC 1070, Fractal Design Newton R3 1000w, Asus Z97-A, Fractal Define R5, 16GB Corsair@1600mhz, Hyper 212 EVO, Crucial BX100, WD Black 1TB x2
Kringutrustning: BenqXL2411Z, AOC 24" x2, Func KB-460, Mionix Naos 7000, Logitech MX Master, Logitech Z-906, Sehnheiser HD 558, Optuma uDAC 3, Blue Yeti, Akai LPK 25 Steelseries QCK XXL

Permalänk
99:e percentilen
Skrivet av Sten sax påse:

Problemet är egentligen en simpel matematisk funktion som lyder såhär: Ax = Ax * (4 - i)

Vad menas med detta? Vilken funktion åsyftas?

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk

Nu lyckades jag få över koden, här är allting!

#include <stdio.h> // What is the size of an Ax paper, if an A4 is 210 by 297 mm and x can range from 0 to 1000. // If x int main (void) #if 0 { char x = 's'; int i, a; float Ax = 210; float Ay = 297; i = (int)(x); printf("Which size do you want to calculate?\n"); scanf("%i", &i); if ( i < 0 ){ // Code to make an absoulte value i = -i; } while ((a = scanf("%i",&i))==0){ // Code to find wrong inputs. Den här funkar halvdant printf("Invalid, type again"); return 0; } if (i == 4) { printf("A paper of size A%i is %.1f by %.1f mm\n",i,Ax,Ay); return 0; } if (i < 4) { Ax *= (4-i); Ay *= (4-i); printf("A paper of size A%i is %.3f by %.3f mm\n",i,Ax,Ay); return 0; } if (i > 4) { Ax /= (i-4); // Olik funktion som den ovan, / och i-4 istället för * och 4-i Ay /= (i-4); printf("A paper of size A%i is %.3f by %.3f mm\n",i,Ax,Ay); return 0; } }

Visa signatur

Datorn: i5-4690k@4.3ghz, Asus Dual OC 1070, Fractal Design Newton R3 1000w, Asus Z97-A, Fractal Define R5, 16GB Corsair@1600mhz, Hyper 212 EVO, Crucial BX100, WD Black 1TB x2
Kringutrustning: BenqXL2411Z, AOC 24" x2, Func KB-460, Mionix Naos 7000, Logitech MX Master, Logitech Z-906, Sehnheiser HD 558, Optuma uDAC 3, Blue Yeti, Akai LPK 25 Steelseries QCK XXL

Permalänk

Nu vet jag inte om jag fattat din uppgift korrekt, men det verkar inte som om du har samma tolkning av pappersstorlekarna som alla andra. Om du kollar på https://sv.wikipedia.org/wiki/ISO_216 så ser man att om man skall gå från A4 till A3 så funkar det inte riktigt att ta måtten för ett A4 och multiplicera med (4 -3).

Permalänk
99:e percentilen
Skrivet av Sten sax påse:

Nu lyckades jag få över koden, här är allting!

Se om du kan fila på din indentering; koden är väldigt svårläst som den ser ut just nu.

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk
Skrivet av Ingetledigtnamn:

Nu vet jag inte om jag fattat din uppgift korrekt, men det verkar inte som om du har samma tolkning av pappersstorlekarna som alla andra. Om du kollar på https://sv.wikipedia.org/wiki/ISO_216 så ser man att om man skall gå från A4 till A3 så funkar det inte riktigt att ta måtten för ett A4 och multiplicera med (4 -3).

Nej exakt och det är där min huvudfråga egentligen var! Formeln (4-i) * Ax har vi fått given i uppgiften så den verkar smidig att använda. Den blir t.ex fel på både A1 och A0, men läraren har sagt att det är okej.

Huvudproblemet är helt enkelt att kunna göra nåt slags undantag för just ett A3 eller A5 papper, men kommer inte på något bra sätt....

Skrivet av Alling:

Se om du kan fila på din indentering; koden är väldigt svårläst som den ser ut just nu.

Det ska jag definitivt göra, vet att det ser riktigt illa ut men har bara slängt ihop allt just nu!

Visa signatur

Datorn: i5-4690k@4.3ghz, Asus Dual OC 1070, Fractal Design Newton R3 1000w, Asus Z97-A, Fractal Define R5, 16GB Corsair@1600mhz, Hyper 212 EVO, Crucial BX100, WD Black 1TB x2
Kringutrustning: BenqXL2411Z, AOC 24" x2, Func KB-460, Mionix Naos 7000, Logitech MX Master, Logitech Z-906, Sehnheiser HD 558, Optuma uDAC 3, Blue Yeti, Akai LPK 25 Steelseries QCK XXL

Permalänk
99:e percentilen
Skrivet av Sten sax påse:

Nej exakt och det är där min huvudfråga egentligen var! Formeln (4-i) * Ax har vi fått given i uppgiften så den verkar smidig att använda.

Tveksamt om (4 − i) · Ax ens är en matematisk formel; en sådan brukar i regel gå att uttala som ett påstående. Solklart exempel på formel:

a2 + b2 = c2

där a, b och c är sidorna i en rätvinklig triangel.

Däremot skulle jag inte gärna kalla detta en formel utan vidare:

a2 + b2

Vilken likhet är det du menar ska gälla, och vad står de olika bokstäverna för i den likheten?

Citat:

Huvudproblemet är helt enkelt att kunna göra nåt slags undantag för just ett A3 eller A5 papper, men kommer inte på något bra sätt....

Jag tror huvudproblemet är att formulera en generell matematisk funktion från pappersnamn till pappersstorlekar, så att varken if-satser eller undantag behövs!

Visa signatur

Skrivet med hjälp av Better SweClockers

Permalänk

Vad har du för förhållande mellan kanterna på ditt A4 och hur mycket måste man multiplicera A4ts kanter med för att få ett A3?

Permalänk
Medlem
Skrivet av Sten sax påse:

Huvudproblemet är helt enkelt att kunna göra nåt slags undantag för just ett A3 eller A5 papper, men kommer inte på något bra sätt....

Formeln fungerar ju dock inte för A3 eller A5 heller. Om i är 3 t.ex. så blir (4 - i)×Ax == (4 - 3)×Ax == 1×Ax.

Förhållandet mellan storlekarna är egentligen baserat på √2, så formeln du bör använda är snarare Ax×√24 - i (eller Ax*pow(sqrt(2), 4 - i) i C).