Compare commits

..
5 Commits
8 changed files with 581 additions and 173 deletions

No files matched your search

+158 -18
View File
@@ -1,25 +1,165 @@
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
// step 1: get last digit by n%10;
// step 2: get first digit by n / pow(10,log10(n))
// step 3: swap first digit with last by n- last digit + first
// step 4: swap last digit with first by n - pow(10,log10(n))*first digit: get the numbers aside from first
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()
{
int n = 8673;
int last_digit = n%10;
int c = log10(n);
int b = pow(10,c);
int first_digit = n / b;
printf("first digit is %d and last digit is %d\n",first_digit,last_digit);
int n_without_fd = n - b*first_digit;
int new_n = last_digit*b + n_without_fd;
new_n = new_n - last_digit + first_digit;
printf("n: %d",new_n);
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;
}
+133 -14
View File
@@ -1,24 +1,143 @@
#include <stdio.h>
#include <stdlib.h>
void findMax(int *max, int a)
typedef struct Car
{
if (a > *max)
{
max = &a;
printf("max is now: %d", *max);
}
else
printf("Not bigger");
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()
{
int a = 6;
int b = 5;
int *pB = &b;
findMax(pB,a);
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;
}
+25
View File
@@ -0,0 +1,25 @@
#include <stdio.h>
#include <math.h>
// step 1: get last digit by n%10;
// step 2: get first digit by n / pow(10,log10(n))
// step 3: swap first digit with last by n- last digit + first
// step 4: swap last digit with first by n - pow(10,log10(n))*first digit: get the numbers aside from first
int main()
{
int n = 8673;
int last_digit = n%10;
int c = log10(n);
int b = pow(10,c);
int first_digit = n / b;
printf("first digit is %d and last digit is %d\n",first_digit,last_digit);
int n_without_fd = n - b*first_digit;
int new_n = last_digit*b + n_without_fd;
new_n = new_n - last_digit + first_digit;
printf("n: %d",new_n);
return 0;
}
+24
View File
@@ -0,0 +1,24 @@
#include <stdio.h>
void findMax(int *max, int a)
{
if (a > *max)
{
max = &a;
printf("max is now: %d", *max);
}
else
printf("Not bigger");
}
int main()
{
int a = 6;
int b = 5;
int *pB = &b;
findMax(pB,a);
return 0;
}
+69 -69
View File
@@ -1,70 +1,70 @@
#include <stdio.h>
typedef struct complex_no
{
float real;
float imaginary;
} Complex;
Complex add(Complex a, Complex b)
{
Complex Sum;
Sum.real = a.real + b.real;
Sum.imaginary = a.imaginary + b.imaginary;
}
Complex multi(Complex a, Complex b)
{
Complex Product;
Product.real = a.real * b.real - a.imaginary*b.imaginary;
Product.imaginary = a.real*b.imaginary + a.imaginary*b.real;
}
int main()
{
return 0;
}
/* Backing Up
#include <stdio.h>
typedef struct Complex_No
{
float real;
float imaginary;
} Complex;
Complex Add(Complex no1, Complex no2)
{
Complex Sum;
Sum.real = no1.real + no2.real;
Sum.imaginary = no1.imaginary + no2.imaginary;
return Sum;
}
Complex Multiply(Complex no1, Complex no2)
{
Complex Product;
Product.real = no1.real*no2.real - no1.imaginary*no2.imaginary;
Product.imaginary = no1.real*no2.imaginary + no1.imaginary*no2.real;
return Product;
}
int main()
{
Complex no1, no2;
no1.real = 5;
no1.imaginary = 3.2;
no2.real = 13;
no2.imaginary = 2;
Complex Sum = Add(no1,no2);
Complex Multiplication = Multiply(no1,no2);
printf("Sum is %f + i%f\n",Sum.real,Sum.imaginary);
printf("Product is %f + i%f",Multiplication.real,Multiplication.imaginary);
}
#include <stdio.h>
typedef struct complex_no
{
float real;
float imaginary;
} Complex;
Complex add(Complex a, Complex b)
{
Complex Sum;
Sum.real = a.real + b.real;
Sum.imaginary = a.imaginary + b.imaginary;
}
Complex multi(Complex a, Complex b)
{
Complex Product;
Product.real = a.real * b.real - a.imaginary*b.imaginary;
Product.imaginary = a.real*b.imaginary + a.imaginary*b.real;
}
int main()
{
return 0;
}
/* Backing Up
#include <stdio.h>
typedef struct Complex_No
{
float real;
float imaginary;
} Complex;
Complex Add(Complex no1, Complex no2)
{
Complex Sum;
Sum.real = no1.real + no2.real;
Sum.imaginary = no1.imaginary + no2.imaginary;
return Sum;
}
Complex Multiply(Complex no1, Complex no2)
{
Complex Product;
Product.real = no1.real*no2.real - no1.imaginary*no2.imaginary;
Product.imaginary = no1.real*no2.imaginary + no1.imaginary*no2.real;
return Product;
}
int main()
{
Complex no1, no2;
no1.real = 5;
no1.imaginary = 3.2;
no2.real = 13;
no2.imaginary = 2;
Complex Sum = Add(no1,no2);
Complex Multiplication = Multiply(no1,no2);
printf("Sum is %f + i%f\n",Sum.real,Sum.imaginary);
printf("Product is %f + i%f",Multiplication.real,Multiplication.imaginary);
}
*/
+72 -72
View File
@@ -1,73 +1,73 @@
#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_off(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])
printf("%d is sphenic",n);
}
}
int Check_Sphenic(int n)
{
if (n < 30) printf("sphenic");
int divisors_cnt = 0;
for (int i = 2;i<n;i++)
{
if (n%i == 0)
{
divisors_cnt++;
if (divisors_cnt > 6)
{printf("not sphenic");
break;}
}
}
if (divisors_cnt == 6)
printf("sphenic");
return 1;
};
int main()
{
int n = 64;
Check_Sphenic_off(n);;
return 0;
#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_off(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])
printf("%d is sphenic",n);
}
}
int Check_Sphenic(int n)
{
if (n < 30) printf("sphenic");
int divisors_cnt = 0;
for (int i = 2;i<n;i++)
{
if (n%i == 0)
{
divisors_cnt++;
if (divisors_cnt > 6)
{printf("not sphenic");
break;}
}
}
if (divisors_cnt == 6)
printf("sphenic");
return 1;
};
int main()
{
int n = 64;
Check_Sphenic_off(n);;
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;
}