Aš daryčiau taip: visus duomenis saugočiau pirmiausia stuktūroje, patogiau tvarkyti mano nuomone. Main funkcijoje susikuri 2 tos pačios struktūros masyvus, abu vienodo dydžio t.y. 100 vietų, tada tikrini ar antrame masyve(kuris iš pradžių yra tusčias) jau yra įrašyta reikšmė iš pirmojo (kuris saugo duomenis iš failo).
for(int i = 0; i < n; i++){
int k = yra(B, n2, A[i].nr); //Tikrina ar konkreti diena jau yra B masyve jei nera grazina -1
if(k>=0) {B[k].barak += A[i].barak; B[k].lep += A[i].lep; B[k].raudon += A[i].raudon;}
else {
B[n2] = A[i];
n2++
}
}
int yra(Diena B[], int n2; int nr){
for(int i = 0; i < n2; i++){
if(B[i].nr == nr) return i;
}
return -1;
}
EDIT: nepastebėjau, kad nereikia dienų kai neranda nei vieno, bet su paprasta if sąlyga šią problemą išspręsi
Tas pats lyg rašytum struct Foo Obj1, *PObj2, Arr[5]; kažkokioje kitoje vietoje, tiesiog sukursi struktūros kintamajį, pointerį į kintamajį ir kintamųjų masyvą.