Logo Hardware.com.br
Will_slip
Will_slip Novo Membro Registrado
5 Mensagens 0 Curtidas

trabalho da faculdade.... Em C...

#1 Por Will_slip 31/05/2007 - 15:06
oih...
sou estudante de faculdade e preciso fazer um trabalho de programação EM C mais naum estou conseguindo...


o programa deve:

Criar um cadastro eletrônico de pessoas que será armazenado em um arquivo.
Informações do Cadastro
Neste cadastro devem ser armazenadas as seguintes informações sobre pessoas.
Nome: até 50 caracteres
Endereço: até 50 caracteres
Idade: inteiro
Peso: real
Salário: real
Data de nascimento: Data
O tipo Data deve ser criado no programa.
Operações sobre o Cadastro
1. Leitura do cadastro
2. Impressão de todas as pessoas do cadastro
3. Busca por um nome
4. Busca por salário maior que S
5. Inserção
6. Remoção por nome
7. Gravação dos Dados
8. Ordenação por idade



me ajudem por favor.... naum estou conseguindo fzr..



obridado..
peczenyj
peczenyj Geek Registrado
3K Mensagens 75 Curtidas
#3 Por peczenyj
31/05/2007 - 16:18
puxa!

ja lhe adianto que vc vai precisar saber escrever/ler em arquivos, usar estruturas de dados e alocação dinâmica de memoria.


sugiro que vc faça o seguinte:

0) Aprenda C
http://www.mtm.ufsc.br/~azeredo/cursoC/

http://www.cppreference.com/index.html
http://www.java2s.com/Code/C/CatalogC.htm

1) crie um programa em C com uma estrutura (struct) parte das informações da pessoa. Coloque os dados da pessoa dentro do programa e só imprima as informações.

2) agora salve / leia estes dados de um arquivo.

3) crie um programa faça o mesmo que o anterior, mas que trabalhe com um array de "pessoas" (array pequeno, umas 3 pessoas).

Quando vc tiver feito estes pequenos subprogramas, algumas coisas ficarão mais claras na hora de implementar *todo* este trabalho.

Deixe pra fazer os menuzinhos pro fim... ;-)
peczenyj
peczenyj Geek Registrado
3K Mensagens 75 Curtidas
#5 Por peczenyj
01/06/2007 - 13:56
so tipo naum consigo escrever no arquivo sem que ele sobrescreva oke jah esta escrito...


Então vc precisa estudar 2 coisas

1) vc pode escrever sem sobreescrever TODO o arquivo se vc abri-lo no modo 'append' -- ai vc vai escrever no fim do arquivo

2) se vc quer alterar um dado no meio do arquivo, existem varias formas de fazer isso, mas vc vai ter q reescrever TODO o arquivo para isso. Ou vc joga TUDO para a memoria, altera o que quer e grava de novo ou usa um arquivo temporario para guardar o que vc não quer alterar.
intruso
intruso Tô em todas Registrado
1.8K Mensagens 41 Curtidas
#6 Por intruso
01/06/2007 - 14:26
Will_slip disse:
bah...
jah fiz umas funcoes...

so tipo naum consigo escrever no arquivo sem que ele sobrescreva oke jah esta escrito...


Siga as dicas do peczenyj, vou te dar apenas mais uma dica.

Quando for copiar o arquivo para a memória, copie somente até a parte que foi alterada, dai você já insere as alterações e depois copia o restante, depois regrava o arquivo no disco.

abraço.
Will_slip
Will_slip Novo Membro Registrado
5 Mensagens 0 Curtidas
#9 Por Will_slip
01/06/2007 - 17:46
bah pessoal me dah uma forca nesse menu...

deve ser bm idiota mais eu naum sei oke tah dando erro...


[code=rich]#include
#include
#include

struct cadastro
{
char nome[50];
char end[50];
float peso;
float salario;
char datnasc[6];
};


int main(int argc, char *argv[])
{
int exe=0,i=0;
struct cadastro cadastro[10000];
while(exe==0)
{
cadastro[i].salario=0;
cadastro[i].peso=0;
printf(" digite seu nome\n");
gets(cadastro[i].nome);
printf("digite o seu endereço\n");
gets(cadastro[i].end);
printf("digite o seu peso\n");
scanf("%f",&cadastro[i].peso);
printf("digite o seu salario\n");
scanf("%f",&cadastro[i].salario);
printf("digite sua data de nascimento\n");
gets(cadastro[i].datnasc);
printf("digite 1 para sair e 0 para continuar...\n");
scanf("%d", &exe);
i=i+1;
}

}
[/code]


seih lah.... eh que eu to fzndu no windows.... mais na facul eh linux....
jose_silva_neto
jose_silva_n... General de Pijama Registrado
4.6K Mensagens 98 Curtidas
#10 Por jose_silva_n...
01/06/2007 - 20:26
Will_slip disse:

seih lah.... eh que eu to fzndu no windows.... mais na facul eh linux....


Boa noite,

O código está em ANSI-C, deve compilar em qualquer SO.

No Linux


gcc -Wall arquivo.c -o arquivo
Fique com Deus

Kali


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

struct cadastro
{
char nome[50];
char end[50];
float peso;
float salario;
char datnasc[6];
};

typedef struct cadastro Cadastro;

int main(int argc, char **argv)
{
int exe = 0,i = 0;
int contador = 0;
char c;
Cadastro cadastro[10000];

while (exe == 0)
{
cadastro[i].salario = 0;
cadastro[i].peso = 0;

printf(" Digite seu nome\n&quot;
do
{
c = getchar();
cadastro[i].nome[contador] = c;
++contador;
}while (c != '\n');
cadastro[i].nome[contador - 1] = '\0';


contador = 0;
printf("Digite o seu endereco\n&quot;
do
{
c = getchar();
cadastro[i].end[contador] = c;
++contador;
}while (c != '\n');
cadastro[i].end[contador - 1] = '\0';

printf("Digite o seu peso\n&quot;
scanf("%f",&cadastro[i].peso);

printf("Digite o seu salario\n&quot;
scanf("%f",&cadastro[i].salario);

contador = 0;
printf("Digite sua data de nascimento\n&quot;
do
{
c = getchar();
cadastro[i].datnasc[contador] = c;
++contador;
}while (c != '\n');
cadastro[i].datnasc[contador - 1] = '\0';


printf("Digite 1 para sair e 0 para continuar...\n&quot;
scanf("%i", &exe);

++i;
}

return(0);

}
Will_slip
Will_slip Novo Membro Registrado
5 Mensagens 0 Curtidas
#11 Por Will_slip
22/06/2007 - 14:15
o pessoal eu to com um problema nessa função...

ela naum tah lendo o arquivo corretamente...

[code=rich]
#include
#include
#include

struct cadastro{
char nome[50];
char end[50];
int idade;
float peso;
float salario;
char datnasc[9];
};



int main(int argc, char *argv[])
{
struct cadastro cadastro[1000];
{
FILE *arq;
char L[100];
int i,j=0, tamanho=0, tam=0;
arq = fopen("willyamteste.txt", "r"); // Abre um arquivo TEXTO para LEITURA
if (arq == NULL) // Se houve erro na abertura
{
printf("Problemas na abertura do arquivo\n");
exit(1);
}
i = 0;
while(!feof(arq))
{
fgets(L,3,arq);
tamanho=atoi(L);
for(i=0;i {
fgets(cadastro[i].nome,50,arq);
tam=strlen(cadastro[i].nome);
cadastro[i].nome[tam-1]='\0'; // Tira o \n no final da string
fgets(cadastro[i].end,50,arq);
tam=strlen(cadastro[i].end);
cadastro[i].end[tam-1]='\0';
fgets(L,100,arq);
cadastro[i].idade=atoi(L);
fgets(L,100,arq);
cadastro[i].peso=atof(L);
fgets(L,100,arq);
cadastro[i].salario=atof(L);
fgets(cadastro[i].datnasc,9,arq);
tam=strlen(cadastro[i].datnasc);
cadastro[i].datnasc[tam-1]='\0';
}
}
while(j {
printf("\n %s",cadastro[j].nome);
printf("\n %s", cadastro[j].end);
printf("\n %d", cadastro[j].idade);
printf("\n %.2f", cadastro[j].peso);
printf("\n %.2f", cadastro[j].salario);
printf("\n %s", cadastro[j].datnasc);
j=j+1;
}


fclose(arq);

}
system("PAUSE");
return 0;
}
[/code]


o arquivo deve conter informações dispostas assim...
[code=rich]
joão silva
rua são paulo
64
84,5
1200,64
15\12\79
[/code]

me ajudem...
naum consigo axar o erro do meu codigo..
jose_silva_neto
jose_silva_n... General de Pijama Registrado
4.6K Mensagens 98 Curtidas
#12 Por jose_silva_n...
23/06/2007 - 03:02
Bom dia,

Não trabalhei no seu problema porque sou "bonzinho", eu quero aprender também. O código abaixo "funciona", mas ainda está longe de ser aceitável. Leia, faça testes e volte para conversar. Não desapareça ok ?

Fique com Deus

Kali


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

#define max_length 50

struct cadastro
{
char nome[50];
char end[50];
int idade;
float peso;
float salario;
char datnasc[9];
};

typedef struct cadastro Cadastro;

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

Cadastro cadastro[1000];
FILE *arq;
char L[max_length + 1];
int i = 0,j; // contadores
int tamanho;


arq = fopen("willyamteste.txt", "r&quot; // Abre um arquivo TEXTO para LEITURA

if (arq == NULL) // Se houve erro na abertura
{
printf("Problemas na abertura do arquivo\n&quot;
exit(EXIT_FAILURE);
}

//Lendo o arquivo e armazenando as strings nas respectivas variáveis
while (!feof(arq))
{

fgets(L,max_length + 1,arq);

// Testando se a linha capturada é uma linha em branco
// No caso positivo, lemos novamente
tamanho = strlen(L) - 1;
if (tamanho == 0)
fgets(L,max_length + 1,arq);

strcpy(cadastro[i].nome,L);
//strncat(cadastro[i].nome,L,strlen(L));

fgets(L,max_length + 1,arq);
strcpy(cadastro[i].end,L);
//strncat(cadastro[i].end,L,strlen(L));

fgets(L,max_length + 1,arq);
cadastro[i].idade = atoi(L);

fgets(L,max_length + 1,arq);
cadastro[i].peso = atof(L);

fgets(L,max_length + 1,arq);
cadastro[i].salario = atof(L);

fgets(L,max_length + 1,arq);
strcpy(cadastro[i].datnasc,L);
//strncat(cadastro[i].datnasc,L,strlen(L));

++i;

}

// Fechando o arquivo
fclose(arq);

// Imprimindo os campos capturados

for (j = 0; j < i;j++)
{
printf("%s\n",cadastro[j].nome);
printf("%s\n", cadastro[j].end);
printf("%d\n", cadastro[j].idade);
printf("%.2f\n", cadastro[j].peso);
printf("%.2f\n", cadastro[j].salario);
printf("%s\n\n", cadastro[j].datnasc);
}


return(0);
}
Will_slip
Will_slip Novo Membro Registrado
5 Mensagens 0 Curtidas
#13 Por Will_slip
25/06/2007 - 02:25
bah meu eu fiz assim...
so que depois naum entendo o pq se eu tentar usar os valores da srtuct ele naum me mostra...

void ler()
{
struct cadastro cadastro[1000];
{
FILE *arq;
char L[100];
int i,j=0, tamanho=0, tam=0;
arq = fopen("CadastroClientes.txt", "r&quot; // Abre um arquivo TEXTO para LEITURA
if (arq == NULL) // Se houve erro na abertura
{
printf("Problemas na abertura do arquivo\n&quot;
//exit(1);
}
fgets(L,3,arq);
tamanho=atoi(L);
for(i=0;i<tamanho;i++)
{
fgets(cadastro[i].nome,50,arq);
tam=strlen(cadastro[i].nome);
cadastro[i].nome[tam-1]='\0'; // Tira o \n no final da string
fgets(cadastro[i].end,50,arq);
tam=strlen(cadastro[i].end);
cadastro[i].end[tam-1]='\0';
fgets(L,100,arq);
cadastro[i].idade=atoi(L);
fgets(L,100,arq);
cadastro[i].peso=atof(L);
fgets(L,100,arq);
cadastro[i].salario=atof(L);
fgets(cadastro[i].datnasc,100,arq);
tam=strlen(cadastro[i].datnasc);
cadastro[i].datnasc[tam-1]='\0';
}
fclose(arq);
while(j<tamanho)
{
printf("\n %s",cadastro[j].nome);
printf("\t %s", cadastro[j].end);
printf("\t %d", cadastro[j].idade);
printf("\t %.2f", cadastro[j].peso);
printf("\t %.2f", cadastro[j].salario);
printf("\t %s\n", cadastro[j].datnasc);
j=j+1;
}


}

}
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal