C++ Programlama ödevime bakabilir misiniz?

Katılım
23 Mart 2020
Mesajlar
213
Reaksiyon skoru
41
X Kişiden oluşan bir çemberde ilk kişiden başlayarak her 3 kişiden birisi eleniyor. Bu işlem çemberin sonuna gelindiğinde kalan kişiler için devam ediyor. Bu uygulama son 2 kişi kalınca bitiyor. X kişi sayısını klavyeden okuyarak çemberi oluşturacak bir bağlı liste üzerinde simüle ediniz. son kalan kişilerin yerlerini bulunuz.

Projeyi nasıl yapabilirim nerelerden yardım alabilirim veya yardımcı olabilir misiniz ?
 
#include <iostream>

using namespace std;

struct Node {
int data;
Node* next;
};

class Circle {
private:
Node* head;
int size;

public:
Circle() {
head = nullptr;
size = 0;
}

void createCircle(int numPeople) {
for (int i = 1; i <= numPeople; ++i) {
insert(i);
}
connectLastToFirst();
}

void insert(int data) {
Node* newNode = new Node;
newNode->data = data;
newNode->next = nullptr;

if (head == nullptr) {
head = newNode;
head->next = head;
} else {
Node* temp = head;
while (temp->next != head) {
temp = temp->next;
}
temp->next = newNode;
newNode->next = head;
}

++size;
}

void connectLastToFirst() {
Node* temp = head;
while (temp->next != head) {
temp = temp->next;
}
temp->next = head;
}

void eliminateEveryThird() {
Node* curr = head;
Node* prev = nullptr;

while (size > 2) {
for (int i = 0; i < 2; ++i) {
prev = curr;
curr = curr->next;
}

prev->next = curr->next;
delete curr;
curr = prev->next;
--size;
}
}

void printRemainingPeople() {
Node* temp = head;
cout << "Remaining people: ";
while (size > 2) {
cout << temp->data << " ";
temp = temp->next;
--size;
}
cout << endl;
}
};

int main() {
int numPeople;
cout << "Enter the number of people: ";
cin >> numPeople;

Circle circle;
circle.createCircle(numPeople);
circle.eliminateEveryThird();
circle.printRemainingPeople();

return 0;
}
Mesajlar otomatik olarak birleştirildi:

#include <iostream>

using namespace std;

struct Node {
int data;
Node* next;
};

class Circle {
private:
Node* head;
int size;

public:
Circle() {
head = nullptr;
size = 0;
}

void createCircle(int numPeople) {
for (int i = 1; i <= numPeople; ++i) {
insert(i);
}
connectLastToFirst();
}

void insert(int data) {
Node* newNode = new Node;
newNode->data = data;
newNode->next = nullptr;

if (head == nullptr) {
head = newNode;
head->next = head;
} else {
Node* temp = head;
while (temp->next != head) {
temp = temp->next;
}
temp->next = newNode;
newNode->next = head;
}

++size;
}

void connectLastToFirst() {
Node* temp = head;
while (temp->next != head) {
temp = temp->next;
}
temp->next = head;
}

void eliminateEveryThird() {
Node* curr = head;
Node* prev = nullptr;

while (size > 2) {
for (int i = 0; i < 2; ++i) {
prev = curr;
curr = curr->next;
}

prev->next = curr->next;
delete curr;
curr = prev->next;
--size;
}
}

void printRemainingPeople() {
Node* temp = head;
cout << "Remaining people: ";
while (size > 2) {
cout << temp->data << " ";
temp = temp->next;
--size;
}
cout << endl;
}
};

int main() {
int numPeople;
cout << "Enter the number of people: ";
cin >> numPeople;

Circle circle;
circle.createCircle(numPeople);
circle.eliminateEveryThird();
circle.printRemainingPeople();

return 0;
}
ChatGPT'den baktım knk belki işine yarar.
 
Yeni mesajlar Yeni Konu Aç  

   

SON KONULAR

Forum istatistikleri

Konular
1,181,945
Mesajlar
10,654,186
Üyeler
187,592
Son üye
cagrigunaydin
Geri
Top