עזרתכם בקוד ב c שלא עובד - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרתכם בקוד ב c שלא עובד


roi_mal

Recommended Posts

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

#include <math.h>

#include<stdlib.h>

#include<conio.h>

#define N 4

מבנה מסוג קומפ

typedef struct comp{

float x, y;

}comp;

הכרזה על פונקציות

float CRadius(Complex);

void Error_Msg(char* str);

void InputAndWriteToFile(FILE *f);

int CheckFile(FILE *f, float m);

מיין :

int main(){

FILE *f;

if(!(f=fopen("complex_number.txt", "w+")))

Error_Msg("The output file is worng");

InputAndWriteToFile(f);

printf("\nThere are %d big numbers\n", CheckFile(f, 4));

fclose(f);

_getch();

return 0;

}

פונקציה להודעת שגיאה (לא מגיע אליה בקוד עובד נבדק)

void Error_Msg(char* str){

puts(str);

_getch();

exit(1);

}

פונקציה המחשבת רדיוס באמצעות נוסחת הדיסטנס איקסת וואי ונקודה.(אין בעיה איתה עובדת נבדק)

float CRadius(comp *m){

return (sqrt(pow(m->x, 2) + pow(m->y, 2)));

}

פונקציה המדפיסה ערכים לתוך הקובץ (הפעולה הצליחה ואכן יש לי קובץ עם הערכים המיועדים בתוכו

void InputAndWriteToFile(FILE *f){

int i;

comp z[N];

printf("enter %d complex numbers : ", N);

for (i = 0; i < N; i++)

scanf("%f%f", &z.x, &z.y);

for (i = 0; i < N; i++)

fprintf(f,"%.1f %.1f %.1f\n", z.x, z.y, CRadius(z+i));

}

הפונקציה עמה יש לי בעיה : אמרוה לקלוט מתוך הקובץ איקס ת וואי ורדיוס בפועל לא קולטת רדיוס והוא נשאר על ערך האתחול שלו : 0 תלא מובן לי מדוע אינו מקבל ערכים במהלך הלולאה וכל הזמן נשאר עם הערך 0 על אף שבקובץ יש ערכים ברדיוס

m=4

f - מצביע לתחילת הקובץ

עלי לבדוק כמה פעמים הערך של הרדיוס (ערך המתקבל לאחר דיסטנס איקס וואי) גדול מ4 מתבצע ע"י cnt.

int CheckFile(FILE *f, float m) {

comp z[N];

int i = 0, cnt = 0;

float rad = 0;

for (i = 0; i<N; i++)

{

fscanf(f,"%f%f%f",&z.x,&z.y,&rad);// לא נקלט לי ערכים לתוך רדיוס,רדיוס נשאר 0 ואף פעם לא קטן מ m.

if (rad>m)cnt++;//לכן cnt נשאר 0

}

return cnt;

}

הבעיה : נוצר קובץ , אולם בפונקציה האחרונה זאת שבבולד הfscanf : אמורה לקלוט לתוך rad משתנים דבר אשר לא מתבצע וrad נשאר 0 לאורך כל ההרצה .

תודה מראש לעונים.

קישור לתוכן
שתף באתרים אחרים

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include <math.h>
#include<stdlib.h>
#include<conio.h>


#define N 4
typedef struct comp{
float x, y;
}comp;
float CRadius(Complex);
void Error_Msg(char* str);
void InputAndWriteToFile(FILE *f);
int CheckFile(FILE *f, float m);

int main(){
FILE *f;
if(!(f=fopen("complex_number.txt", "w+")))
Error_Msg("The output file is worng");
InputAndWriteToFile(f);
printf("\nThere are %d big numbers\n", CheckFile(f, 4));
fclose(f);
_getch();
return 0;
}

void Error_Msg(char* str){
puts(str);
_getch();
exit(1);
}

float CRadius(comp *m){
return (sqrt(pow(m->x, 2) + pow(m->y, 2)));
}

void InputAndWriteToFile(FILE *f){
int i;
comp z[N];
printf("enter %d complex numbers : ", N);
for (i = 0; i < N; i++)
scanf("%f%f", &z[i].x, &z[i].y);
for (i = 0; i < N; i++)
fprintf(f,"%.1f %.1f %.1f\n", z[i].x, z[i].y, CRadius(z+i));
}


int CheckFile(FILE *f, float m) {
comp z[N];
int i = 0, cnt = 0;
float rad = 0;
for (i = 0; i<N; i++)
{
fscanf(f,"%f%f%f",&z[i].x,&z[i].y,&rad);
if (rad>m)cnt++;
}
return cnt;
}


- - - תגובה אוחדה: - - -

איך נראה הקובץ שאתה קולט ?

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...