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 :

Petit programme avec des tableaux


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Par défaut Petit programme avec des tableaux
    Bonjour à tous,

    Je n'ai jamais programmé avec des tableaux, donc je tente de traduire un algo que j'avais en "pseudo-langage". Le but est de remplir 2 tableaux T1 et T2, et de copier ces valeurs dans un tableau T3.
    J'ai fait un code, avec une fonction pour écrire le tableau T3 à la fin. Le logiciel me donne une erreur "ERROR: declare a deferred shape array with a 0 subscript" mais je n'arrive pas la résoudre… je ne pense pas que ce soit grand chose.
    Est-ce que quelqu'un pourrait m'aider pour résoudre ce petit problème ?

    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
     
    #include <stdlib.h>
    #include <math.h>
    #include <stdbool.h>
    #include <iostream>
    #include "ecritTableau.cpp"
     
     
    using namespace std;
     
    // variables
    int N1, N2, N3, i, j, k, y, t;
    double T1[N1];
    double T2[N2];
    double T3[N3];
     
    // Début
     
    cout << "Saisir N1 " << endl;
    cin >> N1 ;
    cout << " Saisir N2 " << endl;
    cin >> N2 ;
     
    for (i=0 ; i<=(N1-1) ; i++)
        {
            cout << "Saisir la valeur numéro " << i << " du tableau T1 : " << endl;
            cin >> T1[i] ;
        }
     
    for (j=0 ; j<=(N1-1) ; j++)
        {
            cout << "Saisir la valeur numéro " << j << " du tableau T2 : " << endl;
            cin >> T2[j] ;
        }
     
    for (k=0 ; k<=(N1-1) ; k++)
        {
           T3[k]=T1[i]; 
        }
     
    for (y=0 ; y<=(N2-1) ; y++)
        {
           T3[N1+y]=T2[y]; 
        }
    N3=N1+N2;
     
    ecritTableau(T3[], N3);
    cout << endl;
     
    //Fin
    Et voici la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    /** Fonction qui écrit un tableau */
     
    void ecritTableau (double t[],int n)
    {
        int i;
        cout << "[" ;
        for (i=0 ; i<=n ; ++i)
            cout << t[i] << ", " ;
        cout << "]";
    }
    Merci d'avance !

  2. #2
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 599
    Par défaut
    Bonjour,

    En face de l'erreur, tu dois avoir la ligne où elle s'est produite.
    A l’œil, ligne 13 14 et 15. Un tableau en C++ doit avoir une taille connue exactement au moment de la compilation.

    Pour des tableaux dynamiques en C++, il faut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #include <vector>
     
    std :: vector<double> T1;
    puis T1.resize( N1 );
    A l'appel de la fonction ecritTableau : il faut faire ecritTableau( T3 , T3.size() )
    Dans la fonction ecritTableau() attention au : i <= n

    Je me répète : En face de l'erreur, tu dois avoir la ligne où elle s'est produite.

  3. #3
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Par défaut
    Bonjour,

    Merci pour ton aide !

    La même erreur se répète aux lignes 11, 12 et 13.
    J'ai tenté de faire comme tu m'as dit, mais #include <vector> engendre déjà une erreur…

    Concernant ma fonction, pourquoi le "i<=n" n'est-il pas bon ? A cause que i je l'utilise également dans une boucle de mon programme ?

  4. #4
    Membre émérite Avatar de SkyZoThreaD
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2013
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 585
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // variables
    int N1, N2, N3, i, j, k, y, t;
    double T1[N1];
    double T2[N2];
    double T3[N3];
    Comment veux-tu que le compilateur sache qelle taille il dait donner au tableaux: N1,2,3 ne sont pas initialisés.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cout << "Saisir N1 " << endl;
    cin >> N1 ;
    Tu fais une double utilisation des variables N ? C'est pas interdit mais ça reste chelou.
    J'ai tenté de faire comme tu m'as dit, mais #include <vector> engendre déjà une erreur…
    Ah bon ! Sur quel compilateur bosses-tu? Il ne doit pas supporter le c++ ou l'option n'est pas activée?

  5. #5
    Membre confirmé
    Homme Profil pro
    Lycéen
    Inscrit en
    Avril 2015
    Messages
    224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Avril 2015
    Messages : 224
    Par défaut
    Ah oui donc il faut que j'entre N1 et N2 avant d'initialiser mon tableau ?

    J'utilise ChIDE, je ne sais pas trop ce que ça vaut, mais on utilise ça en cours…

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par Stéphanois57 Voir le message
    Concernant ma fonction, pourquoi le "i<=n" n'est-il pas bon ? A cause que i je l'utilise également dans une boucle de mon programme ?
    Parce qu'en C++, comme dans la majorité des langages, un tableau de taille N va des index 0 à N-1 inclus, donc N exclus.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  7. #7
    Membre émérite Avatar de SkyZoThreaD
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Juillet 2013
    Messages
    585
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2013
    Messages : 585
    Par défaut
    Ah oui donc il faut que j'entre N1 et N2 avant d'initialiser mon tableau ?
    Oui. Et évite d'utiliser N1 & N2 pour remplir les tableaux ensuite. Tu vas faire des confusions en permanence
    J'utilise ChIDE, je ne sais pas trop ce que ça vaut, mais on utilise ça en cours…
    Même google ne sait pas ce que ça vaut

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SkyZoThreaD Voir le message
    Même google ne sait pas ce que ça vaut
    https://www.softintegration.com/docs/ch/chide/

    çà ressemble un peu aux IDE des années 90
    d'ailleurs ils ne disent pas que c'est compatible avec C++14...

Discussions similaires

  1. Lancer un programme avec des arguments via IE...
    Par petozak dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 24/03/2006, 11h51
  2. Réponses: 8
    Dernier message: 09/03/2006, 17h48
  3. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  4. [SRC] Petit programme avec BD
    Par Nico62 dans le forum C++Builder
    Réponses: 3
    Dernier message: 10/01/2005, 20h07
  5. [Classpath][execution] executer un programme avec des jar.
    Par LoLoSS dans le forum Général Java
    Réponses: 11
    Dernier message: 26/08/2004, 11h45

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