karbek Napisano Czerwiec 15, 2009 Zgłoś Share Napisano Czerwiec 15, 2009 #include <stdio.h> #include <string.h> #include <stdlib.h> double wylicz_x(double a1,double b1,double c1,double a2,double b2,double c2) { double zapas; zapas=(b2*c1-b1*c2)/(a1*b2-a2*b1); return zapas; } double wylicz_y(double a1,double b1,double c1,double a2,double b2,double c2) { double zapas; zapas=(a1*c2-a2*c1)/(a1*b2-a2*b1); return zapas; } double a1,a2,b1,b2,c1,c2,punkt_x,punkt_y; char *zapas; char A1[10]; FILE *fp; int main(int argc, char *argv[]) { fp=fopen("Uklad_Rownan.txt","a"); fprintf (fp, "Uklad Rownan:\n\na1x + b1y = c1\na2x + b2y = c2\n"); printf("Wprowadz a1 "); scanf("%f",&a1); //sprintf(A1,"%d",a1); //fputs(A1,fp); printf("Wprowadz a2 "); scanf("%f",&a2); printf("Wprowadz b1 "); scanf("%f",&b1); printf("Wprowadz b2 "); scanf("%f",&b2); printf("Wprowadz c1 "); scanf("%f",&c1); printf("Wprowadz c2 "); scanf("%f",&c2); printf("\n"); punkt_x=wylicz_x(a1,b1,c1,a2,b2,c2); printf("X wynosi %0.1f",punkt_x); printf("\n"); punkt_y=wylicz_y(a1,b1,c1,a2,b2,c1); printf("Y wynosi %0.1f\n\n",punkt_y); fclose(fp); system("PAUSE"); return 0; } Problem jest następującej treści. Chcę aby w pliku zaraz pod "sztywnym" układem równań zapisywały się poszczególne wartości dla a1, a2, b1... Na samym końcu w pliku powinien być zapisany wynik owych równań. Kiedy prubóję podstawić w pliku wartość (dla przykładu) a1 przy pomocy puts(), kompilator informuje mnię o niemożności przekonwertowania duble na char... albo coś w tym stylu. Po tym komunikacie próbowałem coś zdziałać przy pomocy sprintf (do tego jest to char A1[10]), ale w pliku zamiast wartosci wyświetla mi jakiś losowy ciąg znaków. Proszę o pomoc muszę oddać program na ćwiczenia :/ Nie ma problemu z inną metodą wykonania tego programu, ważne aby był w C Link do komentarza Udostępnij na innych stronach More sharing options...
KaYou Napisano Czerwiec 15, 2009 Zgłoś Share Napisano Czerwiec 15, 2009 sprintf(char *string,"Format %.2d jaki chcesz miec",1); pozwala na zapis do stringa w formacie jakim wypisujesz na ekran. np %.3f. dokladniejszy opis tutaj: http://pl.wikibooks.org/wiki/C/sprintf a zapis do pliku masz tutaj: http://www.java2s.com/Code/C/File/Savestri...tofilefputs.htm "(2b || !(2b)) == question" W. Shakespeare http://jakubniwa.pl - świat sztucznej inteligencji Link do komentarza Udostępnij na innych stronach More sharing options...
karbek Napisano Czerwiec 16, 2009 Autor Zgłoś Share Napisano Czerwiec 16, 2009 Dzięki już sobie poradziłem w inny sposób, a mianowicie przy pomocy fprintf, z tym że zamianiłem double na float Link do komentarza Udostępnij na innych stronach More sharing options...
karbek Napisano Czerwiec 16, 2009 Autor Zgłoś Share Napisano Czerwiec 16, 2009 Poprzedni problem udało się rozwiązać, ale ten program prawdopodobnie (niezrozumiałe polecenie ćwiczenia) powinien jeszcze zapisać cały kod źródłowy tego programu do pliku. Nie mam pojęcia jak to zrobić. Oto dotychczasowy kod #include <stdio.h> #include <string.h> #include <stdlib.h> float wylicz_x(float a1,float b1,float c1,float a2,float b2,float c2) { float zapas; zapas=(b2*c1-b1*c2)/(a1*b2-a2*b1); return zapas; } float wylicz_y(float a1,float b1,float c1,float a2,float b2,float c2) { float zapas; zapas=(a1*c2-a2*c1)/(a1*b2-a2*b1); return zapas; } float a1,a2,b1,b2,c1,c2,x,y; char *zapas; FILE *fp; int main(int argc, char *argv[]) { fp=fopen("Uklad_Rownan.txt","a"); fprintf (fp, "Uklad Rownan:\n\na1x + b1y = c1\na2x + b2y = c2\n\n"); printf("Wprowadz a1 "); scanf("%f",&a1); fprintf(fp,"a1 = %0.1f\n",a1); printf("Wprowadz a2 "); scanf("%f",&a2); fprintf(fp,"a2 = %0.1f\n",a2); printf("Wprowadz b1 "); scanf("%f",&b1); fprintf(fp,"b1 = %0.1f\n",b1); printf("Wprowadz b2 "); scanf("%f",&b2); fprintf(fp,"b2 = %0.1f\n",b2); printf("Wprowadz c1 "); scanf("%f",&c1); fprintf(fp,"c1 = %0.1f\n",c1); printf("Wprowadz c2 "); scanf("%f",&c2); fprintf(fp,"c2 = %0.1f\n\n",c2); printf("\n"); x=wylicz_x(a1,b1,c1,a2,b2,c2); printf("x wynosi %0.3f",x); fprintf(fp,"x = %0.3f\n",x); printf("\n"); y=wylicz_y(a1,b1,c1,a2,b2,c2); printf("y wynosi %0.3f\n",y); fprintf(fp,"y = %0.3f\n\n",y); fclose(fp); system("PAUSE"); return 0; } Link do komentarza Udostępnij na innych stronach More sharing options...
Force Napisano Czerwiec 16, 2009 Zgłoś Share Napisano Czerwiec 16, 2009 aa, problem z zapisaniem doublie. Do doubli trzeba %Lf a nie %f Baza tysięcy lotnisk: http://airportsbase.com Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.