Ir para conteúdo
Fórum Script Brasil

Barao

Membros
  • Total de itens

    32
  • Registro em

  • Última visita

Posts postados por Barao

  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.  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;            
                }
            }
    
    
  4. 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.

  5. 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;
    } 
    
  6. 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
    
    
  7. 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.

  8. 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.
  9. 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)

  10. #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

  11. # include <stdio.h>
    #include <stdlib.h>
    
    void flush_in() {
        int ch;
        do {
            ch = fgetc(stdin);
        } while (ch != EOF && ch != '\n');
    }
    
    struct dados{
    int cod;
        char nome[30];
    float salario;
    char setor[30];
    char funcao[30];
    };
    struct dados cadastro[100];
     
    int main ();
     
    void cadastrar (){
     
    int cont = 0, i = 0;
    char soun;
     
    FILE *arquivo;
        arquivo = fopen("dados.txt", "r+");
        if (arquivo == NULL){
         printf ("ERRO !! Banco não existe, criando novo Banco de Dados..."); flush_in(); getchar ();  //fflush(stdin) é para limpar buffer de saída e não de entrada esta é a melhor forma de limpar o buffer
         arquivo = fopen("dados.txt", "w+");
     
        } else {
         printf ("Banco 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 !!");
               
    }
         }while (soun == 'n');
        
         arquivo = fopen("dados.txt", "w");
         for(i=0; i < cont; i++){
         fwrite(&cadastro[i], sizeof(struct dados), 1, arquivo);
         }
         fclose(arquivo);
        
         main ();
    }
     
    void listar (){
    int i, cont = 0;
     
    FILE *arquivo;
      arquivo = fopen("dados.txt", "r");
     
    while (!feof(arquivo)){
    fread(&cadastro[cont], sizeof(struct dados), 1, arquivo);
     
    if (!feof(arquivo)){
         cont++;
    }
    }
    fclose(arquivo);
        
             for(i=0; i < cont; i++){
             printf("\nCodigo: %d", cadastro[i].cod);
             printf("\nNome: %s",cadastro[i].nome);
             printf("Salario: %5.2f\n",cadastro[i].salario);
             printf("Setor: %s\n",cadastro[i].setor);
             printf("Funcao: %s\n",cadastro[i].funcao);
             system("pause>>NULL"); 
         }
         main ();
       
    }
     
    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 ("\nAtualmente existe %d funcionarios contratados", cont);
    printf ("\nA Media geral de Salario é: %5.2f por Funcionario Registrado\n\n", mediasalario);
     
    main ();
    }
     
    void pesquisa (){
    int cont = 0, codigo, aux = 2;
     
    printf ("Digite o codigo do Funcionario: ");
    scanf ("%d", &codigo);
    printf ("\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 ("\nCadastro não Encontrado !!\n\n");
    }
    main ();
    
    }
     
    void excluir (){
     
    int i = 0, cont = 0, codigo;
     
    printf ("Digite 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);
        
         main ();
    }
     
    int main (){
    int op;
    	   system("cls");
    printf ("\nEscolha uma opcao\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 arquivo");
    printf ("\n(0) - Sair \n\n>> ");
    scanf ("%d", &op);
     
    if (op == 1){
    cadastrar ();
    }
    if (op == 2){
    listar ();
    }
    if (op == 3){
    media ();
    }
    if (op == 4){
    pesquisa ();
    }
    if (op == 5){
    excluir ();
    }
    if (op == 0){
    return 0;
    }
    }
    

    Tenta desta forma Att, Barão.

  12. Você disse que tem um programa que calcula datas e disse tambem que já calculou uma data( a pascoa) e porque não calcular a segunda como calculou a primeira(pascoa)?

    formule melhor sua pergunta Eu não consegui entender o seu propósito.

    Se possível poste o código pra todos que lerem este post entender.

  13. Tenta desta forma e posta o resultado.

    #include <stdio.h>
    #include <stdlib.h>
    #include <locale.h>
    #include <string.h>
     
    int menu();
     
    struct cadastroa{
    char nome[50];
    char sexo[10];
    int  idade;
    };
     
    int main(){
    int e;
    int i = 0;
    int j = 0;
    setlocale(LC_ALL," ");
    struct cadastroa dados[60];
    do{
    printf("1 - Fazer cadastro de novo aluno\n");
    printf("2 - Mostrar alunos cadastrados..\n");
    printf("3 - Sair........................\n");
    printf("Opção: ");
    scanf("%i", &e);
    switch(e){
    case 1:{
    
    printf("Informe o nome completo do aluno: ");
    scanf("%s", dados[i].nome);
    
    while (getchar() != '\n');//Pegando todos caracteres do buffer, chegando no '\n'(enter) ele descarta o '\n' e sai do loop
    
    printf("Informe o sexo do aluno: ");
    scanf("%s", dados[i].sexo);
    
    while (getchar() != '\n');
    
    printf("Informe a idade do aluno: ");
    scanf("%i", &dados[i].idade);
    
    while (getchar() != '\n');
    
    i++;
    j++;
    break;
    }
    case 2:{
    for(i = 0; i < j; i++){
    printf("Aluno %i: %s\n", i + 1, dados[i].nome);
    }
    system("pause");
    break;
    }
    }
    } while(e != 3);
    system("pause");
    return 0;
    }
    

    Att

    Barão.

  14. Em C a primeira posição começa em 0.

    X = A Porque o i do 1º for recebe 0 que é a posição de A

    Veja como resolvi esta questão

    #include <stdio.h>
    #include <stdlib.h>
    
    
    int main(int argc, char *argv[]) {
    int i;
    char x[] = "ABCDEF";
    
    //aqui o loop comeca na posicao 1 que e a posição de B
    for (i = 1; i < 6; i++) {
    
    printf("\n X = %c\n\n", x[i]);
    
    }
    //aqui o loop comeca na posicao 5 que e a posição de F
    for (i = 5; i < 6; i++) {
    printf("\n X = %c\n\n", x[i]);
    }
    
    system("pause");
    
    return 0;
    }
    
  15. #include <stdio.h>
    #include <stdlib.h>
    int main(int argc, char *argv[]) {
    int i;
    char aux; 
    char x[] = "ABCDEF";
    for (i = 0; i < 5; i++) {
    aux = x[i];
    x[i] = x[i + 1];
    x[i + 1] = aux;
    }
    for (i = 0; i < 6; i++)
    printf("\n X = %c\n\n", x[i]);
    
    system("pause");
    return 0;
    }
    

    Testa desta forma e posta o resultado se é isso mesmo.

  16. #include <stdio.h>
    #include <stdlib.h>
    
    FILE* AbreArquivo(char modo, char caminho[30]){
        FILE *arquivo;
        switch(modo){
            case 'g':
                arquivo = fopen(caminho,"wt");
                break;
            case 'l':
                arquivo = fopen(caminho,"rt");
                break;
            case 'a':
                arquivo = fopen(caminho,"a");
                break;
        }
        if(arquivo==NULL){      //Se houver algum erro, o ponteiro apontará para NULL
            printf("não foi possivel abrir o arquivo");
            exit(0);
        }
        return arquivo;
    }
    
    void FecharArquivo(FILE *arquivo){
        fclose(arquivo);
    }
    
    void Cadastra(char nome[30], int telefone){
        FILE *arquivo;
        arquivo = AbreArquivo('a', "vendas.txt");
        fprintf(arquivo, "%s %d\n", nome, telefone);
        FecharArquivo(arquivo);
    }
    
    void Listar(){
        FILE *arquivo;
        char nome[30];
        int telefone;
    
        arquivo = AbreArquivo('l',"vendas.txt");
    
        while(!feof(arquivo)){
            fscanf(arquivo,"%s %d ", &nome, &telefone);
            printf("Nome: %s  -  Telefone: %d\n", nome, telefone);
        }
        FecharArquivo(arquivo);
    }
    
    int main(){
        int opcao;
        char nome[30];
        int telefone;
        do{
            system("cls");
            printf("\n\n\t\também Vindo ao programa AGENDA\n");
            printf("\nMENU");
            printf("\n 1 - Registrar Venda");
            printf("\n 2 - Listar venda");
            printf("\n 3 - Sair");
    
            printf("\nDigite uma opcao: ");
            scanf("%d", &opcao);
            system("cls");
    
            switch(opcao){
                case 1:
                    printf("\nDigite o nome: ");
                    setbuf(stdin,NULL);
                    gets(nome);
                    printf("\nDigite o telefone: ");
                    scanf("%d", &telefone);
                    Cadastra(nome, telefone);
                    system("pause");
                    break;
                case 2:
                    Listar();
                    system("pause");
                    break;
                case 3:
                    printf("\n\nFinalizando...\n\n");
                    system("pause");
                    exit(0);
                    break;
    
                default:
                    printf("\n\nOpcao invalida! Tente Novamente!\n\n");
                    system("pause");
    
            }
        }while(opcao!=3);
    
        return 0;
    }
    
    
    
    
    
    

    ​Adapte ao seu gosto.

  17. 
    
    #include <stdio.h>
    #include <stdlib.h>
    
    FILE* AbreArquivo(char modo, char caminho[30]){
        FILE *arquivo;
        switch(modo){
            case 'g':
                arquivo = fopen(caminho,"wt");
                break;
            case 'l':
                arquivo = fopen(caminho,"rt");
                break;
            case 'a':
                arquivo = fopen(caminho,"a");
                break;
        }
        if(arquivo==NULL){      //Se houver algum erro, o ponteiro apontará para NULL
            printf("Nao foi possivel abrir o arquivo");
            exit(0);
        }
        return arquivo;
    }
    
    void FecharArquivo(FILE *arquivo){
        fclose(arquivo);
    }
    
    void Cadastra(char nome[30], int telefone){
        FILE *arquivo;
        arquivo = AbreArquivo('a', "vendas.txt");
        fprintf(arquivo, "%s %d\n", nome, telefone);
        FecharArquivo(arquivo);
    }
    
    void Listar(){
        FILE *arquivo;
        char nome[30];
        int telefone;
    
        arquivo = AbreArquivo('l',"vendas.txt");
    
        while(!feof(arquivo)){
            fscanf(arquivo,"%s %d ", &nome, &telefone);
            printf("Nome: %s  -  Telefone: %d\n", nome, telefone);
        }
        FecharArquivo(arquivo);
    }
    
    int main(){
        int opcao;
        char nome[30];
        int telefone;
        do{
            system("cls");
            printf("\n\n\t\tBem Vindo ao programa AGENDA\n");
            printf("\nMENU");
            printf("\n 1 - Registrar Venda");
            printf("\n 2 - Listar venda");
            printf("\n 3 - Sair");
    
            printf("\nDigite uma opcao: ");
            scanf("%d", &opcao);
            system("cls");
    
            switch(opcao){
                case 1:
                    printf("\nDigite o nome: ");
                    setbuf(stdin,NULL);
                    gets(nome);
                    printf("\nDigite o telefone: ");
                    scanf("%d", &telefone);
                    Cadastra(nome, telefone);
                    system("pause");
                    break;
                case 2:
                    Listar();
                    system("pause");
                    break;
                case 3:
                    printf("\n\nFinalizando...\n\n");
                    system("pause");
                    exit(0);
                    break;
    
                default:
                    printf("\n\nOpcao invalida! Tente Novamente!\n\n");
                    system("pause");
    
            }
        }while(opcao!=3);
    
        return 0;
    }
    

    Adapte ao seu gosto.

×
×
  • Criar Novo...