Skip to content

Commit ddfec28

Browse files
authored
added files
1 parent bf3f774 commit ddfec28

File tree

3 files changed

+158
-0
lines changed

3 files changed

+158
-0
lines changed

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
sequencer: sequencer.c
2+
gcc sequencer.c -O3 -o sequencer -ansi

colors.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#ifndef COLORS
2+
#define COLORS
3+
4+
#define RED "\x1B[31m"
5+
#define BLUE "\x1B[34m"
6+
#define GREEN "\x1B[32m"
7+
#define YELLOW "\x1B[33m"
8+
#define MAGENTA "\x1B[35m"
9+
#define DEFAULT "\x1B[39m"
10+
11+
#ifdef __WIN32__
12+
#include <windows.h>
13+
#ifndef ENABLE_VIRTUAL_TERMINAL_PROCESSING
14+
#define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
15+
#endif
16+
DWORD dwMode;
17+
DWORD
18+
enableColorsOnWindows()
19+
{
20+
HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
21+
if (hOut == INVALID_HANDLE_VALUE) return GetLastError();
22+
dwMode = 0;
23+
if (!GetConsoleMode(hOut, &dwMode))return GetLastError();
24+
dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
25+
if (!SetConsoleMode(hOut, dwMode))return GetLastError();
26+
return 0;
27+
}
28+
#endif /*end windows if*/
29+
#endif /*end colors def*/

sequencer.c

Lines changed: 127 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
#include <stdio.h>
2+
#include <stdlib.h>
3+
4+
#define MAXINPUT 3
5+
6+
#include "colors.h"
7+
#define COLORS
8+
9+
typedef enum {ARITHMETIC,GEOMETRIC,PRIME,UNKNOWN} Sequence;
10+
11+
unsigned int i,position,count;
12+
float raised,number,term,numbers[10];
13+
14+
void
15+
getInput()
16+
{
17+
printf("Kindly input " RED "first three " DEFAULT "numbers of sequence " YELLOW "below " DEFAULT "using <" GREEN "spacebar" DEFAULT "> to separate\n");
18+
for (i = 0; i < MAXINPUT; i++){
19+
if(!scanf("%f",&number)){
20+
printf(RED"ERROR: " DEFAULT "Unable to get input\n");
21+
exit(EXIT_FAILURE);
22+
}
23+
numbers[i] = number;
24+
}
25+
}
26+
27+
unsigned int
28+
checkPrime
29+
(unsigned int number)
30+
{
31+
count = 1;
32+
for(i=2; i<=number/2; i++){
33+
if(number%i == 0){
34+
count=0;
35+
break;
36+
}
37+
}
38+
if(number == 1) count = 0;
39+
return count;
40+
}
41+
42+
Sequence
43+
determineSequence()
44+
{
45+
numbers[MAXINPUT] = numbers[MAXINPUT - 1] - numbers[MAXINPUT - 2];
46+
numbers[MAXINPUT + 1] = numbers[MAXINPUT - 2] - numbers[MAXINPUT - 3];
47+
if (numbers[MAXINPUT] == numbers[MAXINPUT + 1])return ARITHMETIC;
48+
numbers[MAXINPUT] = numbers[MAXINPUT - 1]/numbers[MAXINPUT - 2];
49+
numbers[MAXINPUT + 1] = numbers[MAXINPUT - 2]/numbers[MAXINPUT - 3];
50+
if (numbers[MAXINPUT] == numbers[MAXINPUT + 1])return GEOMETRIC;
51+
if (checkPrime((unsigned int)numbers[0]))return PRIME;
52+
else return UNKNOWN;
53+
}
54+
55+
void
56+
prompt()
57+
{
58+
printf(MAGENTA "Position " DEFAULT "of term: " BLUE);
59+
if(!scanf("%u",&position)){
60+
printf(RED"ERROR: "DEFAULT " Unable to get input\n");
61+
exit(EXIT_FAILURE);
62+
}
63+
printf(DEFAULT);
64+
}
65+
float
66+
raise
67+
(float base, unsigned int exponent)
68+
{
69+
raised = 1;
70+
for (i = 0; i < exponent; i++) raised *= base;
71+
return raised;
72+
}
73+
74+
/*=======================WIP=======================
75+
unsigned int
76+
primeAtN(unsigned int number,unsigned int position)
77+
{
78+
i = 0;
79+
while(i != position){
80+
if(checkPrime(number)){
81+
number++;
82+
i++;
83+
}
84+
else number++;
85+
}
86+
return number;
87+
}
88+
==================================================*/
89+
90+
int
91+
sequencer()
92+
{
93+
switch (determineSequence()){
94+
case ARITHMETIC:
95+
prompt();
96+
term = numbers[0] + (position - 1) * numbers[MAXINPUT];
97+
break;
98+
99+
case GEOMETRIC:
100+
prompt();
101+
term = numbers[0] * raise(numbers[MAXINPUT],position - 1);
102+
break;
103+
104+
case PRIME:
105+
prompt();
106+
printf(RED"WIP:"DEFAULT"prime number finder not in its prime yet ;)\n");
107+
return 0;
108+
109+
case UNKNOWN:
110+
printf(YELLOW "Sorry," DEFAULT " could " RED "not" DEFAULT " determine type of" BLUE " sequence\n" DEFAULT);
111+
return 0;
112+
}
113+
114+
printf(BLUE "Term " DEFAULT "is: " GREEN "%g\n" DEFAULT, term);
115+
return 0;
116+
}
117+
118+
int
119+
main()
120+
{
121+
#ifdef __WIN32__
122+
enableColorsOnWindows();
123+
#endif
124+
getInput();
125+
sequencer();
126+
return 0;
127+
}

0 commit comments

Comments
 (0)