This repository has been archived on 2026-05-11. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
prog-103-p-06-2030/recap_island/fundamentals/villagers.c
T
2026-03-02 02:12:28 +01:00

106 lines
2.3 KiB
C

#include "village.h"
#include <ctype.h>
#include <stddef.h>
#include <strings.h>
#include <stdio.h>
char *oldest_villager(const struct villager *village, unsigned int population){
if(!village || population <= 0) return NULL;
unsigned int oldest = 0;
char *name = NULL;
size_t index = 0;
while(index < population){
if(village[index].age > oldest){
name = village[index].name;
oldest = village[index].age;}
index ++;
}
return name;
}
float average_village_age(const struct villager *village, unsigned int population){
if(!village || population <= 0) return -1;
float tot = 0;
size_t index = 0;
while(index < population){
tot += village[index].age;
index ++;
}
return tot / population;
}
void sort_village(struct villager *village, unsigned int population){
//ordre : WORKER - SELLER - MUSICIAN - UNEMPLOYED
if(!village || population <= 0) return ;
size_t index = 0;
int is_sort = 0;
while(!is_sort){
is_sort = 1;
index = 0;
while(index < population - 1){
if(village[index].job > village[index + 1].job){
struct villager tmp = village[index];
village[index] = village[index + 1];
village[index + 1] = tmp;
is_sort = 0;
}
index ++;
}
}
}
/*
int main(void)
{
struct villager village[2] = {
{
.name = "Tom Nook",
.age = 99,
.job = SELLER,
.favorite_quote = "It's 42 bells",
},
{
.name = "Marie",
.age = 23,
.job = WORKER,
.favorite_quote = "It's so expensive!",
},
};
unsigned int population = 2;
char *oldest = oldest_villager(village, population);
printf("Hi %s!\n", oldest);
oldest = oldest_villager(NULL, 0);
printf("%p\n", oldest);
float avg = average_village_age(village, population);
printf("Avg: %.2f\n", avg);
avg = average_village_age(village, 0);
printf("Avg: %.2f\n", avg);
sort_village(village, population);
for (unsigned int i = 0; i < population; i++)
{
printf("I'm %s (%d)\n", village[i].name, village[i].age);
}
}*/