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

Free Pascal Discussion :

Error : Can't read or write variables of this type [Free Pascal]


Sujet :

Free Pascal

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 72
    Points : 38
    Points
    38
    Par défaut Error : Can't read or write variables of this type
    Bonsoir !
    J'ai un exercice à faire et je pense avoir fini, mais quand je compile il se passe un truc étrange. Voilà l'erreur :
    ventesmensuelles.pas(45,75) Error: Can't read or write variables of this type
    ventesmensuelles.pas(46,61) Error: Can't read or write variables of this type
    ventesmensuelles.pas(47,74) Error: Can't read or write variables of this type
    Et 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
    program ventes_mensuelles;
    const Nmax = 100;
    type tab = array [1..Nmax] of integer;
     
    procedure saisie (var T :tab; N : integer);
    var i : integer;
    begin
    	for i := 1 to N do
    	begin
    		write('Rentrez la valeur de la ',i,'ème case :');
    		readln(T[i])
    	end
    end;
     
    procedure affiche (T : tab; N : integer);
    var i : integer;
    begin
    	for i := 1 to N do
    		write(T[i],' ')
    end;
     
    procedure somme (var Q : tab; T1, T2 : tab; N : integer);
    var i : integer;
    begin
    	for i := 1 to N do
    		Q[i] := T1[i] + T2[i]
    end;
     
    var boissGaz, boissNonGaz, bonbon, gateau, boissons, confiseries, total : tab;
    	N : integer;
    begin
    	write('Combien y a-t-il de jours dans votre mois ?');
    	readln(N);
    	writeln('Saisie des ventes mensuelles de boissons gazeuses :');
    	saisie(boissGaz, N);
    	writeln('Saisie des ventes mensuelles de boissons non gazeuses :');
    	saisie(boissNonGaz, N);
    	writeln('Saisie des ventes mensuelles de bonbons :');
    	saisie(bonbon, N);
    	writeln('Saisie des ventes mensuelles de gâteaux :');
    	saisie(gateau, N);
    	somme(boissons, boissGaz, boissNonGaz, N);
    	somme(confiseries, bonbon, gateau, N);
    	somme(total,boissons,confiseries, N);
    	writeln('Les ventes mensuelles de boissons sont de ',affiche(boissons, N));
    	writeln('Celles de confiseries sont de ',affiche(confiseries, N));
    	writeln('Donc les ventes totales mensuelles sont de ',affiche(total, N))
    end.
    Pour info, l'exo c'est simplement de rentrer dans 4 tableaux les ventes mensuelles des boissons gazeuses ou pas, des bonbons et des gâteaux et grâce à la procédure somme, de réunir les valeurs des 2 tableaux de boisson pour n'en faire qu'un (boissons) et des 2 tableaux de confiseries pour n'en faire qu'un (confiseries) afin de pouvoir afficher les ventes totales de boissons, totales de confiseries et totales totales (somme de boissons et confiseries ).
    Enfin, si j'ai codé d'une façon claire ça se comprend vite j'imagine
    Si quelqu'un pouvait m'éclairer, ce serait super, merci Je ne vois pas du tout pourquoi j'ai cette erreur Je comprends bien ce que le compilateur me dit, mais je ne vois pas en quoi ça lui pose problème d'exécuter ce truc

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Miy,

    Tu cherches à afficher une procédure (affiche) !!
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 72
    Points : 38
    Points
    38
    Par défaut
    Oh, merci, c'est tout bête
    En fait, j'ai trouvé la solution au hasard en remanipulant mon code 10 minutes après avoir posté, c'est malin
    Donc au lieu d'écrire ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    writeln('Les ventes mensuelles de boissons sont de ',affiche(boissons, N));
    Il faut écrire ça !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    writeln('Les ventes mensuelles de boissons sont de :');
    affiche(boissons,N);
    (Pour les lecteurs futurs )

  4. #4
    Membre éclairé Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Points : 790
    Points
    790
    Par défaut
    Citation Envoyé par eldoir Voir le message
    Oh, merci, c'est tout bête
    En fait, j'ai trouvé la solution au hasard en remanipulant mon code 10 minutes après avoir posté, c'est malin

    (Pour les lecteurs futurs )
    Deux bonnes raisons pour mettre le sujet en
    À +
    Pat.


    Si vous avez trouvé chaussure à votre pied... euh solution à votre problème, n'oubliez pas de clôturer le sujet en le marquant comme:
    ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
    Windows 8.1, Lazarus 1.8.2 SVN 57369 FPC 3.0.4 x86_64-win64-win32/win64

  5. #5
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Gie,
    Citation Envoyé par DOLPat® Voir le message
    Deux bonnes raisons pour mettre le sujet en
    Oui, MAIS la 1ère montre une très mauvaise approche !!!

    On ne bricole pas du code "au hasard" en espérant tomber sur une version qui fonctionne, ça conduit droit dans le mur.
    Si les cons volaient, il ferait nuit à midi.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations forums :
    Inscription : Octobre 2011
    Messages : 72
    Points : 38
    Points
    38
    Par défaut
    Je sais, quand je dis tomber dessus au hasard, c'est que j'ai mis ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    writeln('Les ventes mensuelles de boissons sont de :');
    affiche(boissons,N);
    Et ça s'est mis à fonctionner, alors quand je dis au hasard, c'est simplement parce que je trouvais que l'erreur annoncée par le compilateur n'était pas très cohérente et que j'ai trouvé sans l'écouter, ce n'est pas vraiment du pif !

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 942
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 942
    Points : 5 654
    Points
    5 654
    Par défaut
    Hie,

    Tu l'as écouté, puisque tu es allé voir ce qui se passait sur la ligne qu'il te signalait.
    Si les cons volaient, il ferait nuit à midi.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 17/10/2011, 14h32
  2. Réponses: 12
    Dernier message: 29/09/2009, 15h55
  3. Réponses: 1
    Dernier message: 28/09/2009, 21h41
  4. Réponses: 1
    Dernier message: 06/01/2009, 18h59
  5. Réponses: 6
    Dernier message: 18/10/2004, 14h30

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