/*****************************************************************************
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 <stdio.h>
#include <curses.h>
#include <time.h>
#include "misccur.h"
/*#include <mss.h>*/
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];
}