/***************************************************************************** Template made for an ANSI C program. PROGRAM: (Name of exercise. Ex. u31.c, for exercise 1 of lab 3...) VERSION: 1.0 AUTHOR: John Doe DATE: yymmdd COMPILER: mingw 3.2.3 LIBS: (name of external library containing linked functions...) COMPANY: MdH *****************************************************************************/ /***************************************************************************** Revision history: (this is where you document the diffs between versions...) Date Revision 010905 Noticed that the function foo() had the bug... and so on. *****************************************************************************/ /***************************************************************************** Analys: your analysis goes here.... Design: your design goes here... *****************************************************************************/ /***************************************************************************** Här följer de grundläggande skärmhanteringsfunktionerna i PDCurses(Win32), ncurses(Linux) och curses(Unix): clear() - rensa skärm. move(int r, int k) - flytta markör till rad r och kolumn k. Tillåtna värden på r och k: 0<=r<=24 och 0<=k<=79. printw() - funkar som printf(). mvprintw(int r, int k, char *, ...) - funkar som printf() - men markören flyttas till rad r och kolumn k före utskrift. Perfekt för utskrift av ledtexter vid inmatningsformulär ! scanw() - funkar som scanf(). addch(int ch) - funkar som putchar(). getstr() - funkar som gets(). getch() - funkar som "vanliga(=conio)" getch(). refresh() - uppdaterar skärmen. Anropa explicit vid behov ! Anmärkn: Skall du ha en motsvarighet till getchar() också, så får du använda scanw() t ex. *****************************************************************************/ /*#define MSS*/ #include #include #include #include "misccur.h" /*#include */ int recarrmax1(int *parr, int lastidx); int recarrmax2(int *parr, int left, int right); int main(void) { /* Declare YOUR variables here ! */ int arr[10]; int i; char run='y'; /* INITIAL_CODE. Don't touch it ! */ initscr(); echo(); clear(); refresh(); /* END_INITIAL_CODE */ /* Insert your code here... */ srand(time(0)); while(run=='y') { for(i=0; i<10; i++) { arr[i]=rand()%100; printw("Nr[%d]:\t%d\n",i+1, arr[i]); } // printw("\nThe largest number is:\t%d \n",recarrmax1(arr, 9)); printw("\nThe largest number is:\t%d \n",recarrmax2(arr, 0, 9)); printw("\nDo you want to continue [y/n]?\n"); scanw("%c",&run); clear(); } /* FINAL_CODE. Don't touch it ! */ footer("Hit a key to quit the program..."); clear(); refresh(); endwin(); /* END_FINAL_CODE */ return 0; } int recarrmax1(int *parr, int lastidx) { /* returnera största värdet ur arrayen */ int tmp; /* Om det är sista instansen (första), returneras värdet som säkert störst. */ if(!lastidx) { return parr[0]; } /* Om det finns fler värden än ett kvar, måste jämförelse ske */ else { /* Hämta talet på platsen under i arrayen */ tmp=recarrmax1(parr, lastidx-1); /* Om hämtat tal är störst, returneras det */ if(tmp>parr[lastidx]) { return tmp; } /* Annars returneras det aktuella */ else { return parr[lastidx]; } } } int recarrmax2(int *parr, int left, int right) { int tmp1=0, tmp2=0; if(left!=right) { tmp1=recarrmax2(parr, left, (right/2)); tmp2=recarrmax2(parr, ((right-(right/2))), right); if(tmp1>tmp2) return tmp1; else return tmp2; } else return parr[left]; }