Jag har en fungerande kod och allt funkar som det ska. Men ett krav för uppgiften är att det inte får innehålla några "globala variabler". Min kod innehåller bara det tror jag. Vet inte riktigt hur jag ska få till det för gör man bara lokala variabler finns det ju bara i sin funktion och problemet är att jag använder flera funktioner, som man ska göra, då verkar det vara bättre att ha färre globala variabler än flera lokala? Vet inte riktigt hur de har tänkt.
Uppgift:
Kod:
Uppgift:
En talföljd med 100 positiva heltal skall bearbetas. Talen skall ligga i intervallet 0 till
och med 900, 0 <= tal <= 900. Talen alstras med en slumpgenerator. Talföljden skall
presenteras på skärmen som en tabell med tio rader och tio kolumner.
Följande bearbetning skall kunna väljas i en meny:
1. Alstra en talföljd med en slumpgenerator och skriv ut talen på skärmen.
2. Sortera talföljden med bubbelsortering. Efter sorteringen skall talföljden skrivas ut på
skärmen.
3. Medelvärde, median, maxvärde och minvärde skall beräknas och skrivas ut på skärmen.
4. Med binärsökning skall man kunna söka efter ett valfritt tal. Om talet finns i talföljden
meddelas, på skärmen, på vilken plats i tabellen (rad och kolumn) talet finns. Annars
meddelas att talet inte finns i talföljden.
Krav på programkoden
Inga ”magic numbers”
Inga globala variabler
Funktioner får inte vara ”för långa”
och med 900, 0 <= tal <= 900. Talen alstras med en slumpgenerator. Talföljden skall
presenteras på skärmen som en tabell med tio rader och tio kolumner.
Följande bearbetning skall kunna väljas i en meny:
1. Alstra en talföljd med en slumpgenerator och skriv ut talen på skärmen.
2. Sortera talföljden med bubbelsortering. Efter sorteringen skall talföljden skrivas ut på
skärmen.
3. Medelvärde, median, maxvärde och minvärde skall beräknas och skrivas ut på skärmen.
4. Med binärsökning skall man kunna söka efter ett valfritt tal. Om talet finns i talföljden
meddelas, på skärmen, på vilken plats i tabellen (rad och kolumn) talet finns. Annars
meddelas att talet inte finns i talföljden.
Krav på programkoden
Inga ”magic numbers”
Inga globala variabler
Funktioner får inte vara ”för långa”
Kod:
Kod:
#include <stdio.h> #include <stdlib.h> #include <time.h> int tal[99] = {-1}; int bubbles,byte, c, d, val; /* Funktion för talföljd*/ int talserie(){ srand ( time(NULL) ); for(c = 0; c < 100; c++){ tal[c] = rand() % 901; printf(" %d ", tal[c]); if ((c+1) % 10 == 0) printf("\n");} } /* Funktion för bubbelsortering*/ int bubbel(){ for (c = 0 ; c < ( 99 ); c++) { for (d = 0 ; d < 99 - c ; d++) { if (tal[d] > tal[d+1]) { byte = tal[d]; tal[d] = tal[d+1]; tal[d+1] = byte; } } } for ( c = 0 ; c < 100 ; c++ ){ printf(" %d ", tal[c]); if ((c+1) % 10 == 0) printf("\n"); } } /* Funktion för median-, max/min- och medelvärde*/ int varde(){ printf("\nMaxvärdet är: %d", tal[99]); printf("\nMinvärdet är: %d", tal[0]); int total = 0; for ( c = 0 ; c < 100 ; c++ ) { total = total + tal[c]; } printf("\nMedelvärdet är: %d", total/100); printf("\nMedianvärdet är: %d", ((tal[49] + tal[50]) / 2)); } /*Funktion leta siffra*/ int siffra(){ printf("\nSkriv in en siffra: "); scanf("%d", &val); d = 0; for( c = 0 ; c < 100 ; c++){ if(tal[c]== val){ d = 1; printf("\nFinns i talföljden på plats: "); if(c <= 9) printf(" Rad 1 och Kolumn %d\n", c +1); else if (c > 9 && c <= 19) printf(" Rad 2 och Kolumn %d\n", (c +1) - 10); else if (c > 19 && c <= 29) printf(" Rad 3 och Kolumn %d\n", (c +1) - 20); else if (c > 29 && c <= 39) printf(" Rad 4 och Kolumn %d\n", (c +1) - 30); else if (c > 39 && c <= 49) printf(" Rad 5 och Kolumn %d\n", (c +1) - 40); else if (c > 49 && c <= 59) printf(" Rad 6 och Kolumn %d\n", (c +1) - 50); else if (c > 59 && c <= 69) printf(" Rad 7 och Kolumn %d\n", (c +1) - 60); else if (c > 69 && c <= 79) printf(" Rad 8 och Kolumn %d\n", (c +1) - 70); else if (c > 79 && c <= 89) printf(" Rad 9 och Kolumn %d\n", (c +1) - 80); else if ( c > 89 && c <= 99) printf(" Rad 10 och Kolumn %d\n", (c +1) - 90); break; } } if (d == 0); { printf("\n%d Finns inte i talföljden", val); } } /* Main funktion med switch meny*/ int main() { while(val != 5) { printf("\n1. Generera en talföljd med 100 tal mellan 0-900."); printf("\n2. Sortera talföljden i storleksordning."); printf("\n3. Räkna ut medelvärde, median och maxvärde."); printf("\n4. Sök efter valfritt tal."); printf("\n5. För att avsluta\n"); printf("Skriv in ett val (1-5): "); scanf("%d", &val); switch(val){ case 1: talserie(); break; case 2: if(tal[0] == -1) printf("\nFel! Generera en talföljd först!\n"); else bubbel(); break; case 3: if(tal[0] == -1) /* Arrayen innehåller -1 i [0] innan talföljden genereras"*/ printf("\nFel! Generera en talföljd först!\n"); else if (tal[0] <= tal[1] && tal[1] <= tal[2] && tal[2] <= tal[3]) /* Om tal[0] <= tal[1] och tal[1] <= tal[2] och tal[2] < tal[3] så har talföljden sorterats*/ varde(); else printf("\nFel! Sortera talföljden i storleksordning först!\n"); break; case 4: if(tal[0] == -1) printf("\nFel! Generera en talföljd först!\n"); else if (tal[0] <= tal[1] && tal[1] <= tal[2] && tal[2] <= tal[3]) siffra(); else printf("\nFel! Sortera talföljden i storleksordning först!\n"); break; } } return 0; }
__________________
Senast redigerad av smellyproof 2017-11-21 kl. 14:21.
Senast redigerad av smellyproof 2017-11-21 kl. 14:21.