我有一個非常基本的問題,爲什麼我的代碼崩潰?我正在學習使用指針,我真的不知道爲什麼代碼崩潰後,我進入X1,X2,Y1和Y2(這發生在第二開關的情況下3)的值。我到處尋找,找不到理由。我需要的功能menuLR輸入的值,案件3發送到功能DistDosPuntos,一個則值恢復爲menuLR,案例3爲什麼我的代碼崩潰?
這裏是我的代碼。
某些代碼是在西班牙,但它是不相關的知道代碼是如何工作的。在此先感謝您的幫助和耐心,我知道這是相當愚蠢的,但我已經試過幾種方法,並沒有能夠解決任何或不懂的問題
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
void menu1();
void menuLR();
void DistDosPuntos();
void menu1()
{
int a;
float m,x1,x2,y1,y2,k,v,d;
printf("MENU PRINCIPAL\n");
printf("1.- La línea Recta \n");
printf("2.- La circunferencia \n");
printf("3.- Coordenaas Polares \n");
printf("4.- Salir\n");
scanf("%d",&a);
switch(a)
{
case 1:
menuLR(&m,&x1,&x2,&y1,&y2,&k,&v,&d);
break;
case 2 :
// ;
break;
case 3 :
//;
break;
case 4 :
break ;
}
}
void menuLR (float *m,float*x1,float *x2,float *y1,float*y2,float*k,float *v,float *d)
{
int b;
printf("LA LINEA RECTA\n");
printf("1.- Ecuación de la recta dada su puendiente y un punto de la misma \n");
printf("2.- Ecuación de la recta que pasa por dos puntos\n");
printf("3.- Distancia entre dos puntos del plano \n");
printf("4.- Punto medio entre dos puntos del plano\n");
printf("5.- Perímetro y área de un triángulo en un plano\n");
printf("6.- Regresar al menú principal\n");
scanf("%d",&b);
switch (b)
{
case 1 :
printf("Introduzca la pendiente de la recta m y el punto P1(x1,y1)\n");
printf("Introduzca m\n");
scanf("%f",m);
printf("Introduzca x1\n");
scanf("%f",x1);
printf("Introduzca y1\n");
scanf("%f",y1);
printf("La ecuación de la recta es:\n");
printf("y-y1 = m(x-x1)\n");
printf("Sustituyendo valores:\n");
printf("y-%f = %f (x-%f) \n" ,*y1,*m,*x1);
printf("Desarrollando y despejando:\n");
*k = ((*m)*(*x1));
printf("y-%f = %fx-%f)\n",*y1,*m,*k);
*v= -*k+*y1;
printf("y=%fx+(%f)\n",*m,*v);
printf("La ecuación de la recta en la forma general 'y=mx+b' es:\n");
printf("y=%fx+(%f)\n",*m,*v);
break;
case 2 :
break;
case 3 :
printf("Introduzca el punto en el plano P1(X1,Y1)\n");
printf("x1:");
scanf("%f",x1);
printf("y1:");
scanf("%f",y1);
printf("Introduzca el punto en el plano P2(X2,Y2)\n");
printf("X2:\n");
scanf("%f",x2);
printf("Y2:\n");
scanf("%f",y2);
DistDosPuntos(&x1,&x2,&y1,&y2,&d);
printf("La distancia entre los puntos P1 y P2 es:\n %f",*d);
break;
case 4 :
// exit ;
break ;
}
}
void DistDosPuntos(float *x1,float *x2, float *y1, float *y2,float *d)
{
*d = sqrt(pow((*x2-*x1),2) + pow((*y2-*y1),2));
}
int main()
{
int a,b;
float m,x1,y1,k,v,d,y2,x2;
menu1(&b,&x1,&y1,&x2,&y2,&m,&k,&v,&d);
DistDosPuntos(&x1,&x2,&y1,&y2,&d);
return 0;
}
錯誤日誌嗎? – MedAl
問題尋求幫助調試(「爲什麼不是這個代碼的工作?」)必須包括所期望的行爲,一個特定的問題或錯誤,並重現它在問題本身所需要的最短的代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建最小,完整和可驗證示例。 – LPs
學習如何使用調試器的時間。 –