Tworzenie tablicy jednowymiarowej z dwuwymiarowej

0

Witam, mam zadanie polegające na stworzeniu dwuwymiarowej tablicy kwadratowej i do tego jeszcze dwie tablice jednowymiarowe, które będą przechowywać liczby które są na przekątnych tablicy. Stworzyłem tablicę, która zapisuje liczby zaczynając od prawego górnego rogu tablicy idąc do lewego dolnego, jednak nic się nie dzieje pomimo wypisu tej tablicy. Błąd pewnie tkwi w zapisie tablicy, jak powinno być poprawnie?

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char* argv[])
{
    int w, min, max, i, j, c, z;
    printf("Podaj rozmiar tablicy kwadratowej: ");
    scanf("%i", &w);
    printf("Podaj dolny zakres losowania liczb: ");
    scanf("%i", &min);
    printf("Podaj gorny zakres losowania liczb: ");
    scanf("%i", &max);
    while (max < min) {
        printf("Podaj poprawny gorny zakres: ");
        scanf("%i", &max);
    }
    int tab[w][w];
    for (i = 0; i < w; i++) {
        for (j = 0; j < w; j++) {
            tab[i][j] = min + rand() % (max - min + 1);
        }
    }
    printf("Macierz : ");
    for (i = 0; i < w; i++) {
        printf("\n");
        for (j = 0; j < w; j++)
            printf("%i \t", tab[i][j]);
    }
    printf("\n");
    printf("Tablica po przekatnej: ");
    int cz[w];
    int k = 0;
    for (i = 0, j = w - 1; i = w - 1, j = 0; i++, j--) {
        cz[k] = tab[i][j];
        printf("%i \t", cz[k]);
        k++;
    }
    for (k = 0; k < w; k++) {
    }
    return 0;
}
 
0

Po co Ci tyle wyrażeń w wyrażeniu inicjującym pętli?

0

Chciałem wyznaczyć początkowy element tej tablicy, bo zawsze będzie zaczynać się w pierwszym wierszu i w ostatniej kolumnie czyli to będzie element [0][rozmiar-1], tak przynajmniej uważam.

0
  1. Nie rozumiesz inkrementacji/dekrtementacji: http://4programmers.net/Forum/1101404
int tab[w][w],main_diag[w],add_diag[w];
for(i=0;i<w;++i) main_diag[i]=tab[i][i];
for(i=0;i<w;++i) add_diag[i]=tab[i][w-i-1];

1 użytkowników online, w tym zalogowanych: 0, gości: 1