[Volta]

 

Pequena aplicação de remoção/inserção

O programa abaixo administra uma coleção de números digitados pelo usuário. (A coleção pode conter mais de uma cópia de um mesmo número.) O usuário pode

A coleção é armazenada em ordem crescente. 

/* Este programa administra uma coleção de números.
// Digite 
//           i 222
//
// para inserir 222 na coleção. Digite 
//
//           r 333
/
// para remover 333 da coleção. Digite qualquer caractere
// diferente de 'i' e 'r' para sair.
///////////////////////////////////////////////////// */

#include <stdio.h>
#include <stdlib.h>
void inserir (int k, int x, int n, int v[]);
void remover (int k, int n, int v[]);

#define MAX 100

typedef enum {FALSE, TRUE} bool;

int main (void)
{
   int v[MAX], n, x;

   n = 0;
   while (TRUE) { 
      /* a coleção está em v[0..n-1], em ordem crescente */
      char str[2], op;
      int k;
      printf ("\nOperação? ");
      scanf ("%s", str);
      op = str[0];
      switch (op) {
         case 'i': if (n >= MAX) return EXIT_FAILURE;
                   scanf ("%d", &x);
                   for (k = 0; k < n && v[k] < x; ++k) ;
                   n = inserir (k, x, n, v);
                   break;
         case 'r': if (n <= 0) return EXIT_FAILURE;
                   scanf ("%d", &x);
                   for (k = 0; k < n && v[k] < x; ++k) ;
                   if (k < n && v[k] == x) 
                      n = remover (k, n, v);
                   break;
         default:  return EXIT_SUCCESS;
      }   
      printf ("Temos: ");
      for (k = 0; k < n; ++k) 
         printf (" %d", v[k]);
      printf ("\n");
   }
}

O código de operação digitado pelo usuário é armazenado em str[0];  o vetor str tem dois elementos para acomodar o caractere nulo que marca o fim da string.

O programa é interrompido se o espaço alocado a v estiver esgotado e o usuário tentar inserir mais um elemento. O programa também é interrompido se o usuário tentar remover um elemento de uma coleção vazia.

 


URL of this site: www.ime.usp.br/~pf/algoritmos/
1998 | Last modified: Mon Oct 18 08:58:18 BRT 2010
Paulo Feofiloff
IME-USP