and other things
this is mad confusing
This commit is contained in:
ldlda committed 2024-10-20 18:58:01 +07:00
commit 045d7367a8
11 files changed
+349

No files matched your search

+3
View File
@@ -0,0 +1,3 @@
.vscode
exe
drafts
+37
View File
@@ -0,0 +1,37 @@
#include <stdio.h>
#include <string.h>
typedef struct
{
int real;
int imag;
} ldaComplex;
void print(ldaComplex* lda)
{
printf("%d + %di", lda->real, lda->imag);
}
// this is the best of my ability in c: returning string is a Fucking Mess
// i would love to do this in rust
ldaComplex add(ldaComplex a, ldaComplex b)
{
return (ldaComplex){a.real + b.real, a.imag + b.imag};
}
ldaComplex multiply(ldaComplex a, ldaComplex b)
{
return (ldaComplex){a.real * b.real - a.imag * b.imag,
a.real * b.imag + a.imag * b.real};
}
int main(int argc, char const *argv[])
{
ldaComplex lda = {1, 2};
ldaComplex lda2 = {5, 2};
ldaComplex addRes = add(lda, lda2);
ldaComplex multiRes = multiply(lda, lda2);
printf("("); print(&lda); printf(") + ("); print(&lda2); printf(") = "); print(&addRes);
printf("\n("); print(&lda); printf(") * ("); print(&lda2); printf(") = "); print(&multiRes);
return 0;
}
// ass
+12
View File
@@ -0,0 +1,12 @@
void findMax(int *max, int a) {
if (a > *max) *max = a;
};
#include <stdio.h>
int main(){
int c = 176;
int f = 10;
findMax(&f, c);
printf("%d, %d", c, f);
return 0;
}
+24
View File
@@ -0,0 +1,24 @@
# lab 1
## ex 1
Write a pseudocode and implement a program in C to swap the first and last digits
of a positive integer.
## ex 2
Complete this given function `void findMax(int *max, int a)`, which assigns a value
a to max if a > max.
## ex 3
Write a structure to represent complex numbers and complete operators: add and
multiply.
## ex 4
Write a pseudo-code by commenting in the file then implement a program in to
enter a natural number n and verify whether n is sphenic. Calculate the complexity
of your program.
Note: A sphenic number is a product of $p \times q \times r$ where $p$, $q$, and $r$ are three distinct
prime numbers. Example: $30 = 2 \times 3 \times 5$; $42 = 2 \times 3 \times 7$; $66 = 2 \times 3 \times 11$
+43
View File
@@ -0,0 +1,43 @@
#include <stdio.h>
int log10intint(int n)
{
// as int goes to 2^64 we gon
if (n <= 0)
return 1 << 31;
int a = 1;
for (int i = 0; i < 20; i++)
{
a *= 10;
if (n - a < 0)
{
return i;
}
}
};
int ten_to_the(int i)
{ if (i < 0) return 0;
int ret = 1;
while (i-- > 0)
ret *= 10;
return ret;
}
int special_swap(int number)
{
int first_number, second_number, third_number;
int this_number = ten_to_the(log10intint(number));
third_number = number % 10;
first_number = number / this_number;
second_number = number % this_number - third_number;
return second_number + third_number * this_number + first_number;
};
int main()
{
printf("%d\n", special_swap(142425));
return 0;
}
+45
View File
@@ -0,0 +1,45 @@
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
bool sphenic(int i)
{
if (i < 30)
return false;
// number can be prime ^ a * prime ^ b * prime ^ c * other;
// idea straight from stack overflowing
int prime_prod = 1;
int count = 0; // handle case 3*11 for example
int sphenic = 3;
for (
int n = i, p = 2;
count < sphenic // we have 3 numbers
&& n != 1 // we have divided all the numbers
&& p <= n; // lil check
p++)
if (n % p == 0)
{
count++;
prime_prod *= p;
while (n % p == 0)
n /= p; // what if you can be divided by 4?
};
return prime_prod == i // see thats what the while is for
&& count == sphenic; // what if we have 17 * 29
}
int main()
{
int N = 200;
for (int i = 1; i < N; i++)
if (sphenic(i))
printf("%d ", i);
return 0;
}
+27
View File
@@ -0,0 +1,27 @@
# lab 2
## ex 1
Suppose that we use a List data structure to represent unbounded
integers.
- the first element refers to the sign: 1 is positive and -1 is negative.
- each element in the list represents one digit of these integers.
Implement and test the program in C/C++ using an Array-based List (Static or Dynamic) to manage this unbounded integers:
- add new digits at any place in an integer.
- remove a digit at a specfic position in an integer.
- calculate the sum of all digits from an unbounded integer.
- display the whole number on the screen.
## ex 2
Assume that a railway train has N railroad cars attached together such as car1, car2, car3, ..., carN . A train can be considered as a list and each car corresponds to a node in this list.
- Each car carries a maximum capacity of passengers (int type) and has an id (char type). Both variables are user-defined values.
- Each car is reserved by a number of passengers (int type) (which should be less than its capacity). If there are any cars that don’t have any passengers, they should be removed from the train.
- It is possible to add new cars to the train.
- A function is available to display all cars’ information or the length of the train.
Implement a program in C/C++ using Linked List to manage the train and test all functions.
+22
View File
@@ -0,0 +1,22 @@
#include "../common/arraylist.h"
#include <stdio.h>
int main(int argc, char const *argv[])
{
ldaArrayList lda;
ldalistinit(&lda);
ldalistpush(&lda, 1);
ldalistpush(&lda, 2);
ldalistpush(&lda, 5);
ldalistpush(&lda, 10);
ldalistpush(&lda, 20);
ldalistpush(&lda, 30);
ldalistadd(&lda, 4, 50); // correct af
ldalistprint(&lda);
int g;
ldalistpop(&lda, &g);
int f;
ldalistremove(&lda, 6, &f);
ldalistprint(&lda);
printf("%d %d",g, f);
return 0;
}
+109
View File
@@ -0,0 +1,109 @@
// for printf
#include <stdio.h>
#include "arraylist.h"
// stack list
void ldalistinit(ldaArrayList *l)
{
l->size = 0;
}
int ldalistlen(ldaArrayList *l)
{
return l->size;
}
int ldalistcheck(ldaArrayList *l)
{
if (ldalistlen(l) >= 100)
return -1;
return 0;
}
int ldalistpush(ldaArrayList *l, int value)
{
if (ldalistcheck(l) != 0)
return -1;
l->list[l->size++] = value;
return 0;
}
int ldalistadd(ldaArrayList *l, int at, int value)
{
if (ldalistcheck(l) != 0)
return -1;
int size = ldalistlen(l);
if (at > size)
return -1;
else if (at == size)
{
return ldalistpush(l, value);
}
else
{
for (int i = size; i > at; i--)
{
l->list[i] = l->list[i - 1];
};
l->list[at] = value;
l->size += 1;
return 0;
}
}
int ldalistpop(ldaArrayList *l, int *put_here)
{
if (ldalistlen(l) <= 0)
return -1;
*put_here = l->list[l->size--];
return 0;
}
int ldalistremove(ldaArrayList *l, int at, int *put_here)
{
if (ldalistlen(l) <= 0)
return -1;
int size = ldalistlen(l);
if (at > size)
return -1;
else if (at == size)
{
return ldalistpop(l, put_here);
}
else
{
*put_here = l->list[at];
for (int i = at; i++ > size;)
{
l->list[i] = l->list[i - 1];
};
return 0;
}
}
int ldalistlookup(ldaArrayList *l, int at, int *copy_here)
{
if (at > ldalistlen(l))
return -1;
*copy_here = l->list[at];
return 0;
}
void ldalistprint(ldaArrayList *l)
{
printf("[");
for (int i = 0,
cur,
_ = ldalistlookup(l, i, &cur) || printf("%d", cur);
++i < ldalistlen(l) && printf(", ");
_ = ldalistlookup(l, i, &cur) || printf("%d", cur))
;
printf("]");
};
// int main(int argc, char const *argv[])
// {
// /* code */
// return 0;
// }
+24
View File
@@ -0,0 +1,24 @@
// for printf
// stack list
#ifndef COMMON_LDAARRAYLIST_H
#define COMMON_LDAARRAYLIST_H
typedef struct LdaArrayList
{
int size;
int list[100];
} ldaArrayList;
void ldalistinit(ldaArrayList *l);
int ldalistlen(ldaArrayList *l);
int ldalistcheck(ldaArrayList *l);
int ldalistpush(ldaArrayList *l, int value);
int ldalistadd(ldaArrayList *l, int at, int value);
int ldalistpop(ldaArrayList *l, int *put_here);
int ldalistremove(ldaArrayList *l, int at, int *put_here);
int ldalistlookup(ldaArrayList *l, int at, int *copy_here);
void ldalistprint(ldaArrayList *l);
#endif
+3
View File
@@ -0,0 +1,3 @@
# DSA
this Sucks Ass