IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Problématique de variables


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 12
    Points : 9
    Points
    9
    Par défaut Problématique de variables
    Bonjour,bien que je débute en C, j'ai quelques notions de programmation.
    j'ai dans un premier temps réalisé un programme (rotation de matrices) qui fonctionnait tant que je programmais dans le main.
    dans un second temps, j'ai voulu, toujours pour le même programme introduire une fonction et là, j'ai une erreur à la compilation que je n'arrive pas à résoudre.
    Quelqu'un pourrait-il me conseiller ?
    Par avance merci.
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    #include <stdio.h>
    #include <stdlib.h>
     
    void rotate_mat(int mat[4][4],int res[4][4],unsigned int rot)
    {
        int liste1[12]={1,2,3,4,8,12,16,15,14,13,9,5};
        int liste2[4]={6,7,11,10};
        int temporaire1[12]={0,0,0,0,0,0,0,0,0,0,0,0};
        int temporaire2[4]={0,0,0,0};
        int rotation1=rot%12;
        int rotation2=rot%4;
        for (int i=0;i<rotation1;i++)
        {
            temporaire1[11-i]=liste1[rotation1-i-1];
        }
        for (int i=0;i<12-rotation1;i++)
        {
            liste1[i]=liste1[rotation1+i];
        }
        for (int i=12-rotation1; i<12;i++)
        {
            liste1[i]=temporaire1[i];
        }
        for (int i=0;i<rotation2;i++)
        {
            temporaire2[3-i]=liste2[rotation2-i-1];
        }
        for(int i=0;i<4-rotation2;i++)
        {
            liste2[i]=liste2[rotation2+i];
        }
        for(int i=4-rotation2;i<4;i++)
        {
            liste2[i]=temporaire2[i];
        }
        for(int i=0;i<4;i++)
        {
            res[0][i]=liste1[i];
            res[3][i]=liste1[9-i];
        }
        res[1][0]=liste1[11];
        res[1][1]=liste2[0];
        res[1][2]=liste2[1];
        res[1][3]=liste1[4];
        res[2][0]=liste1[10];
        res[2][1]=liste2[3];
        res[2][2]=liste2[2];
        res[2][3]=liste1[5];
    for (int i=0;i<4 ; i++)
        {
            for(int j=0;j<4;j++)
            {
                printf("%d\n", res[i][j]);
            }
        }
    return 0;
    }
     
     
    int main()
    {
        int mat[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
        int resultat[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
        unsigned int n=0;
     
        printf("Valeur de la rotation :");
        scanf("%d",&n);
        rotate_mat(mat[4][4],resultat[4][4],n);
        return 0;
    }

  2. #2
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Bonjour,

    ligne 68. mat[3][3] est le dernier élément de la matrice mat, et donc mat[4][4] est un élément monstrueux en tout cas ça n'est pas ta matrice. Ta fonction doit transmettre 2 pointeurs pour accéder à tes matrices, ils s’appellent mat et resultat.
    Ton compilateur a d'ailleurs dû t'indiquer à peu près la même chose, à moins que tu n'aies désactivé ses warnings.

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 685
    Points : 30 974
    Points
    30 974
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par thierry1967 Voir le message
    dans un second temps, j'ai voulu, toujours pour le même programme introduire une fonction et là, j'ai une erreur à la compilation que je n'arrive pas à résoudre.
    Quelqu'un pourrait-il me conseiller ?
    Bonjour

    dalfab a soulevé un premier point. Les indices d'un tableau de n éléments vont de 0 à n-1

    Le second point c'est que si tu appelles rotate_mat(mat[x][y]) indépendemment des valeurs de "x" et "y" tu ne passes qu'un élément de ta matrice à la fonction "rotate_mat()".
    Si tu veux lui passer toute la matrice, il ne faut pas mettre d'indices => rotate_mat(mat) tout simplement. "mat" est alors bien un tableau de [4][4] tel que décrit dans la fonction.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/07/2002, 13h32
  2. variables locales ou globales ???
    Par elvivo dans le forum C
    Réponses: 13
    Dernier message: 03/07/2002, 08h22
  3. Procédure avec un nombre variable d'arguments
    Par charly dans le forum Langage
    Réponses: 15
    Dernier message: 21/06/2002, 11h08
  4. Réponses: 4
    Dernier message: 05/06/2002, 14h35
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo