Merge idk

This commit is contained in:
ldlda committed 2024-10-25 07:11:54 +07:00
commit eca93ba44b
4 files changed
+408

No files matched your search

+165
View File
@@ -0,0 +1,165 @@
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int val;
struct Node *pNext;
} Node;
typedef struct UnBoundedInt
{
int size;
Node *pHead;
} UnBoundedInt;
void init_ubI (UnBoundedInt *I)
{
I->size = 0;
I->pHead = NULL;
}
Node *initNode(int val)
{
Node *node = (Node *)malloc(sizeof *node);
if (node == NULL)
exit(0);
node->val = val;
node->pNext = NULL;
return node;
}
int isEmpty(UnBoundedInt *I)
{
return (I->size == 0 || I->pHead == NULL);
}
void display(UnBoundedInt *I)
{
if (I->size == 0)
{
printf("0");
return;
}
Node *current = I->pHead;
if (current->val == 1)
printf("+");
else if (current->val == -1)
{
printf("-");
}
current = current ->pNext;
while (current != NULL)
{
printf("%d",current->val);
current = current ->pNext;
}
printf("\n");
}
void insert_digit(int new_val, Node * pcurr,UnBoundedInt *I)
{
Node *newNode = initNode(new_val);
if (isEmpty(I))
{
I->pHead = newNode;
}else
{
newNode->pNext = pcurr->pNext;
pcurr->pNext = newNode;
I->size++;
}
}
void insert_d(UnBoundedInt *n,Node *node_before_the_inserting_node,int val)
{
Node *new = initNode(val);
if (n->pHead == NULL){
n->pHead = new;
}else
{
new->pNext = node_before_the_inserting_node->pNext;
node_before_the_inserting_node->pNext = new;
}
n->size++;
}
void insert_digit_finale(UnBoundedInt *I, int val, int digit_pos)
{
Node *new = initNode(val);
if (I->pHead == NULL)
{
I->pHead = new;
}else
{
Node *pcurr = I->pHead;
for (int i = 1;i<=digit_pos && pcurr->pNext != NULL;i++)
{
pcurr = pcurr->pNext;
}
new->pNext = pcurr->pNext;
pcurr->pNext = new;
}
I->size++;
display(I);
}
void remove_digit(UnBoundedInt *I, int val)
{
Node *p = I->pHead;
if (p->val == val)
{
I->pHead = p->pNext;
free(p);
I->size--;
return;
}
Node *q = p->pNext;
int cnt = 1;
while ((p->val != val) && cnt < I->size)
{
q = p;
p = p->pNext;
cnt++;
}
if (p != NULL)
{
q->pNext = p->pNext;
I->size--;
free(p);
}
}
void Calc_sum(UnBoundedInt *I)
{
int Sum = 0;
Node *current = I->pHead->pNext;
while (current->pNext != NULL)
{ Sum += current->val;
current = current->pNext;
}
Sum += current->val;
printf("Sum is: %d",Sum);
}
int main()
{
UnBoundedInt *new_num = (UnBoundedInt *)malloc(sizeof(UnBoundedInt));
init_ubI(new_num);
insert_digit_finale(new_num,1,0);
insert_digit_finale(new_num,5,0);
insert_digit_finale(new_num,3,1);
insert_digit_finale(new_num,7,2);
insert_digit_finale(new_num,9,1);
Calc_sum(new_num);
return 0;
}
+143
View File
@@ -0,0 +1,143 @@
#include <stdio.h>
#include <stdlib.h>
typedef struct Car
{
int id;
int passengers;
struct Car *nextCar;
} Kar;
Kar *initCar(int id,int passengers)
{
Kar *newCar = (Kar*)malloc(sizeof(Kar));
newCar->id = id;
newCar->passengers = passengers;
newCar->nextCar = NULL;
return newCar;
}
typedef struct Train
{
int length;
Kar *headCar;
} ChooChoo;
void init_new_train(ChooChoo *T)
{
T-> length = 0;
T -> headCar = NULL;
}
int isTrain_without_Car(ChooChoo *T)
{
return (T->length == 0 || T->headCar == NULL);
}
int addCar(ChooChoo *T,Kar *newCar,int newcarPos)
{
if (isTrain_without_Car(T))
{
T->headCar = newCar;
}else
{
Kar *currCar = T->headCar;
for (int i=0;i<=newcarPos && currCar->nextCar != NULL;i++)
{
currCar = currCar->nextCar;
}
newCar->nextCar = currCar->nextCar;
currCar->nextCar = newCar;
}
T->length++;
}
void display_all_info(int train_or_car,ChooChoo *T)
{
if (train_or_car == 0)
printf("Train's length is %d \n",T->length);
else if (train_or_car == 1)
{ Kar *currCar = T->headCar;
for (int i=0; i <= T->length && currCar != NULL;i++)
{
printf("Car with the id of %d has %d passenger(s) is in position: %d \n",currCar->id,currCar->passengers, i);
currCar = currCar->nextCar;
}
}
}
void PegThisCarOut(int id,ChooChoo *T)
{
Kar *currCar = T->headCar;
if (currCar->id == id)
{
T->headCar = currCar->nextCar;
free(currCar);
T->length--;
return;
}
Kar *idkCar = currCar;
int cnt = 1;
while ((currCar->id != id) && cnt < T->length)
{
idkCar = currCar;
currCar = currCar->nextCar;
cnt++;
}
if (currCar != NULL)
{
idkCar->nextCar = currCar->nextCar;
T->length--;
free(currCar);
}
}
void removePassenger(int id,ChooChoo *T,int passenger_to_remove)
{
if (isTrain_without_Car(T))
{ printf("Car not found man");
return;
}
Kar *currCar = T->headCar;
while (currCar->nextCar != NULL && currCar->id != id)
currCar = currCar->nextCar;
if (currCar->id == id)
{ if (currCar->passengers - passenger_to_remove > 0)
{
currCar->passengers -= passenger_to_remove;
printf("Car %d now has %d passengers\n",currCar->id,currCar->passengers);
}
else
PegThisCarOut(currCar->id,T);
}
}
int main()
{
ChooChoo *newTrain = (ChooChoo*)malloc(sizeof(ChooChoo));
init_new_train(newTrain);
addCar(newTrain,initCar(109,54),0);
addCar(newTrain,initCar(832,26),1);
addCar(newTrain,initCar(371,26),2);
//display_all_info(0,newTrain);
display_all_info(1,newTrain);
printf("\n");
removePassenger(832,newTrain,11);
display_all_info(1,newTrain);
printf("\n");
removePassenger(371,newTrain,26);
display_all_info(1,newTrain);
printf("\n");
removePassenger(109,newTrain,55);
display_all_info(1,newTrain);
return 0;
}
+35
View File
@@ -0,0 +1,35 @@
#include <stdio.h>
#include <stdarg.h>
int Getting_each_digit(int n)
{
int cnt = 0;
int sum = 0;
while (n%10 != 0)
{
printf("%d \n",n%10);
sum += n%10;
n = n/10;
}
printf("Final sum is : %d",sum);
//return digits_arr;
}
int Getting_each_digit_Recursively(int n)
{
if (n%10 == 0)
return 0;
else
{
return n%10 + Getting_each_digit_Recursively(n/10);
//printf("%d\n",n%10);
}
}
int main()
{
int n = 9512;
printf("%d",Getting_each_digit_Recursively(n));
return 0;
}
+65
View File
@@ -0,0 +1,65 @@
#include <stdio.h>
int Check_Prime(int n)
{
if (n<=1) return 0;
for (int i = 2;i<n;i++)
{
if (n%i == 0)
{
// printf("%d is Not prime",n);
return 0;
}
}
//printf("%d is prime",n);
return 1;
}
int Check_Sphenic(int n)
{
int divisors[2];
int no = 0;
int divisor_counter = 0;
for (int i=2;i<n;i++)
{
if (n%i == 0)
{
if (Check_Prime(i) == 1)
{
divisors[divisor_counter] = i;
divisor_counter++;
}
no ++;
}
}
if ((no == 6) && divisor_counter == 3)
{
if (divisors[0] && divisors[1] && divisors[2])
return 1;
}
}
int FindAllSphenic(int n)
{
if (n<30)
{
return -1;
}
else
{
if (Check_Sphenic(n) == 1)
{
printf("this goofy num (%d) is sphenic\n",n);
}
FindAllSphenic(n-1);
}
}
int main()
{
int n = 200;
FindAllSphenic(n);
return 0;
}