#include <stdio.h>
#include <string.h>

// define a estrutura do item
struct _item {
  char nome[40];
  float preco;
};

// define o tipo Item
typedef struct _item Item;

// define a lista como sendo um vetor de 100 posicoes do tipo Item
Item Lista[100];

// a funcao InsereItem insere um elemento na posicao Pos especificada
void InsereItem(int Pos, char *nomeitem, float precoitem) {
  if (Pos<100) {
    strcpy(Lista[Pos].nome,nomeitem);
    Lista[Pos].preco=precoitem;
  }
  else {
    printf ("Não cabe na lista!\n");
  }
}

// a funcao BuscaItem efetua uma busca na lista e retorna a posicao onde
// esta o elemento buscado. Se nao achar, retorna -1.
// Esta funcao usa a rotina strcmp, que retorna 0 se duas strings sao
// iguais.
int BuscaItem(char *nomeitem) {
  int Pos;

  for (Pos=0;Pos<100;Pos++)  // percorre a lista do início ao fim
  // se o elemento tem o mesmo nome que aquele que está sendo buscado,
  // retorna a posicao
    if (strcmp(Lista[Pos].nome,nomeitem)==0)
      return Pos;
  
  // se chegou ao final e não achou, mostra mensagem de erro e retorna -1
  printf ("Nao achei!\n");
  return -1;
}

// a funcao MostraItem mostra o elemento que esta na posicao Pos na lista
void MostraItem(int Pos) {
  printf ("Nome: %s\n",Lista[Pos].nome);
  printf ("Preco: %.2f\n",Lista[Pos].preco);
}

main () {
  int Posicao;

  printf ("Insere Banana na posicao 0. Preco: R$ 0.85\n");
  InsereItem(0,"Banana",1.15);
  printf ("Insere Laranja na posicao 1. Preco: R$ 1.09\n");
  InsereItem(1,"Laranja",1.09);
  printf ("Insere Melancia na posicao 2. Preco: R$ 2.19\n\n");
  InsereItem(2,"Melancia",2.19);

  printf ("Buscando item de nome Laranja\n");
  Posicao=BuscaItem("Laranja");
  printf ("Laranja esta na posicao %d\n",Posicao);
  printf ("Mostrando dados:\n");
  MostraItem(Posicao);

  printf ("Trocando preco da Laranja para R$ 0.99\n");
  InsereItem(Posicao,"Laranja",0.99);
  MostraItem(Posicao);

  printf ("\nBuscando item de nome Kiwi\n");
  Posicao=BuscaItem("Kiwi");

  printf ("\nInserindo 100 elementos a partir da primeira posicao.\n");
  for (Posicao=0;Posicao<100;Posicao++) {
    InsereItem(Posicao,"Elemento",0.0);
  }
  printf ("\nInserindo mais um elemento\n");
  InsereItem(Posicao,"MaisUm",1.00);

}

