B
Bert
Problem is documented at http://ace.delos.com/usacoprob2?a=deAhyErCKsK&S=gift1
Why doesn't this work?
/*
ID: albert.4
LANG: C
TASK: gift1
*/
#include <stdio.h>
#define MAXNAMELEN 14
main()
{
struct friend {
int money, ngifts; /* no. gifts */
char name[MAXNAMELEN];
};
int NP; /* no. people */
FILE* in = fopen("gift1.in" , "r");
FILE* out = fopen("gift1.out", "w");
fscanf(in, "%d", &NP);
struct friend f[NP];
int i = 0;
for (; i < NP; i++)
{
fscanf(in, "%s", f.name);
}
/* Until input tells us how much each friend has (later in this
prog), they're all broke */
i = 0;
for (; i < NP; i++)
{
f.money = 0;
}
char temp[MAXNAMELEN];
for (i = 0; i < NP; i++)
{
fscanf(in, "%s", temp);
if (f.name == temp)
{
int init; /* initial amount of money */
fscanf(in, "%d %d", init, f.ngifts);
f.money = init * -1; /* init is given to people */
f.money += init % f.ngifts;
int amteachpersongets = init / f.ngifts;
int j = 0;
char temp2[MAXNAMELEN];
for (; j < f.ngifts; j++)
{
fscanf(in, "%s", temp2);
int k = 0;
for (; k < NP; k++)
{
if (f[k].name == temp2)
{
f[k].money += amteachpersongets;
break;
}
}
}
}
}
for (i = 0; i < NP; i++)
{
fprintf(out, "%s %d\n", f.name, f.money);
}
exit(0);
}
Why doesn't this work?
/*
ID: albert.4
LANG: C
TASK: gift1
*/
#include <stdio.h>
#define MAXNAMELEN 14
main()
{
struct friend {
int money, ngifts; /* no. gifts */
char name[MAXNAMELEN];
};
int NP; /* no. people */
FILE* in = fopen("gift1.in" , "r");
FILE* out = fopen("gift1.out", "w");
fscanf(in, "%d", &NP);
struct friend f[NP];
int i = 0;
for (; i < NP; i++)
{
fscanf(in, "%s", f.name);
}
/* Until input tells us how much each friend has (later in this
prog), they're all broke */
i = 0;
for (; i < NP; i++)
{
f.money = 0;
}
char temp[MAXNAMELEN];
for (i = 0; i < NP; i++)
{
fscanf(in, "%s", temp);
if (f.name == temp)
{
int init; /* initial amount of money */
fscanf(in, "%d %d", init, f.ngifts);
f.money = init * -1; /* init is given to people */
f.money += init % f.ngifts;
int amteachpersongets = init / f.ngifts;
int j = 0;
char temp2[MAXNAMELEN];
for (; j < f.ngifts; j++)
{
fscanf(in, "%s", temp2);
int k = 0;
for (; k < NP; k++)
{
if (f[k].name == temp2)
{
f[k].money += amteachpersongets;
break;
}
}
}
}
}
for (i = 0; i < NP; i++)
{
fprintf(out, "%s %d\n", f.name, f.money);
}
exit(0);
}