Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

C zamiana wierszy i kolumn

22 Lis 2010 23:11 2323 4
  • Poziom 12  
    Witam. Mam do napisania następujący program - zamieniający 2 wybrane kolumny i 2 wybrane wiersze ze sobą w danej tablicy. Problem jest wydaje mi się trywialny i przypuszcam, że bład leży w instrukcji else, ponieważ zamienione wiersze i kolumny wyświetla dobrze. Gdzie zmienić by pozostałe elementy tj. wiersze i kolumny których nie zmienia, wyświetlał bez zmian (1 i 2 wiersz w tablicy2 i 1 i 2 kolumne w tablicy3? Reszta jest dobrze.

    Code:

    #include <stdio.h>
    #include <conio.h>

    void wczytaj_2D(int wiersze, int kolumny, int z[5][5])
         {
           int i,j,k;
           for (i=0; i<wiersze;i++)
           for (j=0;j<kolumny;j++)
           do
              {
                 printf ("\n Element [%d][%d] = ",i,j);
                 k=scanf("%d", &z[i][j]);
                 fflush(stdin);
              }
           while (k==0);
         }                 

    void drukuj_2D(int wiersze, int kolumny, int z[5][5])
         {
           int i,j;
           printf("\n");
           for (i=0; i<wiersze;i++)
               {
                  for (j=0;j<kolumny;j++)
                  printf ("\t[%d]",z[i][j]);
                  printf("\n");
               }
         }
         
    void zamien_wiersze(int wiersze, int kolumny, int x[5][5], int z[5][5])
         {
            int i,j, row1 = 2, row2 = 3;
            for (i=0; i<wiersze;i++)
            for (j=0;j<kolumny;j++)
                {
                  if (i=row1) x[row2][j] = z[row1][j];
                  if (i=row2) x[row1][j] = z[row2][j];
                  else x[i][j] = z[i][j];
                }
         }
     
    void zamien_kol(int wiersze, int kolumny, int y[5][5], int z[5][5])   
         {
            int i,j, col1 = 2, col2 = 3;   
            for (i=0; i<wiersze;i++)
            for (j=0;j<kolumny;j++)
                {
                  if (j=col1) y[i][col2] = z[i][col1];
                  if (j=col2) y[i][col1] = z[i][col2];
                  else y[i][j] = z[i][j];
                }
         } 

    int main()
        { 
           int wiersze = 4, kolumny = 4, z[5][5], x[5][5], y[5][5];
           wczytaj_2D(kolumny,wiersze,z);
           zamien_wiersze(kolumny,wiersze,x,z);
           zamien_kol(kolumny,wiersze,y,z);
           drukuj_2D(kolumny,wiersze,z);
           printf("\n");
           drukuj_2D(wiersze,kolumny,x);
           printf("\n");
           drukuj_2D(wiersze,kolumny,y);
           getch();
           return 0;
        }


    i wyniki, co powyższy kod robi:

    Code:

     Element [0][0] = 1
     Element [0][1] = 2
     Element [0][2] = 3
     Element [0][3] = 4
     Element [1][0] = 0
     Element [1][1] = 1
     Element [1][2] = 2
     Element [1][3] = 2
     Element [2][0] = 4
     Element [2][1] = 5
     Element [2][2] = 6
     Element [2][3] = 9
     Element [3][0] = 10
     Element [3][1] = 5
     Element [3][2] = 3
     Element [3][3] = 2

            [1]     [2]     [3]     [4]
            [0]     [1]     [2]     [2]
            [4]     [5]     [6]     [9]
            [10]    [5]     [3]     [2]

            [2]     [-2042481128]   [16777216]      [2]
            [4194304]       [64]    [212288]        [196964]
            [10]    [5]     [3]     [2]
            [4]     [5]     [6]     [9]

            [7995507]       [197656]        [4]     [3]
            [64]    [2358840]       [2]     [2]
            [2359044]       [2089877569]    [9]     [6]
            [212296]        [2499560]       [2]     [3]
  • Poziom 38  
    i = 3 przypisanie
    i == 3 porównanie :)

    dobrym nawykiem jest pisanie if(3 == i) i czytanie komunikatów kompilatora. Można też do kompilatora dodać parametr -Werror
  • Moderator Programowanie
    Do autora tematu : Proszę, zgodnie z regulaminem pkt 11.1, o usunięcie słów PROBLEM lub/i POMOC z tytułu. Prośba dotyczy także wszelkich wariacji typu: kłopot, pomocy, problemy itd.
  • Poziom 12  
    Gaskoin dzięki za sugestie, nie do wiary, że tego wczoraj nie sprawdziłem. Korrus666 właśnie celowo jest tylko jedno else, ify w zupełności wyczerpują zamianę. Temat zamykam.