Это оригинальные инструкции программы: https://prnt.sc/rgf0we
Это то, что я сделал до сих пор. Может кто-нибудь помочь мне с тем, почему все узлы выводят одинаковое количество созданных узлов и возвращаемых узлов? Я создал основу для этой программы, но по какой-то причине выходные данные одинаковы для каждого узла.
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
int created, returned, NotReturned;
struct node *next;
}*node;
void Nodecreated(int createNode);
void CreatePacket(int j);
int main()
{
int createNode, j;
j = 100;
printf("How many node should be made: "); /*askes the user to input how many nodes wants to be created*/
scanf("%d", &createNode);
Nodecreated(createNode);
return 0;
}
/*A function that can create nodes based off of the users input*/
void Nodecreated(int createNode)
{
struct node *next, *newNode,*temp, *fnNode;
int num, i;
/*creates the first node to the linked list*/
newNode = (struct node *)malloc(sizeof(struct node));
for(i = 1; i <= createNode; i++)
{
/*creates a node and gives it an id which is then transverse to the other nodes*/
fnNode = (struct node *)malloc(sizeof(struct node));
fnNode -> data = i;
printf("----------------------\n");
printf("node %d\n", i);
CreatePacket(100);/*A function to create another linked list that will count the packets*/
next = fnNode -> next;
temp = next;
}
}
void CreatePacket(int j)
{
int totalcreated, totalreturned;
struct node node1, node2, node3, node4;
node1.created = 0;
node1.returned = 0;
node2.created = 0;
node2.returned = 0;
node3.created = 0;
node3.returned = 0;
node4.NotReturned = 0;
/*goes through a loop 100 times and whenever i is a multiples of the 3 it will create a packet*/
for(int n = 1; n <= j; n++)
{
if(n % 2 == 0)
{
node1.created = node1.created + 1;
node1.returned = node1.returned + 1;
}
else
{
node4.NotReturned = node4.NotReturned + 1;
}
if(n % 3 == 0)
{
node2.created = node2.created + 2;
node2.returned = node2.returned + 2;
}
else
{
node4.NotReturned = node4.NotReturned + 1;
}
if(n % 5 == 0)
{
node3.created = node3.created + 3;
node3.returned = node3.returned + 3;
}
else
{
node4.NotReturned = node4.NotReturned + 1;
}
}
/*tally up all the packets created and returned as well as the packets that haven't been created and prints it out*/
totalreturned = node1.returned + node2.returned + node3.returned;
totalcreated = node1.created + node2.created + node3.created;
printf("Packets created: %d\n", totalcreated);
printf("Packets returned: %d\n", totalreturned);
printf("Packets left out: %d\n", node4.NotReturned);
printf("----------------------\n");
}