Dzień dobry! To mój pierwszy post na tym Forum i mam nadzieję, że nie spłynie na mnie fala hejtu.
Odwiedzam forum od paru miesięcy (zwłaszcza chat IRC) ale dopiero dzisiaj się zarejestrowałem.
Jestem studentem 1. roku matematyki, ale mam przedmiot "Wstęp do informatyki", gdzie jest nieco programowania w C. Do 13 stycznia muszę oddać program zaliczeniowy i mam z nim problem.
Treść programu : Napisz program, który dla macierzy odczytanej z pliku (pierwszy wiersz pliku to wymiary macierzy) wyprowadzi jej transpozycję (do innego pliku lub na ekran - wybiera użytkownik programu) oraz stwierdzi jeśli ta macierz jest symetryczna lub antysymetryczna.
Na zajęciach było tuż przed świętami na ostatnim wykładzie i ostatnich ćwiczeniach na szybko omawiane takie rzeczy jak fprintf,fscanf fopen fclose i parę innych.
Mam kilka problemów:
1. Zakładam z grubsza, że wymiary macierzy są jednocyfrowe bo to bardzo ułatwia.
Poniżej wklejam swój kod który jak na razie tylko deklaruje parę rzeczy, otwiera plik który mam w tym samym folderze co program i odczytuje wymiary macierzy z pierwszej linijki programu i konczy dzialanie programu jesli ktos przez pomylke wpisal w plik niedodatni wymiar macierzy. To zadanie mnie przerasta więc zamierzałem je robić małymi etapami dlatego tylko tyle na razie.
2. Teraz zamierzam zrobić wybór gdzie ma być przekazana transpozycja i dopiero ją zrobić po wyborze. A może uważacie, że lepiej najpierw niech komputer wyliczy transpozycję a potem kazać użytkownikowi wybrać?
3. Nie wiem za bardzo jak odczytać te elementy macierzy które mam napisane w pliku bo zadanie nie określa, że one są jednocyfrowe, ba, nawet nie określa, że te liczby są integerami. Jakbym odczytywał po jednym znaku to by działało tylko przy założeniu, że elementy tablicy są cyframi. Jeśli mogą tam być liczby dwu i więcejcyfrowe to już by było źle, nie mówiąc o floatach gdzie są kropki..... Zupełnie nie wiem co zrobić. Chciałbym żeby to działało nawet dla liczb typu 83.54. Bo pewnie odbije się to na ocenie jeśli ograniczę zadanie do jednocyfrowych liczb.
4. Z określeniem symetryczności lub antysymetryczności sobie poradzę, może nawet z tym wyborem czy transpozycja do nowego pliku czy do konsoli, ale nie jestem w stanie się zabrać za te elementy dopóki nie będzie to odczytanie z pliku należycie zrobione i sama transpozycja...................
Z góry dziękuję za każdą pomoc.
UPDATE: Poprawiłem błąd - była duża literka zamiast małej i to wysypywało: Oto co mam na chwilę obecną:
#include <stdio.h>
#include <stdlib.h>
int main()
{ int M; int N;
int I; int J;
int Matrix[M][N];
int TransposedMatrix[N][M];
FILE *macierz;
macierz = fopen("macierz.txt", "r");
fscanf(macierz,"%d%d",&M,&N);
if (M<=0||N<=0){return 0;}
else {printf("Udalo sie odczytac");}
printf("Wymiary macierzy to:%d\n%d",M,N);
fclose(macierz);
return 0;
}
Update 3: Dobra już mam zapomniałem że istnieje coś takiego jak %f i tym wczytuje elegancko floaty....