Como programar uma Agenda telefonica

1. Como programar uma Agenda telefonica

Fabiano
onabi

(usa Outra)

Enviado em 07/12/2011 - 17:17h

Eu preciso de ajuda para desenvolver um programa em linguagem C.
Eu comecei a faze-lo, mas desconheço alguns procedimentos.
Teria como alguem ajudar?

Entrada:

O arquivo de entrada contém o número de contatos (inteiro), o nome completo (nome e um sobrenome, separados por espaço) e o telefone de cada contato. Após ler os contatos e carregar no vetor, seu programa deve ler do teclado uma das duas opções disponíveis: se digitar 1, o programa ordena pelo campo de telefone; se digitar 2, o programa ordena pelo campo nome; e qualquer outro valor o programa imprime na tela a mensagem "Opcao invalida." e termina.

Saida:

O programa deve ter um procedimento mostracontatos que mostra a agenda completa na saída padrão, sendo que deve imprimir a palava "Nome: " seguido pelo nome de cada contato e na linha seguinte a palavra "Telefone: " seguido pelo telefone de cada contato.

O esqueleto para ajudar a desenvolver:

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

#define MAX_STR 200

//definição do tipo de registro
typedef struct contato{
char nome[MAX_STR];
int telefone;
} Contato;

//procedimento que le os contatos do arquivo arq e grava no vetor agn
// n e o parametro que informa o numero de contatos
void lecontatos(Contato agn[], int n, FILE *arq);

//procedimento de ordenação dos contatos pelo campo telefone
// n e o parametro que informa o numero de contatos
void ordenatelefone(Contato agn[], int n);

//procedimento de ordenação dos contatos pelo campo nome
// n e o parametro que informa o numero de contatos
void ordenanomes(Contato agn[], int n);

//procedimento que grava o vetor de contatos no arquivo de nome indicado pela string caminho
// n e o parametro que informa o numero de contatos
void gravacontatos(Contato agn[], int n, char* caminho);

//procedimento que imprime o vetor de contatos na tela
// n e o parametro que informa o numero de contatos
void mostracontatos(Contato agn[], int n);

int main(int argc, char* argv[]){

//INSERIR SEU CÓDIGO AQUI
return 0;
}

//IMPLEMENTAR OS CÓDIGOS DAS FUNÇÕES AQUI


  


2. Re: Como programar uma Agenda telefonica

Fabiano
onabi

(usa Outra)

Enviado em 08/12/2011 - 09:00h

Se caso alguem ainda puder ajudar:
consegui desenvolver o codigo, mas apresentei dificuldades nas funções gravacontatos e mostracontatos.

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

#define MAX_STR 200

//definição do tipo de registro
typedef struct contato{
char nome[MAX_STR];
int telefone;
} Contato;

//procedimento que le os contatos do arquivo arq e grava no vetor agn
// n e o parametro que informa o numero de contatos
void lecontatos(Contato agn[], int n, FILE *arq){
int i;

arq = fopen ("arquivo.txt", "r"); //abertura do arquivo - somente leitura

if (arq == NULL) { //erro na abertura do arquivo
perror("teste2.txt");
}
else{
for(i=0;i<n;i++){
fscanf(arq,"%s", agn[i].nome);
fscanf(arq,"%d", &agn[i].telefone);
fclose(arq);
}
}
}
//procedimento de ordenação dos contatos pelo campo telefone
// n e o parametro que informa o numero de contatos
void ordenatelefone(Contato agn[], int n){ //procedimento para organizar agenda
int i,j; //usados nas trocas de ordem
Contato aux;
for(i=0;i<n-1;i++) { //primeiro for da troca
for(j=0;j<n-1;j++) //for interno para a organização de todos os numeros
if (agn[j].telefone > agn[j+1].telefone) {
aux=agn[j];
agn[j]=agn[j+1];
agn[j+1]=aux;
}
}
}
//procedimento de ordenação dos contatos pelo campo nome
// n e o parametro que informa o numero de contatos
void ordenanomes(Contato agn[], int n){ //procedimento para organizar agenda
int i,j; //usados nas trocas de ordem
Contato aux;
for(i=0;i<n-1;i++) { //primeiro for da troca
for(j=0;j<n-1;j++) //for interno para a organização de todos os numeros
if (agn[j].nome > agn[j+1].nome) {
aux=agn[j];
agn[j]=agn[j+1];
agn[j+1]=aux;
}
}
}


//procedimento que grava o vetor de contatos no arquivo de nome indicado pela string caminho
// n e o parametro que informa o numero de contatos
void gravacontatos(Contato agn[], int n, char* caminho){
FILE *fr, *fw;
char c;

if (agn < n) { //se nao informou o numero minimo de argumentos
printf("Uso: %s <arq_origem> <arq_destino>\n", caminho);
}

fr = fopen (arquivo, "r");
fw = fopen (caminho, "w");

//leitura e copia elemento a elemento
while (fscanf(fr, "%c", &c) != EOF)
fprintf(fw,"%c", c);

fclose(fr);
fclose(fw);
}
//procedimento que imprime o vetor de contatos na tela
// n e o parametro que informa o numero de contatos
void mostracontatos(Contato agn[], int n, int numero){
int i;
int numero;
if(numero == 1){
for(i=0;i<n;i++){
printf("%s", agn[i].nome);
printf("%d", agn[i].telefone);
}
}
if(numero == 2){
for(i=0;i<n;i++){
printf("%d", agn[i].telefone);
printf("%s", agn[i].nome);
}
}
}

int main(int argc, char* argv[]){
int n, i, caminho;
int numero, v1[100];
Contato agn[200];
scanf("%d", &n);

void gravacontatos(agn,n);
void lecontatos(agn,n);

scanf("%d", &numero);

void mostracontatos(agn,n,numero);


//INSERIR SEU CÓDIGO AQUI
system("PAUSE");
return 0;
}

//IMPLEMENTAR OS CÓDIGOS DAS FUNÇÕES AQUI




3. Re: Como programar uma Agenda telefonica





Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts