Skip to content
Open

AP #10

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 8 additions & 5 deletions 1.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,22 @@ class container {
public:
float* p;
container(int s) :size(s){}
const int& getsize() { return size;}
int& getsize() { return size;}

};

class vector :public container {

int call_num;
static int call_num;
public:
explicit vector(int l) :len(l),size(1 * 100){
explicit vector(int l) :len(l), container(100 * l){
p = new float();
}
vector(container c1):len(c1.getsize() / 100),container(c1.getsize()){
p = new float();
}
int len;
int& getlen() const {
int& getlen() {
call_num ++;
return len;
}
Expand All @@ -35,6 +38,6 @@ int main() {
c2.getsize() = 20;
cout << c2.getsize();
vector v2 = 100;
v2.getlen = 40;
v2.getlen() = 40;
cout << v2.getlen();
}
8 changes: 4 additions & 4 deletions 2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ using namespace std;

// count all the specific char in the whole array of strings
int countAllSpecificChars(string sArr[], int arrLength, char specificChar) {
int count;
for (int i = 0; i <= arrLength; ++i)
for (int j = 0; j <= sArr[i].size(); ++j)
int count = 0;
for (int i = 0; i < arrLength; ++i)
for (int j = 0; j < sArr[i].size(); ++j)
// if the jth char of the string is the specific char
if (sArr[i][j] = specificChar)
if (sArr[i][j] == specificChar)
count++;
return count;
}
Expand Down
84 changes: 45 additions & 39 deletions 3.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,79 +3,85 @@
#define MAX_SIZE 200
int arr[MAX_SIZE];

typedef struct alfa * alfaptr;
typedef struct alfa* alfaptr;

struct alfa {
long long x;
long long int x;
alfaptr next;
};
alfaptr rear = NULL, front = NULL;
void push(int x)
alfaptr rear = NULL, front = NULL, tail = NULL;
void push(long long int x)
{
alfaptr node;
node = (alfaptr)malloc(sizeof(struct alfa));
node->x = x;
if (!front)
front = node;
if (!front) {
rear = tail = front = node;
node->next = NULL;
}
else {
rear->next = node;
rear = node;
rear->next = tail;
tail = rear;
}
}

void pop()
{
alfaptr node;
if (!front)
if (!front) {
printf("ERROR1");
else
{
node = front->next;
front = node;
return;
}
if (front == rear) {
front = rear = tail = NULL;
return;
}
alfaptr tmp = rear;
for (; tmp->next != front; tmp = tmp->next){}
tmp->next = NULL;
front = tmp;
}
void search(int x)
int search(long long int x)
{
alfaptr node = front;
alfaptr node = rear;
int counter = 0;
while (node)
while (node) {
if (node->x == x)
printf("%d", counter);
else {
printf("ERROR2");
break;
}
counter++;
node = node->next;
}
return counter;
}

void rpop() {//pop last element
alfaptr node = front;
while (node)
node = node->next;
free(rear);
rear = node;
alfaptr tmp = rear;
tail = rear = tmp->next;
free(tmp);
}

void set()
{
alfaptr node = front;
alfaptr node = rear;
for (int i = 0; i < MAX_SIZE && node; i++, node = node->next)
arr[i] = node->x;
}

int size()
{
alfaptr node = front;
int count;
while (node)
count++;node = node->next;
alfaptr node = rear;
int count = 0;
while (node) {
count++;
node = node->next;
}
return count;
}

void show()
{
if (!front) {
for (int i = 0; i < MAX_SIZE; i++)
if (front) {
alfaptr node = rear;
for (int i = 0; i < MAX_SIZE && node; i++, node = node->next)
printf("%d ", arr[i]);
}
else
Expand All @@ -88,7 +94,7 @@ int average()
{

alfaptr node = front;
int sum = 0, count;
int sum = 0, count = 0;
while (node) {
sum += node->x;
count++;
Expand All @@ -103,11 +109,11 @@ void main()
long long int x;
while (true)
{
scanf("%d", &cmd);
scanf_s("%d", &cmd);
switch (cmd)
{
case 1://push
scanf("%lld", &x);
scanf_s("%lld", &x);
push(x);
break;
case 2://pop
Expand All @@ -117,8 +123,8 @@ void main()
rpop();
break;
case 4://search
scanf("%lld", &x);
search(x);
scanf_s("%lld", &x);
printf("%d\n", search(x));
break;
case 5://set
set();
Expand All @@ -127,7 +133,7 @@ void main()
show();
break;
case 7://size
printf("%d", size());
printf("%d\n", size());
break;
case 10:
exit(0);
Expand Down
4 changes: 2 additions & 2 deletions 4.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
int main()
{
float arr[5] = { 12.5, 10.0, 13.5, 90.5, 0.5 };
float *ptr1 = &arr[0];
float *ptr2 = ptr1 + 3;
float* ptr1 = arr;
float* ptr2 = arr + 3;
printf("%f", *ptr2 - *ptr1);
return 0;
}
8 changes: 4 additions & 4 deletions 5.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
int main()
{
int arr[] = { 10, 20, 30, 40, 50, 60 };
int *ptr1 = arr;
int *ptr2 = arr + 5;
printf("%d\n", (*ptr2 - *ptr1));
printf("%c", (char)(*ptr2 - *ptr1));
int* ptr1 = arr;
int* ptr2 = &arr[5];
printf("%d\n", *ptr2 - *ptr1);
printf("%c", (float)(*ptr2 - *ptr1));
return 0;
}
6 changes: 3 additions & 3 deletions 6.cpp
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#include<stdio.h>
int main()
{
int a;
char *x;
x = (char *)&a;
char a;
char* x;
x = &a;
a = 512;
x[0] = 1;
printf("%d\n", a);
Expand Down
6 changes: 3 additions & 3 deletions 7.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
int *p = arr;
++*p;
p += 2;
int* p = arr;
++* p;
*p += 2;
printf("%d", *p);
return 0;
}
8 changes: 3 additions & 5 deletions 8.cpp
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
#include<stdio.h>
const char * f(const char **p) {
const char* f(const char** p) {
auto q = (p + sizeof(char))[1];
return q;
}
int main() {
const char * str[] = { "Wish","You","Best",":D" };
const char* str[] = { "Wish","You","Best",":D" };
printf("%c%c ", *f(str), *(f(str) + 1));
printf("%c%c%c%c\n", **str, *(*(str + 1) + 1), *((str + 2)[-1] + 1), **&*(&str[-1] + 1));



// I have no idea :)
}