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 :

Tableau correct déclaré avec int, incohérent avec float


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    Points : 67
    Points
    67
    Par défaut Tableau correct déclaré avec int, incohérent avec float
    Bonjour,

    Je débute en C (une poignée d'heures) et mon expérience de Python ne m'est d'aucun secours...
    Je suis face à un problème dont la solution doit être évidente, mais mes maigres connaissances de C ne me permettent pas de voir le bout du tunnel, donc je fais appel à vous, si vous le voulez bien.
    Le code suivant :
    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
    # include <stdio.h>
    # include <stdlib.h>
     
    int main()
    {
        int ts[4][4];
        int i,j;
     
        printf("        Triangularisation de matrices 4 x 4\n\n");
        printf("      Elements\n");
        for (j = 0 ; j<4 ; j++)
            for(i = 0 ; i < 4; i++)
        {
            /* Saisie des valeurs */
     
                printf("Ligne, %d,colonne, %d : ", j + 1, i + 1);
                scanf("%d", &(ts[j][i]));
        } 
     
        system("cls");
     
        printf("\n+---+---+---+---+\n");
     
        for (j = 0 ; j<4 ; j++)
        {
            printf("| %d | %d | %d | %d |\n", ts[j][0], ts[j][1], ts[j][2], ts[j][3]);
            printf("+---+---+---+---+\n");
        }
     
        system("pause");
     
        return 0;
    }
    fonctionne.
    Je rentre la matrice
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    1 2 3 4
    2 3 4 1
    3 4 1 2
    4 1 2 3
    et je l'obtiens bien en sortie.
    Mais, surprise (pour moi), je remplace int ts[4][4] par float ts[4][4] et là, c'est la cata ! L'affichage est incohérent et n'a rien à voir les nombres entrés...
    Donc, vu mon objectif (je précise que j'ai déjà écrit un programme de triangularisation en Python, et il fonctionne), inutile d'aller plus loin...

    Une âme charitable aurait-elle le temps et l'envie de se pencher sur ce problème (sûrement) élémentaire et aurait la bonté de dissiper les nuées ?

    Merci d'avance.

    @+

  2. #2
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Si ts change de type, il ne suffit pas d'écrire float ts[4][4] , il faut également changer tout ce qui était dépendant du type. Notamment les scanf et les printf n'ont plus le bon format : de %d, on passe à %f.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur
    Inscrit en
    Avril 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Avril 2010
    Messages : 25
    Points : 21
    Points
    21
    Par défaut
    Et un float se rentrera 2.0 au lieu de simplement 2.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    Points : 67
    Points
    67
    Par défaut
    Merci les gars,

    Belle réactivité...
    2.0 au lieu de 2, bon, j'aurais pu (dû ?) m'en douter
    Pour les scanf et printf, j'aurais dû lire les tutos de A à Z, ce doit être sûrement expliqué, donc, je n'ai pas gagné de temps...
    Vous n'en êtes alors que plus sympa de m'avoir répondu si gentiment !
    En tant qu'ex prof de maths, je pensais naïvement que tout entier était un réel (qui s'ignorait) : je me méfierai à l'avenir...

    Je reviendrai ultérieurement pour des problèmes de passage de tableau à une fonction pour modif avec récupération dans le main : pour l'instant (j'ai essayé !), je vais faire sans, ça ne gênera pas le déroulement des opérations...

    Merci donc,

    A bientôt ;-)

  5. #5
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par dedibox26 Voir le message
    Et un float se rentrera 2.0 au lieu de simplement 2.
    On peut aussi le rentrer comme 2
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. surchage avec int et float
    Par killwin dans le forum C++
    Réponses: 1
    Dernier message: 14/06/2015, 10h50
  2. Collection Editor avec un tableau de Tuple<Color,int>
    Par enusius dans le forum Windows Forms
    Réponses: 0
    Dernier message: 19/03/2013, 22h39
  3. [XSLT]Convertir une chaîne en float, int etc ... avec XSL
    Par wozzz dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 19/05/2006, 10h12
  4. [C#] tri datagrid et incohérence avec la DataSource
    Par chasis.fan dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/12/2005, 17h54
  5. Réponses: 9
    Dernier message: 06/07/2005, 14h20

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