/*
    第2種情報処理技術者試験    平成4年度・秋期・午後 問18
                                BohYoh Shibata PREPARATION
*/

#include <stdio.h>
#include <string.h>
#define HASHSIZE 63

struct srec {
   struct srec *next;
   int  price;
   char *name;
};

void dprice(char *, struct srec *[]);
unsigned hash(char *);
struct srec *search(struct srec *, char *);

/* 商品名 sname を検索し,その単価を表示する */
void dprice(char *sname, struct srec *hashtab[])
{
    unsigned i;
    struct srec *srecp;

    i = hash(sname) ;
    srecp = search(hashtab[i], sname );
    if (srecp != NULL)
        printf("%s = %d\n", sname, srecp->price );
    else
        printf("%s NOT FOUND\n", sname );
}

/* 文字列 s のハッシュ値を返す関数 */
unsigned hash(char *s)
{
    unsigned i = 0;

    while(*s != '\0')
        i += *s++;
    return i % HASHSIZE;
}


/* p が指すレコードのリストから商品名 s のレコードを探す関数 */
struct srec *search(struct srec *p, char *s)
{
    while(( p != NULL) && (strcmp(p->name,s) != 0))
        p =  p->next ;
    return p;
}