Pagini recente » Cod sursa (job #1141210) | Cod sursa (job #1174012) | Cod sursa (job #66191) | Istoria paginii runda/amberheard | Cod sursa (job #438273)
Cod sursa(job #438273)
#include <stdio.h>
#include <stdlib.h>
FILE *f;
typedef struct gutui
{
int N;// numarul de gutui din copac
int H;// inaltimea maxima la care ajunge Gigel
int U;// cu cat se ridica crengile copacului dupa culegerea unei gutui
int v[100000];// vector in care retin inaltimea si greutatea gutuilor
int inaltime;// inaltimea si greutatea gutuilor din copac
int greutate;
int greutate_maxima ;// greutatea maxima a gutuilor pe care le poate culege Gigel
}date_gutui;
void read_file (const char *fis)
{
int i,k;
date_gutui gutui;
printf ("ana are mere\n");
f = fopen (fis, "r");
fscanf (f, "%d", gutui.N); // numarul de gutui din copac
fscanf (f, "%d", gutui.H); // inaltimea maxima la care ajunge Gigel
fscanf (f, "%d", gutui.U); // cu cat se ridica crengile copacului dupa culegerea unei gutui
// pe urmatirele N linii ale fisierului sunt date referitoare la inaltimea si greutatea gutuilor din copac
k = 2*gutui.N ;// vectorul are (2*nr de gutui) elemente pt ca pt fiecare gutuie am o inaltime si o greutate
for(i=0; i<k; i++)
{
// inaltimea si greutatea gutuilor le bag intr-un vector
fscanf (f, "%d", gutui.v[i]);
}
fclose(f);
}
void print_file (const char *fis)
{
printf("ana are gutui?");
date_gutui gutui;
f = fopen(fis, "w");
//fprintf (f, "%d", gutui.N);// vreau sa scriu orice dar nu merge........?????????
fprintf (f, "%d", gutui.greutate_maxima);
}
void culegGutui()
{
int i,k,max=0;
date_gutui gutui;
k = 2*gutui.N;
// parcurg vectorul cu inaltimile respectiv greutatile gutuilor
for(i=0; i<k; i++)
{
// vreau sa aleg gutuia cu inaltimea cea mai mare
if (gutui.v[i%2] > max) // v[i]%2 reprezinta elementele pare din vectorul v adica inaltimile gutuilor fata de sol
{
max = gutui.v[i%2];// max va fi gutuia cu inaltimea cea mai mare fata de sol
k = k-1; // aici culeg gutuia care se afla la inaltimea maxima (adica o elimin din vector)
gutui.greutate_maxima = gutui.greutate_maxima + gutui.v[(i%2)+1] ; // aici e "cantarul"
// dupa ce aflu maximul si-l "culeg" vreau ca celelalte elementele PARE din vector sa creasca cu U
// adica vreau sa adum U la inaltimilecelorlalte gutui
for (i=0; i<k; i++)
{
if (gutui.v[i%2] != 0)
{
// cresc inaltimile cu U
gutui.inaltime = gutui.v[i%2] + gutui.U;
if (gutui.inaltime <= gutui.H) //daca inaltimile gutuilor nu sunt mai mari decat inaltimeali gigel
{
gutui.greutate_maxima = gutui.greutate_maxima + gutui.v[(i%2)+1];
}
}
}
}
}
}
int main()
{
read_file("gutui_in.txt");
printf("ana are si pere\n");
void culegeGutui();
print_file("gutui_out.txt");
return 0;
}