init
commit
3738c83af8
Binary file not shown.
|
@ -0,0 +1,80 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
||||
typedef struct person {
|
||||
char name[50];
|
||||
int age;
|
||||
} person;
|
||||
|
||||
typedef struct Node {
|
||||
void *content;
|
||||
struct Node *next;
|
||||
|
||||
} Node;
|
||||
|
||||
Node *newNode(void *content) {
|
||||
Node *ret = (Node *)malloc(sizeof(Node));
|
||||
if (ret == NULL)
|
||||
return NULL;
|
||||
ret->content = content;
|
||||
ret->next = NULL;
|
||||
return ret;
|
||||
}
|
||||
void appendNode(Node *head, Node *newTail) {
|
||||
|
||||
Node *tail = head;
|
||||
while (tail->next != NULL) {
|
||||
tail = tail->next;
|
||||
}
|
||||
tail->next = newTail;
|
||||
}
|
||||
void delTail(Node *head) {
|
||||
printf("deleting tail\n");
|
||||
Node *tail = head;
|
||||
while (tail->next->next != NULL) {
|
||||
tail = tail->next;
|
||||
}
|
||||
free(tail->next);
|
||||
tail->next = NULL;
|
||||
}
|
||||
|
||||
void printList(Node *head) {
|
||||
int count = 0;
|
||||
Node *h = head;
|
||||
while (h != NULL) {
|
||||
printf("%s : %d yeares old -> ", ((person *)h->content)->name,
|
||||
((person *)h->content)->age);
|
||||
count += 1;
|
||||
h = h->next;
|
||||
}
|
||||
printf("\n%d nodes long\n", count);
|
||||
}
|
||||
|
||||
int main() {
|
||||
person p1 = {"alice", 23};
|
||||
person p2 = {"bob", 30};
|
||||
person p3 = {"mark", 48};
|
||||
person p4 = {"bob2", 60};
|
||||
|
||||
Node *np1 = newNode(&p1);
|
||||
Node *np2 = newNode(&p2);
|
||||
Node *np3 = newNode(&p3);
|
||||
Node *np4 = newNode(&p4);
|
||||
|
||||
Node *head = np1;
|
||||
appendNode(head, np2);
|
||||
appendNode(head, np3);
|
||||
appendNode(head, np4);
|
||||
|
||||
printList(head);
|
||||
delTail(head);
|
||||
printList(head);
|
||||
|
||||
while (head->next != NULL) {
|
||||
delTail(head);
|
||||
}
|
||||
free(head);
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
all: powerCalc.c
|
||||
gcc -o powerCalc -g -ggdb -O0 powerCalc.c
|
Binary file not shown.
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Author: Simon Schurti
|
||||
*
|
||||
* Licence: MIT
|
||||
*
|
||||
* Informatik 1 exercice:
|
||||
* Takes user input for Voltage and Current in V/A respectively.
|
||||
* calculates and prints Power and Resistance
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
int main() {
|
||||
double u, i, p, r; // Voltage , current, power, resistance
|
||||
while (1) {
|
||||
printf("To Terminate enter anything that is not a valid float.\n\n");
|
||||
|
||||
// fscanf returns bytes scanned, so if ret is 0 no float was detected
|
||||
// fscanf only matches %lf, so "123 asdlkj" would be valid input according
|
||||
// to format specified in fscanf. getc pops next byte from stdin, which is
|
||||
// always \n if user input is valid
|
||||
printf("Voltage[V]: ");
|
||||
int ret = fscanf(stdin, "%lf", &u); // read voltage from user
|
||||
if (ret <= 0 || getc(stdin) != '\n')
|
||||
break; // terminate if user input is invalid
|
||||
printf("Current[A]: ");
|
||||
ret = fscanf(stdin, "%lf", &i); // read current form user
|
||||
if (ret <= 0 || getc(stdin) != '\n')
|
||||
break; // termainte if user input is invalnid
|
||||
|
||||
// power [W] = current [A] * voltage[V]
|
||||
p = i * u;
|
||||
|
||||
// resistance[Ohm] = voltage[V] / current[A]
|
||||
if (i != 0) {
|
||||
r = u / i;
|
||||
printf("Resistance[Ohm]: %.3lf\n", r);
|
||||
printf("Power[W]: %.3lf\n", p);
|
||||
printf("Resistance %.3lf is %s than Power %.3lf\n", r,
|
||||
(r > p) ? "greater" : "smaller", p);
|
||||
} else {
|
||||
printf("No current is flowing. Resistance cannot be "
|
||||
"calculated\nPower: 0 W\n");
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
all: p1 p2 p3 p4 p5
|
||||
p1: tree.c
|
||||
gcc tree.c -o christmasTree1 -D p1
|
||||
p2: tree.c
|
||||
gcc tree.c -o christmasTree2 -D p2
|
||||
|
||||
p3: tree.c
|
||||
gcc tree.c -o christmasTree3 -D p3
|
||||
p4: tree.c
|
||||
gcc tree.c -o christmasTree4 -D p4
|
||||
|
||||
p5: tree.c
|
||||
gcc tree.c -o christmasTree5 -D p5
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,98 @@
|
|||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
// #define p1
|
||||
|
||||
/* Bitmasks for different tree/decoration patterns
|
||||
* use make <p1/p2/p3> to compile with different tree patterns
|
||||
* default is p1
|
||||
*/
|
||||
#ifdef p1
|
||||
#define pattern 0x942 // 100100100100
|
||||
#endif
|
||||
#ifdef p5
|
||||
#define pattern 0xC2C2
|
||||
#endif
|
||||
#ifdef p2
|
||||
#define pattern 0x1
|
||||
#endif
|
||||
#ifdef p3
|
||||
#define pattern 0
|
||||
#endif
|
||||
#ifdef p4
|
||||
#define pattern 0x333
|
||||
#endif
|
||||
|
||||
void treeColor1() {
|
||||
printf("\033[1;93;42m");
|
||||
} // change terminal output color to green background, yellow text
|
||||
void white() { printf("\033[0m"); } // change terminhl color to system default
|
||||
void treeColor2() {
|
||||
printf("\033[1;91;102m");
|
||||
} // change terminal output color to redtext green background
|
||||
void truncColor() {
|
||||
printf("\033[31;43m");
|
||||
} // change terminal output color to red(31)tesx and
|
||||
void cls() { printf("\033[2J"); }
|
||||
|
||||
// print christmas tree with height n
|
||||
void printTree(int n) {
|
||||
for (int m = 0; 1; m++) {
|
||||
// print leafy part of tree
|
||||
for (int i = 0; i < n; i++) {
|
||||
for (int j = 0; j < n - i; j++) {
|
||||
printf(" "); // offset from left edge
|
||||
}
|
||||
for (int j = 0; j < (i * 2) + 1; j++) {
|
||||
if (j & pattern) { // print tree pattern based on bitmask
|
||||
(!(m & 1)) ? treeColor2() : treeColor1();
|
||||
printf("%s", (!(m & 1)) ? "O" : "*");
|
||||
white();
|
||||
} else {
|
||||
((m & 1)) ? treeColor2() : treeColor1();
|
||||
printf("%s", (!(m & 1)) ? "*" : "O");
|
||||
white();
|
||||
}
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
// print trunk with length and thickness based on tree size
|
||||
for (int i = 0; i < (n / 6) || i < 1; i++) {
|
||||
for (int j = 0; j < n - 2; j++) {
|
||||
printf(" ");
|
||||
}
|
||||
truncColor();
|
||||
printf("%s", (n < 8) ? "\033[0m \033[31;43m|#|"
|
||||
: (n > 16) ? "|####|"
|
||||
: "|###|");
|
||||
white();
|
||||
printf("\n");
|
||||
}
|
||||
sleep(1);
|
||||
cls();
|
||||
}
|
||||
}
|
||||
|
||||
void useage(char *progName) {
|
||||
printf("Useage:\n%s <tree_depth>\n <tree_depth> has to be greater than 3\n",
|
||||
progName);
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
if (argc < 2) {
|
||||
useage(argv[0]);
|
||||
return 1;
|
||||
}
|
||||
// init treeDepth with invalid value as n would be undefined if sscanf fails
|
||||
// this could cause crash if n is ised later
|
||||
int treeDepth = -1;
|
||||
int r = sscanf(argv[1], "%d", &treeDepth); // sscanf returns # charsscanned
|
||||
if (r > 0 && treeDepth > 3) { // valid integer was scanned
|
||||
printTree(treeDepth);
|
||||
} else { // no valid integer detected display help message and quit
|
||||
useage(argv[0]);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
|
||||
char *s = NULL;
|
||||
size_t ss = 0;
|
||||
do {
|
||||
printf("enter \"Start\"! ");
|
||||
getline(&s, &ss, stdin);
|
||||
} while (strcmp(s, "Start") == 0);
|
||||
free(s);
|
||||
|
||||
int a[2][8][8];
|
||||
for (int m = 0; m < 2; m++) {
|
||||
int c = 1 + m;
|
||||
for (int i = 0; i < 8; i++) {
|
||||
for (int j = 0; j < 8; j++) {
|
||||
a[m][i][j] = c;
|
||||
c += (m == 0) ? 1 : 2;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
for (int j = 0; j < 8; j++) {
|
||||
char s1[8], s2[8], s3[8];
|
||||
int ret = sprintf(s1, " %d", a[m][i][j]);
|
||||
if (ret <= 0)
|
||||
return -1;
|
||||
ret = sprintf(s2, " %d", a[m][i][j]);
|
||||
if (ret <= 0)
|
||||
return -2;
|
||||
|
||||
ret = sprintf(s3, " %d", a[m][i][j]);
|
||||
if (ret <= 0)
|
||||
return -2;
|
||||
printf("%s", a[m][i][j] > 9 ? a[m][i][j] > 99 ? s3 : s2 : s1);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
printf("\n\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
all: 2Darr.c
|
||||
gcc -Wall -g -ggdb 2Darr.c -o 2Darr
|
|
@ -0,0 +1,4 @@
|
|||
CLFAGS=-g -ggdb -Wall
|
||||
|
||||
all: strAnalyzer.c
|
||||
gcc $(CLFAGS) strAnalyzer.c -o strAnalyzer
|
Binary file not shown.
|
@ -0,0 +1,38 @@
|
|||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int stringLen(char **s, int *eCount) {
|
||||
int count = 0;
|
||||
int idx = 0;
|
||||
*eCount = 0;
|
||||
while (*(*s + idx) != '\0') { //(*(*s+idx)) == (*s)[idx]
|
||||
if ((*s)[idx] == 'e') {
|
||||
*eCount += 1;
|
||||
}
|
||||
count++;
|
||||
idx++;
|
||||
}
|
||||
// newline (\n) am ende soll nicht gezaehlt werden deshalb count -1 falls
|
||||
// count >0 ansonten 0 um zun verhindern dass negative stringLen
|
||||
// zurueckgegeben weird falls count = 0
|
||||
return count > 0 ? count - 1 : 0;
|
||||
}
|
||||
int main() {
|
||||
char *str = NULL;
|
||||
size_t size; // max allocated size of str (allocated by getdelim)
|
||||
int numberEs;
|
||||
int ret = getline(&str, &size, stdin);
|
||||
if (ret == -1) { // getline failed. free allocated mem and return
|
||||
free(str);
|
||||
return 1;
|
||||
}
|
||||
printf("read: %s", str);
|
||||
int len = stringLen(&str, &numberEs);
|
||||
|
||||
printf("it is %d chars long. It contains the letter \'e\' %d times\n", len,
|
||||
numberEs);
|
||||
|
||||
free(str);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue