• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

T_E

[C] Ajuda: Erro de execução!!

4 mensagens neste tópico

 
#include "stdio.h"
    #include "stdlib.h"
    #include <conio.h>
#include <string.h>
#define DIM 50
    main()
    {
      FILE *fp; /*fp - is a file pointer*/
      char componente[20],referencia[10];
      int no1,no2,valor1,valor2,l,c,Max=3,count=0;
  
  float matrix[DIM][DIM];

      /* open the file netlist.txt to read */
      fp = fopen( "netlist1.txt", "r" );
      if (fscanf(fp,"%20s",&componente))
	  (componente=='/');
	  printf("comment found!");

  while
		(fscanf( fp,"\n%2s %s %d %d %d %d\n",&componente,&referencia,&no1,&no2,&valor1,&valor2)!=EOF)
		printf("\n%s %2s %d %d %d %d\n",componente,referencia,no1,no2,valor1,valor2);
      
  {
	  if (no1>Max)
		  Max==no1;
	  printf("%d",&Max);//função de teste para tamanho da matriz
  }



{
	if	(strcmp=='UR')
		fscanf("%2s%c%d%d%d%d",&componente,&referencia,&no1,&no2,&valor1,&valor2);
	{	
		if(no1>0 && no2>0)
			{	
			matrix[no1][no1]+=1/valor2;
			matrix[no2][no2]+=1/valor2;
			matrix[no1][no2]-=1/valor2;
			matrix[no2][no1]-=1/valor2;
			}
		else if (no1>0 && no2==0)
				{
				matrix[no1][no1]+=1/valor2;
				}
			else if (no1==0 && no2>0)
				{
					matrix[no1][no1]+=1/valor2;
				}
				else
				printf("error");
	}

	{
	if	(strcmp=='R')
		fscanf("%2s%c%d%d%d%d",&componente,&referencia,&no1,&no2,&valor1,&valor2);
	{	
		if(no1>0 && no2>0)
			{	
			matrix[no1][no1]+=1/valor1;
			matrix[no2][no2]+=1/valor1;
			matrix[no1][no2]-=1/valor1;
			matrix[no2][no1]-=1/valor1;
			}
		else if (no1>0 && no2==0)
				{
				matrix[no1][no1]+=1/valor1;
				}
			else if (no1==0 && no2>0)
				{
					matrix[no1][no1]+=1/valor1;
				}
				else
				printf("error");
	}

	{
	if	(strcmp=='I')
		fscanf("%2s%c%d%d%d%d",&componente,&referencia,&no1,&no2,&valor1,&valor2);
	{	
		if(no1>0 && no2>0)
			{	
			matrix[no1][no1]+=1/valor1;
			matrix[no2][no2]+=1/valor1;
			matrix[no1][no2]-=1/valor1;
			matrix[no2][no1]-=1/valor1;
			}
		else if (no1>0 && no2==0)
				{
				matrix[no1][no1]+=1/valor2;
				}
			else if (no1==0 && no2>0)
				{
					matrix[no1][no1]+=1/valor2;
				}
				else
				printf("error");
	}

	}
}
	{
	for(l=0;l<Max;l++)
		{
		for(c=0;c<Max;c++)
			{
				printf("%f ",matrix[l][c]);
			}
		printf("\n");
		}
	}


  
 /* close file */
      fclose( fp );
    }

}

esta a apareçer a netlist , mas tb devia aparecer uma matriz! não compreendo , até porque o programa nao tem erros.

agradeçia a ajuda para resoluçao deste problema , obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não vi o código todo, mas tens uns { que não estou a entender.

1 - Não sei se era a intenção mas o primeiro printf está fora do if, bem como todo o resto do código, apesar da indentação.

2- o { a seguir ai while não faz parte do while, pois tem o printf pelo meio.

3- depois tens outros blocos de código sem estrutura associada, que também não estou a entender. mas posso ser eu que ainda não cheguei lá.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não estou a perceber bem o que pretendes mas desde já te digo que há um erro repetido no teu código: o strcmp

A sintaxe é a seguinte:

if(strcmp(string1,string2) == 0){
....

Assim compara se as duas strings são iguais. Não podes fazer como tens aí.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

esse código é quase ilegível... e que tal identar isso como deve ser? se tiveres acesso a pc com Linux faz um 'indent' ao ficheiro, que sempre fica mais legível.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora