Ir ao conteúdo

Posts recomendados

Postado
#include<stdio.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
main()
{
struct raiz
{
float a, b, c, delta, x1, x2;
char mensagem;
};
struct raiz quad[5];
   	
float a, b, c, delta, x1, x2, i=0, cont=0;
char resp;

do 
{
	while(cont<=5)
	{
	
printf  ("\t\t\tCALCULO DE RAIZ PARA UMA EQ. DO SEGUNDO GRAU\n\n\n");

	printf  ("Insira o valor do coeficiente 'A':");
	scanf   ("%f", &a);
fflush(stdin);
	
		printf  ("Insira o valor do coeficiente 'B':");
		scanf   ("%f", &b);
fflush(stdin);

			printf  ("Insira o valor do coeficiente 'C':");
			scanf   ("%f", &c);			
fflush(stdin);

delta = pow(b,2)-4*a*c;
x1=((-b)+sqrt(delta))/(2*a);
x2=((-b)-sqrt(delta))/(2*a);
				


				if ( delta>0 && delta!=0)
				{
				mensagem[i]=AETDRR; //A equacao tem duas raizes reais
				quad[i].a=a;
				quad[i].b=b;
				quad[i].c=c;
				quad[i].delta=delta;
				quad[i].x1=x1;
				quad[i].x2=x2;
				}
						
				if ( delta<0 && delta!=0)
				{
				mensagem[i]=AENTRR; //A equacao nao tem raizes reais
				quad[i].a=a;
				quad[i].b=b;
				quad[i].c=c;
				quad[i].delta=delta;
				quad[i].x1=x1;
				quad[i].x2=x2;
				}
				
				if ( delta==0)
				{
				mensagem[i]=AETDRI; // A equacao tem duas raizes reais iguais
				quad[i].a=a;
				quad[i].b=b;
				quad[i].c=c;
				quad[i].delta=delta;
				quad[i].x1=x1;
				quad[i].x2=x2;
				}
				
printf("Deseja realizar mais um calculo de raiz quadrada? S/ N/ : ");
scanf ("%c", &resp);
printf("\n\n");
system("cls");
cont++;
i++;
}
goto mid;
}
while( resp=='s' || resp=='S');	

mid:
resp=0;
printf ("\nDeseja imprimir os calculos realizados? S/ N/");
scanf	("%c",&resp);
if(resp=='s' || resp=='S')
{
printf(" LEGENDA: \n AETDRR = A equacao tem duas raizes reais\n AENTRR = A equacao nao tem raizes reais\n AETDRI = A equacao tem duas raizes reais iguais\n\n ");	
	for (i=0;i<5;i++)
	{
	printf("%s", quad[i].mensagem);
	printf("%.0f", quad[i].a);
	printf("%.0f",quad[i].b);
	printf("%.0f",quad[i].c);
	printf("%.0f",quad[i].delta);
	printf("%.0f",quad[i].x1);
	printf("%.0f",quad[i].x2);
	}
}else{ goto fim;
}
fim:
system("PAUSE");									
return 0;

}

Boa noite, 

tenho uma dúvida, ao compilar este código esta dando erro referente a declaração de escopo. 
Alguém pode me ajudar ?

A ideia é realizar até 5 calculos de raiz quadrada, após isso o programa irá perguntar se desejo imprimir a matriz (relatório) referente a todos os calculos realizados.

  • Amei 1
Postado

@Ivander     seu código está bom ,  a atribuição de dados a uma string desse jeito só funciona no c++ , e aqui tudo está na linguagem c , então use o comando strcpy ,  e esse goto é interessante , eu usava ele no tk 85 , mas ultimamente não tenho visto em lugar algum ,  então seu código poderia ser assim  :

#include<stdio.h>
#include<conio.h>
#include<ctype.h>
#include<math.h>
#include<conio.h>
#include<stdlib.h>
struct raiz{/* geralmente as struct ficam antes da main */
    float a,b,c,delta,x1,x2;
    char mensagem[10];
};
struct raiz quad[5];/* servindo como variável global , acessada em qualquer parte do programa */
int main(){
    system("color ec");
    float a,b,c,delta,x1,x2,cont=0;
    int  i=0;
    char resp='N';
    do{
        printf("\t\t\tCALCULO DE RAIZ PARA UMA EQ. DO SEGUNDO GRAU\n\n\n");
        printf("Insira o valor do coeficiente 'A':");
        fflush(stdin);
        scanf ("%f",&a);
        printf("Insira o valor do coeficiente 'B':");
        scanf ("%f",&b);
        fflush(stdin);
        printf("Insira o valor do coeficiente 'C':");
        fflush(stdin);
        scanf ("%f",&c);
        delta = pow(b,2)-4*a*c;
        x1=((-b)+sqrt(delta))/(2*a);
        x2=((-b)-sqrt(delta))/(2*a);
        if ( delta>0 && delta!=0){
            strcpy(quad[i].mensagem,"AETDRR"); //A equacao tem duas raizes reais
            quad[i].a=a;
            quad[i].b=b;
            quad[i].c=c;
            quad[i].delta=delta;
            quad[i].x1=x1;
            quad[i].x2=x2;
        }
        if( delta<0 && delta!=0){
            strcpy(quad[i].mensagem,"AENTRR"); //A equacao nao tem raizes reais
            quad[i].a=a;
            quad[i].b=b;
            quad[i].c=c;
            quad[i].delta=delta;
            quad[i].x1=x1;
            quad[i].x2=x2;
        }
        if( delta==0){
            strcpy(quad[i].mensagem,"AETDRI"); // A equacao tem duas raizes reais iguais
            quad[i].a=a;
            quad[i].b=b;
            quad[i].c=c;
            quad[i].delta=delta;
            quad[i].x1=x1;
            quad[i].x2=x2;
        }
        printf("Deseja realizar mais um calculo de raiz quadrada ?    S / N : ");
        fflush(stdin);/* mudou de tipo use o fflush antes do scanf*/
        scanf ("%c",&resp);
        printf("\n\n");
        system("cls");
        cont++;
        i++;
    }while( toupper(resp) == 'S' && cont < 5 );
    mid:
        resp=0;
        printf("\nDeseja imprimir os calculos realizados ?    S / N\r");
        resp=(char)getch();/* sem pressionar enter */
        if(toupper(resp)=='S'){
            printf(" LEGENDA:                                              \n");
            printf(" AETDRR = A equacao tem duas raizes reais");
            printf("\n AENTRR = A equacao nao tem raizes reais");
            printf("\n AETDRI = A equacao tem duas raizes reais iguais\n\n ");
            for(i=0;i<cont;i++){
                printf("%s\n"              ,quad[i].mensagem);
                printf("a -----: %6.0f\n"  ,quad[i].a       );
                printf("b -----: %6.0f\n"  ,quad[i].b       );
                printf("c -----: %6.0f\n"  ,quad[i].c       );
                printf("delta -: %6.0f\n"  ,quad[i].delta   );
                printf("x1 ----: %6.0f\n"  ,quad[i].x1      );
                printf("x2 ----: %6.0f\n\n",quad[i].x2      );
            }
        }
        else{
            goto fim;
        }
    fim:
        printf("\n");
        system("PAUSE");
        printf("\n\n\n");
    return 0;
}

 

  • Amei 1
Postado

@devair1010  Muito obrigado pela ajuda, quando estou programando acontece realmente no automático algumas atribuições em c++ ou c# e nem noto a diferença porque não tenho experiência em c. 

agradeço a ajuda e disposição, me ajudou muito . 
Resolveu o problema.

adicionado 3 minutos depois

resolvido

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...