Matrice ordinata rispetto alle colonne

di il
4 risposte

Matrice ordinata rispetto alle colonne

Salve a tutti, sto facendo un programma in C per me ma non funziona parte del codice. La parte che mi da problemi e' questa. Devo creare una matrice di dimensione r*c ordinata rispetto alle colonne. Per esempio se r=3 e c=2 la prima colonna deve avere i numeri 1,2,3 e l'altra 4,5,6. Il codice che ho creato non funziona sempre (per esempio non va per r=6 e c=15 mentre funziona per r=4 e c=3). Il codice e' questo:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define R 30
#define C 30

int main()
{
    int r,c,a,b;
    printf("quale e' la dimensione della matrice?\n");
    printf("scrivi il numero di righe:\n");
    scanf("%d",&r);
    printf("scrivi il numero di colonne:\n");
    scanf("%d",&c);

   int mat1[r][c];

    int i,j,k=1;
    for(j=1;j<=c;j++)
        for(i=1;i<=r;i++)
        {
            mat1[i][j]=k;
            k++;
        }

   /** stampa della matrice creata  **/
   for(i=1;i<=r;i++)
    {
        for(j=1;j<=c;j++)
            printf("%4d",mat1[i][j]);
      printf("\n");
    }


     printf("\n");
}
Ho notato che se nei cicli for faccio partire gli indici da 0 e non da 1, (e cambiando l'arrivo con i<r e j<c), funziona alla perfezione. Il problema è che a me servono che partano da 1. Dove può stare il problema? Grazie in anticipo per eventuali risposte.

4 Risposte

  • Re: Matrice ordinata rispetto alle colonne

    Spigolotta ha scritto:


    Ho notato che se nei cicli for faccio partire gli indici da 0 e non da 1, (e cambiando l'arrivo con i<r e j<c), funziona alla perfezione. Il problema è che a me servono che partano da 1. Dove può stare il problema? Grazie in anticipo per eventuali risposte.
    Scusa ma se hai un generico array di dimensione n, quale saranno gli indici rispettivamente del primo e ultimo elemento?
  • Re: Matrice ordinata rispetto alle colonne

    C'è una serie sterminata di motivi per cui gli indici devono partire da zero e non da uno (fai una ricerca su google), per cui *NON* ti serve che partano da uno. Puoi comunque sempre scrivere e leggere in [ i - 1 ][ j - 1 ]
  • Re: Matrice ordinata rispetto alle colonne

    Il programma che hai scritto è sbagliato

    In 'C' gli array cominciano con l'indice zero

    Cominciare con l'indice uno e arrivare a 'minore uguale' è sbagliato

    Correggi quello e 'magia' vedrai che va
  • Re: Matrice ordinata rispetto alle colonne

    Ho sempre fatto partire gli indici da 0 e non da 1 e non ho mai avuto problemi. Solo in questo caso ho provato a cominciare da 1 e ho visto i problemi. In effetti non mi sono mai chiesto perché si dovesse cominciare da 0 ma ora lo so!
    Grazie a tutte le risposte!
Devi accedere o registrarti per scrivere nel forum
4 risposte