Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct macierz {
- int w,k;
- int **a;
- };
- struct macierz losujMacierz (int w, int k);
- void wyswietlMacierz (struct macierz a);
- int maks (struct macierz a);
- int maksWierszy(struct macierz a);
- int maksKolumn(struct macierz a);
- struct macierz zrobMacierz (int wp, int kp, int wk, int kk, struct macierz a);
- void zapiszDoPliku(struct macierz a, char nazwa []);
- struct macierz wczytajMcierzZPliku (char mazwa[]);
- int main(){
- srand(time(0));
- int w,k,wp,kp,wk,kk;
- printf("Podaj wymiary macierzy A: ");
- scanf("%d %d", &w, &k);
- struct macierz A;
- A = losujMacierz(w,k);
- wyswietlMacierz(A);
- printf("Maksimum macierzy wynosi: %d\n", maks(A));
- printf("Wiersz w ktorym wystepuje najwieksza suma: %d\n", maksWierszy(A));
- printf("Kolumna w ktorej wystepuje najwieksza suma: %d\n", maksKolumn(A));
- printf("Podaj wspolrzedne lewego gornego rogu nowej macierzy: ");
- scanf("%d %d", &wp, &kp);
- printf("Podaj wspolrzedne prawego dolnego rogu nowej macierzy: ");
- scanf("%d %d", &wk, &kk);
- struct macierz B;
- B = zrobMacierz(wp,kp,wk,kk,A);
- wyswietlMacierz(B);
- zapiszDoPliku(B,"MacierzB.txt");
- struct macierz C;
- printf("Wczytana macierz: \n");
- C=wczytajMcierzZPliku("MacierzB.txt");
- wyswietlMacierz(C);
- printf("\n997-TEN NUMER TO KLOPOTY!");
- return 0;
- }
- struct macierz losujMacierz(int w, int k){
- struct macierz pom;
- pom.w=w;
- pom.k=k;
- pom.a=(int*)malloc(sizeof(int*)*w);
- for (int i=0; i<pom.w; i++){
- pom.a[i]=(int*)malloc(sizeof(int*)*k);
- }
- for (int i=0; i<pom.w; i++){
- for (int j=0; j<pom.k; j++){
- pom.a[i][j]=rand()%10;
- }
- }
- return pom;
- };
- void wyswietlMacierz(struct macierz a){
- for (int i=0; i<a.w; i++){
- for (int j=0; j<a.k; j++){
- printf("%d ", a.a[i][j]);
- }
- printf("\n");
- }
- }
- int maks(struct macierz a){
- int max;
- max=a.a[0][0];
- for (int i=0; i<a.w; i++){
- for (int j=0; j<a.k; j++){
- if (a.a[i][j]>max){
- max = a.a[i][j];
- }
- }
- }
- return max;
- }
- int maksWierszy(struct macierz a){
- int max, suma=0, tab[a.w], x=0;
- for(int i=0;i<a.w;i++){
- suma=0;
- for(int j=0;j<a.k;j++){
- suma = suma + a.a[i][j];
- }
- tab[i]=suma;
- }
- max=tab[0];
- for(int i=0; i<a.w;i++){
- if(tab[i]>max){
- max=tab[i];
- x=i+1;
- }
- }
- return x;
- }
- int maksKolumn(struct macierz a){
- int max, suma=0, tab[a.w], x=0;
- for(int i=0;i<a.k;i++){
- suma=0;
- for(int j=0;j<a.w;j++){
- suma = suma + a.a[j][i];
- }
- tab[i]=suma;
- }
- max=tab[0];
- for(int i=0; i<a.w;i++){
- if(tab[i]>max){
- max=tab[i];
- x=i+1;
- }
- }
- return x;
- }
- struct macierz zrobMacierz (int wp, int kp, int wk, int kk, struct macierz a){
- struct macierz pom;
- pom.w=(wk-wp)+1;
- pom.k=(kk-kp)+1;
- pom.a=(int*)malloc(sizeof(int*)*pom.w);
- for(int i=0;i<pom.w;i++){
- pom.a[i]=(int*)malloc(sizeof(int*)*pom.k);
- }
- for(int i=0;i<pom.w;i++){
- for(int j=0;j<pom.k;j++){
- pom.a[i][j]=a.a[i+1][j+1];
- }
- }
- return pom;
- };
- void zapiszDoPliku(struct macierz a, char nazwa []){
- FILE *fp;
- if ((fp=fopen(nazwa, "w"))==NULL){
- printf("Nie moge otworzyc pliku do zapisu!\n");
- exit(1);
- }
- fprintf(fp, "%d \n", a.w);
- fprintf(fp, "%d \n", a.k);
- for (int i=0; i<a.w; i++){
- for (int j=0; j<a.k; j++){
- fprintf(fp, "%d ", a.a[i][j]);
- fprintf(fp, "\n");
- }
- }
- fclose (fp);
- }
- struct macierz wczytajMcierzZPliku(char nazwa[]){
- struct macierz pom;
- FILE *fp;
- fp = fopen(nazwa, "r");
- fscanf(fp, "%d", &pom.w);
- fscanf(fp, "%d", &pom.k);
- pom.a= (int*)malloc(sizeof(int*)*pom.w);
- for (int i=0; i<pom.w; i++){
- pom.a[i]=(int*)malloc(sizeof(int*)*pom.k);
- }
- for (int i=0; i<pom.w; i++){
- for (int j=0; j<pom.k; j++){
- fscanf(fp, "%d ", &pom.a[i][j]);
- }
- }
- close(fp);
- return pom;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement