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 confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    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 confirmé
    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
    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.

  3. #3
    Membre averti
    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
    Par défaut
    Et un float se rentrera 2.0 au lieu de simplement 2.

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 105
    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 confirmé
    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
    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

+ 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