Agenda eletronica em pascal

Disponível somente no TrabalhosFeitos
  • Páginas : 2 (352 palavras )
  • Download(s) : 0
  • Publicado : 17 de maio de 2012
Ler documento completo
Amostra do texto
#include
#include
#include

#define STRING_INIT 50
#define LINES_INIT 25

struct item {
char *nome;
char *endereco;
int telefone;
};

char* le_linha() {
int i = 0, j =STRING_INIT;
char c, *str;

str = malloc(sizeof(char) * j);
while ((c = getc(stdin)) && (c != '\n')) {
if (c == EOF) return 0;
if (i >= j) {
str = realloc(str, j *= 2);
}
str[i++] =c;
}
str[i] = '';

return str;
}

char** le_texto() {
int i = 0, j = LINES_INIT;
char **txt, *tmp;

txt = malloc(j * (sizeof(char*)));
while ((tmp = le_linha())) {
txt[i] =tmp;
if (i >= j) txt = realloc(txt, j *= 2);
i++;
}

return txt;
}

char** ordena_texto (char** txt) {
int i = 0, j = 1;
char **ret, *tmp;

while (txt[i]) {
while(txt[j]) {if (strcmp(txt[i], txt[j]) >= 0) {
tmp = txt[i];
txt[i] = txt[j];
txt[j] = tmp;
}
j++;
}
i++;
j = i;
}
return ret;
}

struct item* le_itens() {
int i = 0, j= LINES_INIT;
struct item *p;

p = malloc (sizeof(*p) * j);

while (1) {
if (i >= j) p = realloc (p, j *= 2);
p[i].nome = le_linha();
if (!p[i].nome) break;
p[i].endereco =le_linha();
scanf("%d\n", &p[i].telefone);
i++;
}

return p;
}

void imprime_itens (struct item *p) {
int i = 0;

while (p[i].nome) {
printf ("Nome: %s\n", p[i].nome);
printf("Endereço: %s\n", p[i].endereco);
printf ("Telefone: %d\n\n", p[i].telefone);
i++;
}

}

void imprime_texto (char** txt) {
int i = 0;
while (txt[i])
printf("%s\n",txt[i++]);}

void troca (void *coisa1, void *coisa2) {
void *tmp;
tmp = &coisa1;
coisa1 = &coisa2;
coisa2 = &tmp;
}

struct item* ordena_itens (struct item *p) {
int i = 0, j = 1, tmpi;char *tmp;

while (p[i].nome) {
while (p[j].nome) {
if (strcmp(p[i].nome, p[j].nome) >= 0) {
tmp = p[i].nome;
p[i].nome = p[j].nome;
p[j].nome = tmp;

tmp =...
tracking img