Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

mariana.duarte

TAD círculo

Recommended Posts

Bom, eu consegui terminar o programa mas ele apresenta dois erros de sintaxe, um na linha do AtualizarR e outro na linha do criar=(x).

 

Se alguem puder me dizer o que estou fazendo errado... Obrigada ^^

 

CODE
#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <math.h>

 

typedef struct{

int x;

int y;

int r;

} Circulo;

 

//prototipos

 

Circulo* criar (int x,int y, int r);

 

void imprimir (Circulo* A)

 

void AtualizarCentro (Circulo* A,int novox, int novoy)

 

void AtualizarR (Circulo* A,int novor)

 

void liberar (Circulo* A)

 

void Area(circulo* A)

 

int main(){

//funcao principal

 

int x,r,y;

float area;

Circulo *C;

 

criar = (x);

 

criar = (y);

 

criar= ®;

 

printf("\nDigite o valor de x e y:");

scanf("%d%d",&x,&y);

AtualizarX(C,x,y);

 

printf("\nDigite o valor do raio:");

scanf("%d",&r);

AtualizarR(C,r);

 

imprimir ©;

 

liberar ©;

 

Area©;

 

}

//implementacoes das funcoes definidas

 

Circulo* criar(int x, int y, int r){

Circulo *A = (Circulo*)malloc(sizeof(Circulo));

c->x = c->y = c->r = 0;

return c;

}

 

 

void imprimir(Circulo* A){

printf("(%d, %d) e R = %d", c->x, c->y,c->r);

}

 

 

void atualizarX(Circulo* A, int novox,int novoy){

c->x = novox;

c->y = novoy;

}

 

 

void atualizarR(Circulo* A, int novor){

c->r = novor;

}

 

 

void liberar(Circulo *A){

free(A);

}

 

void Area (Circulo* A){

printf("Area: %f",(3.14*pow(c->r,2.0)));

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom sua função criar foi feita para receber 3 paramêtros e você passa 1 somente, e pq ela precisa ser do tipo Circulo você naum retorna nd msm!

e falta fechar uma '}' no fim da função atualizarX! e observe q ela tbm tem q receber 3 parametros e você passa somente 2!

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

De novo: comentários óbvios podem ser dispensados:

 

int main(){
//funcao principal

 

Preste atenção no que você digita: C é case-sensitive. Circulo não é a mesma coisa que circulo:

 

typedef struct{
int x;
int y;
int r;
} Circulo;

void Area(circulo* A)

 

 

Faltam muitos ';' aí.

 

 

criar = (x);
criar = (y);

 

???????

Mensagem do compilador:

circulo.c:25: error: invalid lvalue in assignment

circulo.c:26: error: invalid lvalue in assignment

circulo.c:27: error: invalid lvalue in assignment

 

O correto é

C=criar(x,y,z)

Mas observe que você também não inicializou as variáveis. C não é Java,que detecta esse tipo de erro durante a compilação.

 

void imprimir(Circulo* A){
  printf("(%d, %d) e R = %d", A->x, A->y,A->r);
}


void atualizarX(Circulo* A, int novox,int novoy){
 c->x = novox;
 c->y = novoy;
}


void atualizarR(Circulo* A, int novor){
 c->r = novor;
}

void Area (Circulo* A){
 printf("Area: %f",(3.14*pow(c->r,2.0)));
}

 

A variável 'c' não foi declarada. Como você está passando o círculo como argumento, use o nome do argumento...

 

 

imprimir(r);

 

Preste atenção nos tipos.você está passando um inteiro e a função aceita somente um ponteiro.

 

 

Circulo* criar(int x, int y, int r){
  Circulo *A = (Circulo*)malloc(sizeof(Circulo));
  c->x = c->y = c->r = 0;
  return c;
}

 

Por que você está passando os valores como argumento do 'construtor' se vai zerar tudo em seguida?

E novamente, variável c não declarada.

Compartilhar este post


Link para o post
Compartilhar em outros sites
sua função criar foi feita para receber 3 paramêtros e você passa 1 somente

 

Quit, até dá pra fazer lista de argumentos variáveis,mas fica uma meleca pra determinar a condição de parada:

 

 #include <stdio.h>
#include <stdarg.h>
#include <string.h>
void contagem(int x,...) {
int tmp;
va_list lista;
printf("%d\n",x);
va_start(lista,x);
while((tmp=va_arg(lista,int)) != 0)
   printf("%d\t",tmp);
va_end(lista);
}

int main() {
  contagem(9,4,7,3,7,21,-12,0);
  puts("----");

  contagem(4,0);
  puts("---");

  contagem(-1,3,8,29,0);
}

 

Esse é um dos problemas que eu vivo correndo atrás p/ resolver em C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Esse '...' q você usou é o numero arbitrário de parâmetros?

pq se for em C nunca utilizei nem sabia q podia, soh usei em Java ele!

pra quem naum sabe usa-se o '...' qnd o numeros de elementos é desconhecido ou pretende-se flexibilizar o uso do método!

bom esse conceito é em Java, em C vou testar!

 

Bom testei aki e naum tive sucesso! você conseguiw?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim.Ó só o vídeo*:

 

http://video.google.com/videoplay?docid=19...51035&hl=en

 

(Se nao der pra ver,espere um pouco ate q ele esteja em Live)

 

 

* Ultimamente só dizer q você fez não tá valendo...Saca aquelas fotos que o povo bota das letrinhas na inicialização do Linux e diz que é crash?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando mandei o VMWare gravar em qualidade baixa não achei que fosse TÃO baixa assim que não desse nem pra ver meus ícones direito...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.