Ir para conteúdo
Fórum Script Brasil

Barao

Membros
  • Total de itens

    32
  • Registro em

  • Última visita

Sobre Barao

Últimos Visitantes

1.010 visualizações

Barao's Achievements

0

Reputação

  1. Comece definindo a nota pra aprovados. Pra calcular a média faca: for(i=0;i<tamVetor;++i){ media+=nota[i]; } media/= tamVetor; Pra calcular alunos aprovados e reprovados faca: for(i=0;i<tamVetor;++i){ if(nota[i] == reprovado) reprovado++; else aprovado++; } Para exibir todas as notas: for(i=0;i<tamVetor;++i) printf("%d\n", nota[i]; printf("%d\n", aprovado); printf("%d\n", reprovado);
  2. Voce disse no enunciado que teria que ser na linguagem C, mas nas linhas abaixo esta utilizando funções biblioteca iostream do C++. Só pra constar que todos os comandos e funções do C estão disponíveis em C++ mas não posso dizer o contrario. cout << "Notas ordenadas \n"; for (i=0; i<24; i++) { cout << "\n"<< nota; } cout << "\n\n Maior Nota: " << nota[23] <<"\n"; cout << " Menor nota: " << nota[0] <<"\n"; average = MediaAritmetica(nota, n); cout << " Media das notas:" << average <<"\n";
  3. Se deseja se tornar um profissional de verdade, desista de código POG.(Programação orientada a Gambiarra).
  4. int i, j, teste, temp, testa, x; FILE *ptr; //esta linha esta errada ptr=abre_arquivo("arq.dat"); //O correto seria: if((ptr = fopen("file.dat", "ab+"))==NULL){//NULL e 0 são a mesma coisa perror(":"); return 1; } Escolha nomes sugestivo para suas variáveis torna seu código mais legível. Este for não tem logica, Veja só: i recebe 1 enquato i for maior ou igual a 0 i++ for (i=1; i>=0; i++){ teste = fread(&descobre,sizeof(descobre),1, ptr); if (teste != 1){ temp = i-1; break; } } neste trecho i já é maior e diferente que 0, e sempre será, pois i esta somando mais um a cada laco, logo seu for só possui uma expressão booleana neste laco, quando isso ocorre écoerente utilizar um while veja só: while(teste == 1){ teste = fread(&descobre,sizeof(descobre),1, ptr); if (teste != 1){ temp = i-1; } }
  5. Provavelmente seja o seu antivírus bloqueando o seu programa apÓs a compilacao tenta desativa-lo por 10 minutos e testa aqui compilou e funcionou. Boa Sorte.
  6. Nossa Seu código tem muitas advertências voce deve corrigir isso.
  7. Bom dia voce pode criar um laco for para percorre até o final do arquivo e um fscanf suprimindo a entrada do ( ; ) e carregando o restando dos dados para as variaveis da sua struct EXEMPLO: for(i=0; i < 20 && !feof(fp);i++){ fscanf(arq,"%d;%[^;]s ",&sua struct[i].a variavel); } Att. Barao.
  8. Seu código tem alguns erros voce viu o console apos a compilacão. Para armazenar vários valores em uma estrutura é necessário usar vetores e matrizes veja seu código abaixa utilizando matrizes e com erros corrigidos. Esta funcionando mas peço que você leia e entenda como foi feito se não nada vai te acrescentar. Att barão. #include <stdio.h> #include <stdlib.h> #include <locale.h> #define SIZE 50 int controle = 0;//só para controle de cadastros typedef struct{ char nome[SIZE][SIZE]; /*uma matriz de 50 x 50 */ char endereco[SIZE][SIZE]; int telefone[SIZE]; int cpf[SIZE]; int cdc[SIZE]; int cdd[SIZE]; } FUNCIONARIO; void fcadastro(FUNCIONARIO *cf){ int opcao; int i=0; do{ system("cls"); printf("INSIRA O NOME DO FUNCIONÁRIO: "); //fflush(stdin);use somente para limpar o buffer de saída scanf("%s", cf -> nome[i]);/*A funcao gets esta absoleta por causar overflow*/ printf("INSIRA O ENDEREÇO DO FUNCIONÁRIO: "); //fflush(stdin); use somente para limpar o buffer de saída scanf("%s", cf -> endereco[i]);/*A funcao gets esta absoleta por causar overflow*/ printf("INSIRA O TELEFONE DO FUNCIONÁRIO: "); scanf("%i", &cf -> telefone[i]); printf("INSIRA O CPF DO FUNCIONÁRIO: "); scanf("%i", &cf -> cpf[i]); printf("INSIRA O CÓDIGO DO CARGO: "); scanf("%i", &cf -> cdc[i]); printf("INSIRA O CÓDIGO DO DEPARTAMENTO: "); scanf("%i", &cf -> cdd[i]); i++; controle++;/*A cada cadastro soma +1 a variavel global controle assim vou saber quantos cadastro foram feitos vai facilitar a exibicao no for da funcao exibir*/ printf("Press... (1) para novo cadastro, Outro valor para sair...\n\n"); scanf("%d", &opcao); }while(opcao == 1); } void exbircf(FUNCIONARIO *cf){/*Passa como ponteiro tambem*/ int i=0; system("cls"); for(i=0; i <controle; i++){/*Exibi todos os cadastros realizados*/ printf("NOME DO FUNCIONÁRIO: %s\n", cf->nome[i]); printf("ENDEREÇO DO FUNCIONÁRIO: %s\n", cf->endereco[i]);/*O especificador de formato %i É para inteiros mas a variável endereco é um vetor char[50]*/ printf("TELEFONE DO FUNCIONÁRIO: %i\n", cf->telefone[i]); printf("CPF DO FUNCIONÁRIO: %i\n", cf->cpf[i]); printf("CÓDIGO DO CARGO: %i\n", cf->cdc[i]); printf("CÓDIGO DO DEPARTAMENTO: %i\n", cf->cdd[i]); printf("\n\n"); } } int main(){ setlocale(LC_ALL, "portuguese"); FUNCIONARIO cfuncionario; fcadastro(&cfuncionario); exbircf(&cfuncionario); system("pause"); return 0; }
  9. Tá ae um exemplo deste código compare e tire suas conclusões o código esta todo comentado e funcionando boa sorte. Att. Barao #include <stdio.h> #include <stdlib.h> #include <string.h>/*Necessário para strcmp();*/ #include <conio.h>/*Necessário para getch();*/ #define SIZE 50 //Variáveis globais char nome[SIZE][SIZE];/*Matriz 50 x 50 Suporta 50 strings com 50 posicoes */ int cpf[SIZE]; int rg[SIZE]; char curso[10][SIZE]; int telefone[SIZE]; int j=0; //só para controle de lacos int op; void cadastro(); void lista(); void pesquisa(); //Função principal int main(int argc, char *argv[]){/*Adicioneir mais dois argumentos na main por seguranca*/ //Menu do{ system("cls"); printf("\t\t\t\t--------"); printf("\n\t\t\t\t| Menu |"); printf("\n\t\t\t\t--------"); printf("\n\t\t Bem-vindo. Escolha o que deseja executar."); printf("\n----------------"); printf("\n 1 - Cadastrar |"); //Layout menu printf("\n 2 - Listar |"); printf("\n 3 - Pesquisar |"); printf("\n 4 - Sair |\n"); printf("----------------\n"); scanf("%d", &op); switch(op){ case 1: cadastro(); break; case 2: lista(); break; case 3: pesquisa(); break; case 4: system("exit"); break; default: printf("\nOpcao invalida.\n"); break; } }while(op!=4); return 0; } //Função cadastro void cadastro(){ static int linha = 0;/*Sempre inicie variaveis de controle de laco com zero o valor necessário*/ do{ system("cls");/*Limpa a tela só pra ficar com um visual melhor*/ printf("============================================"); printf(" \nDigite o Nome: "); scanf("%s", nome[linha]);/*não é necessário &(E comercial) em scanf para pegar strings) */ printf(" \nDigte o CPF: "); scanf("%d", &cpf[linha]); printf(" \nDigite o RG: "); scanf("%d", &rg[linha]); printf(" \nDigite o Curso: "); scanf("%s", curso[linha]);/*não é necessário &(E comercial) em scanf para pegar strings) */ printf(" \nDigite o Telefone: "); scanf("%d", &telefone[linha]); printf("\n Digite 1 para continuar cadastrando ou outro valor para voltar ao menu.\n"); scanf("%d", &op); linha++; j++;/*Cada cadastro realizado soma +1 a variável j assim na hora de listar vou saber a quantidade cadastros realizados*/ }while(op==1); } //Fim da função cadastro //Função lista void lista(){ int i; for(i=0; i < j; i++){ /*Se colocar SIZE ele listara 50 cadastros mesmo os vetores estando vazios pra resolver isso utilizei a variável j na função cadastro*/ /*if(cpf[i]>0){ if sem necessidade*/ printf("\nNome: %s \nCPF: %d\nRG: %d\nCurso: %s\nTelefone: %d", nome[i], cpf[i], rg[i], curso[i], telefone[i]); /*break; Sem necessidade não entendi muito o seu uso aqui*/ printf("\n\n"); } getch(); } /*getchar();porque getchar duas veses em seguida ?*/ /*} chave sem necessidade*/ //Fim da função lista //Função pesquisa void pesquisa(){ printf("============================================"); int i; int cpfPesquisa; char nomePesquisa[SIZE]; do{ system("cls"); printf(" \nDigite 1 para pesquisar por Nome ou 2 para pesquisar por CPF.\n"); scanf("%d", &op); switch(op){ case 1: system("cls"); printf(" \nDigite o Nome que procura: "); scanf("%s", nomePesquisa);/*não é necessário &(E comercial) em scanf para pegar strings*/ for(i=0; i<j; i++){/*Se colocar SIZE ele listara 50 cadastros mesmo os vetores estando vazios pra resolver isso utilizei a variável j na função cadastro*/ if(strcmp(nome[i], nomePesquisa)==0){ //poderia tirar o ==0 que funcionaria também printf("\nNome: %s\nCPF: %d\nRG: %d\nCurso: %s\nTelefone: %d", nome[i], cpf[i], rg[i], curso[i], telefone[i]); } system("cls"); getch(); break; } case 2: system("cls"); printf(" \nDigite o CPF que procura: "); scanf("%d", &cpfPesquisa); for(i=0; i<j; i++){/*Se colocar SIZE ele listara 50 cadastros mesmo os vetores estando vazios pra resolver isso utilizei a variável j na função cadastro*/ if(cpf[i]==cpfPesquisa); printf("\nNome: %s\nCPF: %d\nRG: %d\nCurso: %s\nTelefone: %d", nome[i], cpf[i], rg[i], curso[i], telefone[i]); } break; default: printf("\nOpcao invalida."); break; } printf ("\n Digite 1 para continuar pesquisando ou outro valor para voltar ao menu."); scanf("%d", &op); }while(op==1); } //Fim função pesquisa
  10. Olá para resolver esta questão você tera que criar o vetor e depois ordena-lo em ordem crescente pesquise no Google algo com o nome ordenacao de vetor tem muito material relacionado a esse assunto. eu poderia ate te passar o algorítimo mas creio que não te acrescentaria muito conhecimento.
  11. Olá crie dois vetores C e N crie um laco for e jogue os valores digitados na posição atual do laco. Exemplo: int vetor_c[6]; int vetor_n[6]; int i;/*Variavel de controle de laco*/ for(i=0; i<3; i++){ printf("Digite os valores do vetor C:"); scanf("%d", &vetor_c); printf("Digite os valores do vetor N:"); scanf("%d", &vetor_n); Agora com relacão ao espaço '\ 0' não é possível colocar um caractere em um vetor de inteiros.
  12. Barao

    IDE C C++

    alguém poderia me indicar uma IDE que: seja leve. que tenha opção de autocomplete. que tenha um Ótimo DEBUG. que tenha suporte a UTF8. Não me importa se pago ou Não. PS. Já testei code::blocks (Ótima IDE Mas não tem a opcao Auto complete funcionando 100%) Já testei Visual Stúdio Profissional (Muito Arquivo e pesado)
  13. #include <stdio.h> #include <stdlib.h> #include <string.h> struct dados{ int cod; char nome[30]; float salario; char setor[30]; char funcao[30]; }; struct dados cadastro[100]; void cadastrar (){ int cont = 0, i = 0; char soun; FILE *arquivo; arquivo = fopen("dados.txt", "r"); if (arquivo == NULL){ printf ("\nERRO !! Banco não existe, criando novo Banco de Dados..."); fflush(stdin); getchar (); arquivo = fopen("dados.txt", "a"); } else { printf ("\n\nBanco de Dados Carregado com Sucesso !!"); while (!feof(arquivo)){ // enquando não(!) chegar no final do arquivo fread(&cadastro[i], sizeof(struct dados), 1, arquivo); if (!feof(arquivo)){ // condicão caso não chegue no final, ou seja tem arquivos cont = cadastro[i].cod + 1; i++; } } } do{ cadastro[cont].cod = cont; printf("\nCodigo: %d", cadastro[cont].cod); getchar (); printf("\nNome: "); fgets (cadastro[cont].nome, 30, stdin); printf("\nSalario: "); scanf ("%f", &cadastro[cont].salario); getchar(); printf("\nSetor de Trabalho: "); gets (cadastro[cont].setor); printf("\nFuncao: "); gets (cadastro[cont].funcao); printf ("\nLentra (n) para novo cadastro, ou qualquer outra para sair: "); scanf ("%c", &soun); cont++; getchar (); if (cont >= 100){ printf ("Esgotado limite de cadastro !!"); soun = 'a'; } }while (soun == 'n'); arquivo = fopen("dados.txt", "w"); for(i=0; i < cont; i++){ fwrite(&cadastro[i], sizeof(struct dados), 1, arquivo); } fclose(arquivo); } void listar (){ int i, cont = 0; FILE *arquivo; arquivo = fopen("dados.txt", "rt"); if (arquivo == NULL){ printf ("\nERRO !! Banco não existe, criando novo Banco de Dados..."); fflush(stdin); getchar (); arquivo = fopen("dados.txt", "w+"); } while (!feof(arquivo)){ fread(&cadastro[cont], sizeof(struct dados), 1, arquivo); if (!feof(arquivo)){ cont++; } } fclose(arquivo); for(i=0; i < cont; i++){ printf("\n\nCodigo: %d\n\n", cadastro[i].cod); printf("Nome: %s\n",cadastro[i].nome); printf("Salario: %5.2f\n\n",cadastro[i].salario); printf("Setor: %s\n\n",cadastro[i].setor); printf("Funcao: %s\n\n",cadastro[i].funcao); system("pause>>NULL"); } } void media (){ int cont = 0; float salario = 0, mediasalario = 0; FILE *arquivo; arquivo = fopen("dados.txt", "r"); while (!feof(arquivo)){ fread(&cadastro[cont], sizeof(struct dados), 1, arquivo); if (!feof(arquivo)){ salario = salario + cadastro[cont].salario; cont++; } } mediasalario = salario / cont; printf ("\n\nAtualmente existe %d funcionarios contratados", cont); printf ("\n\nA Media geral de Salario é: %5.2f por Funcionario Registrado\n\n", mediasalario); system("pause>>NULL"); } void pesquisa (){ int cont = 0, codigo, aux = 2; printf ("Digite o codigo do Funcionario: "); scanf ("%d", &codigo); printf ("\n\nPesquisando no Banco de Dados..."); FILE *arquivo; arquivo = fopen("dados.txt", "r"); while (!feof(arquivo)){ fread(&cadastro[cont], sizeof(struct dados), 1, arquivo); if (!feof(arquivo)){ if (codigo == cadastro[cont].cod){ aux = 1; printf ("\n\n\nCadastro Encontrado !!"); printf("\nCodigo: %d", cadastro[cont].cod); printf("\nNome: %s",cadastro[cont].nome); printf("Salario: %5.2f\n",cadastro[cont].salario); printf("Setor: %s\n",cadastro[cont].setor); printf("Funcao: %s\n\n\n",cadastro[cont].funcao); } cont++; } } if (aux == 2){ printf ("\n\nCadastro não Encontrado !!\n\n"); } } void excluir (){ int i = 0, cont = 0, codigo; printf ("\n\nDigite o codigo do Funcionario: "); scanf ("%d", &codigo); FILE *arquivo; arquivo = fopen("dados.txt", "r+"); while (!feof(arquivo)){ fread(&cadastro[i], sizeof(struct dados), 1, arquivo); if (!feof(arquivo)){ cont = cadastro[i].cod + 1; i++; } } arquivo = fopen("dados.txt", "w"); for(i=0; i < cont; i++){ if (cadastro[i].cod != codigo){ fwrite(&cadastro[i], sizeof(struct dados), 1, arquivo); } } fclose(arquivo); } int main(int argc, char *argv[]) { denovo: int opcao; do{ system("cls"); printf ("\nEscolha uma das opcao abaixo\n"); printf ("\n(1) - Para Cadastrar"); printf ("\n(2) - Para Listar"); printf ("\n(3) - Media de Salario dos funcionarios"); printf ("\n(4) - Pesquisar Funcionario pelo Codigo de Cadastro"); printf ("\n(5) - Excluir funcionário"); printf ("\n(0) - Sair \n\n"); printf("\nDigite uma opcao>> "); scanf("%d", &opcao); system("cls"); switch(opcao){ case 1: cadastrar (); break; case 2: listar (); break; case 3: media (); break; case 4: pesquisa (); system("pause"); break; case 5: excluir (); goto denovo; break; case 0: exit(0); default: printf("\n\nOpcao invalida! Tente Novamente!\n\n"); system("pause"); } }while(opcao!=5); return 0; } Tenta este código testei inúmeras vezes e obtive sucesso em todas
  14. Eu não tinha testado a opcao (5) pois diz Excliur arquivo imaginei que seria exluir o arquivo .txt Realmente há um erro Vou ler o código com mais paciência.
  15. Aqui ta funcionando perfeitamente fiz 6 cadastro e listou todos 6 sem repetir nenhum registro. voce poderia fazer o seguinte compila com esta IDE. http://sourceforge.net/projects/falconcpp/files/latest/download
×
×
  • Criar Novo...