1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

ajuda em programação c

Discussão em 'Programação' iniciada por Demonpm, 16 de Janeiro de 2009. (Respostas: 2; Visualizações: 1560)

  1. Demonpm

    Demonpm Power Member

    Boas, estou a fazer um programa que permita inserir tabelas de verdade para mais tarde fazer combinações das mesmas, no maximo temos circuitos com 3 entradas e 1 saida, neste momento o meu programa já permite inserir uma tabela e tbm visualizar a mesma, eu gostaria que me ajudassem pois não sei como guardar o historico das tabelas anteriores, ou seja, cada vez que insiro uma tabela o meu programa apaga a anterior;agradecia:)
    neste momento o meu programa está assim:
    Código:
    #include<stdio.h>
    typedef struct circuito
    {
           char designacao[10];
           int tabela[4][8],entradas;
    }CIRCUITO;
    void alterar(){}
    void listar(){}
    void combinar(){}
    void menu()
    {
         printf("\n\nescolha uma opcao:\n");
         printf("1-inserir circuitos\n");
         printf("2-alterar circuito\n");
         printf("3-consultar tabela de verdade de um circuito\n");
         printf("4-Listar circuitos logicos inseridos\n");
         printf("5-combinar circuitos logicos\n");
         printf("0-sair\n");
    }
    void inserir(CIRCUITO *aptx)
    {
          int t,i,j,a,portas[4][8];
          char nome[10];
          printf("insira o nome do circuito:\n");
          fflush(stdin);
          gets((*aptx).designacao);
         do
         {
         printf("qual o circuito que deseja inserir:\n");
         printf("1-circuito com 1 entrada:\n");
         printf("2-circuito com 2 entradas:\n");
         printf("3-circuito com 3 entradas:\n");
         printf("4-voltar ao menu inicial:\n");
         scanf("%d",&(*aptx).entradas);
         a=(*aptx).entradas;
         }
         while(a!=1 && a!=2 && a!=3);
         if(a==1)
         {
         a=2;
         t=2;
         }
         else
         {
             if(a==2)
             {
                     a=4;
                     t=3;
             }
             else
             {
                 a=8;
                 t=4;
             }}
         printf("insira a tabela:\n");
         for(i=0;i<a;i++)
         {
                           switch(i)
                           {
                                    case 0:printf("primeira linha\n");break;
                                    case 1:printf("segunda linha\n");break;
                                    case 2:printf("terceira linha\n");break;
                                    case 3:printf("quarta linha\n");break;
                                    case 4:printf("quinta linha\n");break;
                                    case 5:printf("sexta linha\n");break;
                                    case 6:printf("septima linha\n");break;
                                    case 7:printf("oitava linha\n");break;
                           }
                           for(j=0;j<t;j++)
                           {
                                             switch(j)
                                             {
                                                      case 0:printf("coluna 1-->");break;
                                                      case 1:printf("coluna 2-->");break;
                                                      case 2:printf("coluna 3-->");break;
                                                      case 3:printf("coluna 4-->");break;
                                             }
                           do{                                  
                           scanf(" %d", &(*aptx).tabela[j][i]);
                           if(((*aptx).tabela[j][i])!=0 && ((*aptx).tabela[j][i])!=1)
                           {
                                              printf("valor nao valido\ninsira 1 ou 0:");
                           }}
                           while (((*aptx).tabela[j][i])!=0 &&((*aptx).tabela[j][i])!=1);
                           }
                           
                           
         }
         
    }
    void consultar(struct circuito x)
    {
         char nome[10];
         int i,j,l,c,b,linha;
         fflush(stdin);
         printf("insira o nome do circuito que deseja inserir:\n");
         gets(nome);
         b=(x.entradas);
         if(b==1)
         {
                 l=2;
                 c=2;
         }
         if(b==2)
         {
                 l=4;
                 c=3;
         }
         if(b==3)
         {
                 l=8;
                 c=4;
         }
                       
         if((strcmp(nome,x.designacao))==0)
         {
                                       for(i=0;i<l;i++)
                                       {
                                                       switch(i)
                                                       {
                                                                case 0:printf("primeira linha\n");break;
                                                                case 1:printf("segunda linha\n");break;
                                                                case 2:printf("terceira linha\n");break;
                                                                case 3:printf("quarta linha\n");break;
                                                                case 4:printf("quinta linha\n");break;
                                                                case 5:printf("sexta linha\n");break;
                                                                case 6:printf("septima linha\n");break;
                                                                case 7:printf("oitava linha\n");break;
                                                       }
                                                       for(j=0;j<c;j++)
                                                       {
                                                                       switch(j)
                                                                       {
                                                                                case 0:printf("coluna 1-->%d\n",(x.tabela[j][i]));break;
                                                                                case 1:printf("coluna 2-->%d\n",(x.tabela[j][i]));break;
                                                                                case 2:printf("coluna 3-->%d\n",(x.tabela[j][i]));break;
                                                                                case 3:printf("coluna 4-->%d\n",(x.tabela[j][i]));break;
                                                                       }
                                                       }
                                       }
         }
                                                                                
                                                       
                                                       
         
         else
         printf("tabela nao encontrada");
         
    }     
         
         
    main()
    {
          char opcao;
          struct circuito p;
          do
          {
                             
                             menu();
                             scanf(" %c", &opcao);
                             switch(opcao)
                             {
                                          case '1': inserir(&p);break;
                                          case '2': alterar();break;
                                          case '3': consultar(p);break;
                                          case '4': listar();break;
                                          case '5': combinar();break;
                                          case '0':break;
                                          default: printf("opcao nao valido\n\n");
                                          
                             }
          }
          while(opcao!='0');
          getch();
          }
     
     
    Última edição pelo moderador: 16 de Janeiro de 2009
  2. Granadafeup

    Granadafeup Power Member

    Isso acontece pois utilizas sempre a mesma variavel

    Código:
    main()
    {
          char opcao;
          [B]struct circuito p;[/B]
          do
          {
                             
                             menu();
                             scanf(" %c", &opcao);
                             switch(opcao)
                             {
                                          [B]case '1': inserir(&p);break;[/B]
                                          case '2': alterar();break;
                                          case '3': consultar(p);break;
                                          case '4': listar();break;
                                          case '5': combinar();break;
                                          case '0':break;
                                          default: printf("opcao nao valido\n\n");
                                          
                             }
          }
          while(opcao!='0');
          getch();
          }     
    Tens de guardar as coisas num array "struct circuito p[max_n_circuitos];"
     
  3. Demonpm

    Demonpm Power Member

    *****, vou tentar fazer isso, obrigadão:009:
     

Partilhar esta Página