progress on desktop

This commit is contained in:
2023-02-18 15:44:55 -06:00
parent 7879affd21
commit 60261c73cd
9 changed files with 206 additions and 17 deletions

BIN
00-WSLSetup/hello Normal file

Binary file not shown.

View File

@@ -7,7 +7,7 @@
typedef struct node {
int value;
struct node* next;
struct node *next;
} node;
typedef struct stackm {
@@ -16,63 +16,134 @@ typedef struct stackm {
void smInit(struct stackm *myStack){
(myStack->top) = NULL;
myStack->top = NULL;
}
int smSize(struct stackm *myStack){
while(myStack->top->next != NULL) {
node *current = myStack->top;
int count = 0;
while(current != NULL) {
count++;
current = current->next;
}
return myStack->top;
return count;
}
int smPush(struct stackm *myStack, int toStore){
node node;
node.value = toStore;
*(myStack->top->next) = node;
node *newNode = (node *)malloc(sizeof(node));
if (newNode == NULL) {
return 0;
} else {
newNode->value = toStore;
newNode->next = myStack->top;
myStack->top = newNode;
return 1;
}
}
int smPop(struct stackm *myStack){
if(myStack->top == NULL) {
return 0;
}
node *temp = myStack->top;
myStack->top = temp->next;
free(temp);
return 1;
}
int smTop(struct stackm *myStack, int* toStore){
if (myStack->top == NULL || toStore == NULL) {
return 0;
} else {
toStore = (int*)myStack->top;
return 1;
}
}
void smClear(struct stackm *myStack){
while (myStack->top != NULL) {
node *temp = myStack->top;
myStack->top = temp->next;
free(temp);
}
}
void smPrint(struct stackm *myStack){
node *temp = myStack->top;
printf("==Stack Contents==\n");
printf("Top -> ");
while (temp != NULL) {
printf("%d ", temp->value);
temp = temp->next;
printf("\n");
}
}
int smAdd(struct stackm* myStack){
if(smSize(myStack) <= 2){
return 0;
} else {
int sum = (myStack->top->value) + (myStack->top->next->value);
smPush(myStack,sum);
return 1;
}
}
int smSub(struct stackm* myStack){
if(smSize(myStack) <= 2){
return 0;
} else {
int result = (myStack->top->value) - (myStack->top->next->value);
smPop(myStack);
smPop(myStack);
smPush(myStack,result);
return 1;
}
}
int smMult(struct stackm* myStack){
if(smSize(myStack) <= 2){
return 0;
} else {
int sum = (myStack->top->value) * (myStack->top->next->value);
smPush(myStack,sum);
return 1;
}
}
int smRotate(struct stackm* myStack, int depth){
if(depth == 0){
return 0;
} else {
node *temp = myStack->top;
int count = 1;
while (count < depth && temp != NULL) {
temp = temp->next;
count++;
}
if (temp == NULL) {
return 0;
}
node *nNode = temp;
while (temp->next != NULL) {
temp = temp->next;
}
temp->next = myStack->top;
myStack->top = nNode->next;
nNode->next = NULL;
return 1;
}
}
#endif

BIN
02-TeenyTinyShell/ttsh Normal file

Binary file not shown.

View File

@@ -10,6 +10,7 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define INPUT_MAX 256
#define CMD_MAX 5
@@ -71,6 +72,8 @@ int main()
char user_input[INPUT_MAX];
char cmd_strs[CMD_MAX][INPUT_MAX];
int quit_flag = 0;
// TODO need to be able to get input from
// the user in a loop
@@ -84,6 +87,11 @@ int main()
}
// TODO: Figure out how to handle the 'quit' command
if (strcmp(user_input, "quit") == 0){
printf("Quitting...");
exit(0);
}
// Chop the input into command strings
int cmd_count = parse_commands(user_input, cmd_strs);
@@ -101,6 +109,7 @@ int main()
// NOTE: the command name is always the first argument
// 2) fork a process
// 3) execute the command with execvp
}
return 0;

BIN
02-TeenyTinyShell/ttsh.o Normal file

Binary file not shown.

View File

View File

@@ -0,0 +1,81 @@
#include <stdio.h>
#include <stdlib.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <sys/types.h>
#include <unistd.h>
int main() {
int A[MAX][MAX], B[MAX][MAX], C[MAX][MAX];
int i, j, k, sum = 0;
int shmid;
int *shm;
// Allocate shared memory
shmid = shmget(IPC_PRIVATE, MAX * MAX * sizeof(int), 0666 | IPC_CREAT);
if (shmid < 0) {
perror("shmget");
exit(1);
}
// Attach shared memory
shm = shmat(shmid, NULL, 0);
if (shm == (int *)-1) {
perror("shmat");
exit(1);
}
// Initialize matrices A and B
for (i = 0; i < MAX; i++) {
for (j = 0; j < MAX; j++) {
A[i][j] = i + j;
B[i][j] = i - j;
}
}
// Fork a child process
pid_t pid = fork();
if (pid == -1) {
perror("fork");
exit(1);
}
else if (pid == 0) { // Child process
for (i = 0; i < MAX; i++) {
for (j = 0; j < MAX; j++) {
sum = 0;
for (k = 0; k < MAX; k++) {
sum += A[i][k] * B[k][j];
}
*(shm + i * MAX + j) = sum;
}
}
exit(0);
}
else { // Parent process
wait(NULL);
// Retrieve result from shared memory
for (i = 0; i < MAX; i++) {
for (j = 0; j < MAX; j++) {
C[i][j] = *(shm + i * MAX + j);
}
}
// Print result matrix C
printf("Matrix C:\n");
for (i = 0; i < MAX; i++) {
for (j = 0; j < MAX; j++) {
printf("%d ", C[i][j]);
}
printf("\n");
}
// Detach and remove shared memory
shmdt(shm);
shmctl(shmid, IPC_RMID, NULL);
munmap(shm);
}
return 0;
}

View File

@@ -0,0 +1,16 @@
#include <stdio.h>
int main(int argc, char* argv[])
{
int rows, columns;
FILE* input = fopen(argv[1], "r");
fscanf(input, "%d", &rows);
fscanf(input, "%d", &columns);
for(int i = 0; i < rows; i++) {
for(int j = 0; j < columns; j++) {
int value;
fscanf(input, "%d", &value);
}
}
fclose(input);
}

12
CS3841.code-workspace Normal file
View File

@@ -0,0 +1,12 @@
{
"folders": [
{
"uri": "vscode-remote://wsl+ubuntu/mnt/c/Users/Trevor/Documents/GitRepos/CS3841"
}
],
"settings": {
"files.associations": {
"stdio.h": "c"
}
}
}