ajuda em programação c

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:
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];"
 
Back
Topo