Permalänk

Nybörjare i C söker hjälp

Hej,

Det här är säkerligen tråd nr 1001 på det här ämnet och jag ber om ursäkt ifall min fråga besvaras i en annan tråd.
Jag har sökt efter ett svar på forumet, men inte hittat ett, där av denna tråd.

Jag började läsa "Datateknik A, Programmering C" för 2 veckor sedan på distans och tycker det är riktigt roligt att sitta och pula med det.
Jag hamnade efter med inlämningsuppgifterna tidigt då jag inte fick tillgång till programvara (Visual studio) från skolan i tid.

Jag har suttit hela dagarna för att komma ikapp och det är inte lätt som total nybörjare utan lärare att fråga (klart det finns en men det tar dagar att få svar) samt att tyda de inte allt för välformulerade förklaringarna i studieboken. Idag blir min 5:e dag med att sitta och söka på nätet och bläddra i boken efter svaret på en uppgift som jag inte lyckas lösa och vänder mig därför till er.

Jag ber er inte att göra min läxor, de vill jag göra själv (hur ska man annars lära sig något). Ibland kör man fast och då kan man behöva en knuff i rätt riktning för att komma vidare.

Problem 1: Att få in "Tryck på valfri tangent för att köra programmet igen!" och få det att fungera.
Mina tankar på problem 1: Efter allt googlande tror jag på en if-loop eller en while-loop och jag har testat, men får det inte att fungera.

Problem 2: Att få programmet att stänga ner sig när jag skriver in 0 som första värdet.
Mina tankar på problem 2: Även här borde en if-loop eller en while-loop fungera (kanske "break;"?).

Var inte för hårda mot mig.. Jag har bara varit i kontakt med programmering i en vecka

#include <stdio.h> #include <conio.h> #define ANTAL_DOMARE 7 int main(void){ float poang, sgrad, sum, max, min; int startnr, hoppnr, nr, ant; sum = 0; max = 0; min = 10; ant = 0; /*Startnummer*/ printf("Startnummer: "); scanf("%f", &startnr); /*Hoppnummer*/ printf("Hoppnummer: "); scanf("%f", &hoppnr); /*Svårighetsgrad*/ printf("Svarighetsgrad: "); scanf("%f", &sgrad); printf("\n"); /*Domarpoang*/ for (nr = 1; nr <= ANTAL_DOMARE; nr++){ printf("Domarepoang %i: ", nr); scanf("%f", &poang); ant++; sum += poang; /*högsta poäng*/ if (poang > max) { max = poang; } /*lägsta poäng*/ if (poang < min) { min = poang; } } /*Hoppoäng*/ printf("\nHoppoang : %.2f\n", (sum - (max + min)) / 5 * 3 * sgrad); printf("\nTryck på tangent för nytt hopp!"); getchar; return (0); }

Permalänk
Medlem

Hej, du är inne på rätt spår.
Lättast är att börja med problem 2, while loop och inga breaks eller dylikt.
Du behöver en variabel som du ska kolla i din while loop.

Sök på nätet och skriv lite kod, kör du fast så är det bara att pasta här så hjälper vi dig.

Lycka till.

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk
Skrivet av NoPaiN^:

Hej, du är inne på rätt spår.
Lättast är att börja med problem 2, while loop och inga breaks eller dylikt.
Du behöver en variabel som du ska kolla i din while loop.

Sök på nätet och skriv lite kod, kör du fast så är det bara att pasta här så hjälper vi dig.

Lycka till.

Nu vet jag VAD jag ska leta efter åtminstone, tack!

Permalänk

Jag har kommit så här långt nu

Nu gäller det bara att luska ut HUR jag får inmatning av domarpoäng mellan 0-10 i steg om 0.5.

Jag undrar hur "grisig/kladdig/stökig" min programmering är?

#include <stdio.h> #include <conio.h> #include <Windows.h> #define ANTAL_DOMARE 7 int main(void){ float poang, sgrad, sum, max, min; int startnr, hoppnr, nr, ant; while (1){ system ("cls"); sum = 0; max = 0; min = 10; ant = 0; /*Startnummer*/ printf("Startnummer: "); scanf("%f", &startnr); if (startnr > 0){ /*Hoppnummer*/ printf("Hoppnummer: "); scanf("%f", &hoppnr); /*Svårighetsgrad*/ printf("Sv\206righetsgrad: "); scanf("%f", &sgrad); printf("\n"); /*Domarpoang*/ for (nr = 1; nr <= ANTAL_DOMARE; nr++){ printf("Domarpo\204ng %i: ", nr); scanf("%f", &poang); ant++; sum += poang; /*högsta poäng*/ if (poang > max) { max = poang; } /*lägsta poäng*/ if (poang < min) { min = poang; } } /*Poäng resultat*/ printf("\nHoppo\204ng : %.2f\n", (sum - (max + min)) / 5 * 3 * sgrad); } else { exit (1); } /*Tangent tryck för nytt hopp*/ printf("\nTryck p\206 tangent f\224r nytt hopp!"); if (getch() == '\n'){ } } return (0); }

Permalänk
Medlem

Jag tycker du ska göra nåt sånt här typ.

while(nytthopp != 'n') { printf("Vill du hoppa igen? (j/n)"); scanf("%c", &nytthopp); }

Sen tycker jag din kod är okej, skulle bara vara att jag tycker du ska ha alla på var sin rad, blir mycket mer lättläst då. (scanf)
Men allt är ju som sagt en smaksak.

Visa signatur

Corsair 16GB (4x4096MB) CL9 1600Mhz | Asus P8Z77-V PRO |
Samsung SSD Basic 830-Series 256GB | Intel Core i7 3770K 3,5Ghz |
Asus Xonar Essence STX | Noctua NH-U9B SE2 | Antec Performance One P280 | Corsair HX 850W 80+ Gold Modulär | MSI GTX 770

Permalänk

Tack så mycket för hjälpen!

Permalänk

tycker att du är en stark person som satsar på c från början... skulle jag gjort själv....

Visa signatur

CPU: i7 3930k Moderkort: Rampage IV Extreme Kylare: Corsair H100i RAM: 64 GB Corsair Dominator Platinum 1600mhz Grafikkort: EVGA GTX 780 SC (SLI planerat) SSD: Samsung 840 Pro 256 gb Övrig lagring: WD black 2 TB x 2 Chassi: 900D PSU: Corsair 1200i Skärmar: 2x GW2750HM 1x GL2750HM