2010-02-28 7 views
1

Ok, donc mon devoir est de construire sur un code existant du livre. Je dois ajouter la 3ème case et ensuite calculer le total pour les 3 cases. Voici ce que j'ai écrit jusqu'ici, mais il ne compilera pas. S'il vous plaît aidez-moi à trouver le problème. Merci.Quel est le problème avec mon code? Mon programme ne compilera pas

Le programme J'utilise est MS Visual C++ et l'erreur complile je reçois est

erreur C2447: '{': en-tête de la fonction manquante (ancienne liste officielle?)

se référant à la {après mon int Total_Volume ligne

// Structures_and_classes.cpp : Defines the entry point for the console application. 
// 

#include "stdafx.h" 
#include <iostream> 
using std::cout; 
using std::endl; 
class CBox // Class definition at global scope 
{ 
public: 
double m_Length; // Length of a box in inches 
double m_Width; // Width of a box in inches 
double m_Height; // Height of a box in inches 
}; 
int main(); 
int Total_Volume; 
{ 
CBox box1; 
CBox box2; 
CBox box3; 
double boxVolume = 0.0;    // Stores the volume of a box 
    box1.m_Height = 18.0;   // Define the values 
    box1.m_Length = 78.0;    // of the members of 
    box1.m_Width = 24.0;    // the object box1 
    box2.m_Height = box1.m_Height - 10;   // Define box2  Box 2 H = 8 
    box2.m_Length = box1.m_Length/2.0;   // members in Box 2 L = 39 
    box2.m_Width = 0.25*box1.m_Length;   // terms of box1 Box 2 W = 6 
    box3.m_Height = box1.m_Height + 2;   // Define box3  Box 3 H = 20 
    box3.m_Length = box1.m_Length - 18;   //members in Box 3 L = 50 
    box3.m_Width = box1.m_Width + 1;   //terms of box1 Box 3 W = 25 

    // Box1 
    boxVolume = box1.m_Height*box1.m_Length*box1.m_Width;cout << endl; 
<< "Volume of box1 = " << boxVolume; 
    cout << endl; 
    // Box 2 
    boxVolume = box2.m_Height*box2.m_Length*box2.m_Width;cout << endl; 
<< "Volume of box2 = " << boxVolume; 
    cout << endl; 
    // Box 3 
    boxVolume = box3.m_Height*box3.m_Length*box3.m_Width;cout << endl; 
<< "Volume of box3 = " << boxVolume; 
    cout << endl; 

//Calculate Total Volume 
    Total_Volume = (box1.m_Height*box1.m_Length*box1.m_Width)+ 
     (box2.m_Height*box2.m_Length*box2.m_Width)+ 
     (box3.m_Height*box3.m_Length*box3.m_Width); 

return 0; 
} 
+0

format s'il vous plaît votre code. –

Répondre

8

Change:

int main(); 
int Total_Volume; 
{ 

à:

int main() 
{ 
    int Total_Volume; 

qui résoudra votre problème immédiat, même si je suppose que vous aurez quelques questions aujourd'hui :-)

Le problème réel avec votre code actuel est qu'il définit un prototype pour main, suivi d'une variable au niveau du fichier, suivi d'une accolade nue, c'est pourquoi il se plaint d'un en-tête de fonction manquant.

Vous pouvez également envisager de changer votre fonction main à l'un des:

int main (int argc, char *argv[]) 
int main (void) 

(probablement le deuxième dans votre cas) car ce sont les deux formes qui doivent être pris en charge par la norme ISO C . Les implémentations sont libres d'accepter les autres si elles le souhaitent mais je préfère généralement que mon code soit aussi standard que possible. La raison pour laquelle je dis "may" est parce que ce n'est pas forcément nécessaire pour que votre code fonctionne, plus d'une chose de style.

+0

génial! cela m'a aidé et j'ai pu compléter le reste par moi-même. merci paxdiablo! – Russton

+0

@Russton - Je serais gentil et marquerais cela comme une réponse acceptée, alors. Cela donne à paxdiablo quelques rep, et montre que la question a une réponse disponible pour les personnes ayant des requêtes similaires. – Edd

3
int main(); 
int Total_Volume; 
{ 

devrait être

int main() 
{ 
    int Total_Volume; 
0

Essayez de déplacer

int Total_Volume; 

après la {

+0

Ceci ne fournit pas de réponse à la question. Pour critiquer ou demander des éclaircissements à un auteur, laissez un commentaire sous son article. – bitmask

+0

@bitmask: Veuillez lire à nouveau ma réponse. Il fournit une réponse à la question. En fait, il contient exactement le même conseil que 4 autres réponses toutes soumises à une minute d'intervalle. Évidemment, je n'ai pas gagné la [FGIW] (http://meta.stackexchange.com/questions/9731/fastest-gun-in-the-west-problem), mais ce n'est pas une critique ou une demande de clarification. – Oddthinking

+0

Peut-être que je suis nitpicking mais il suggère d'essayer quelque chose au lieu de dire ce qui ne va pas. Par ailleurs; Votre réponse est fausse, car déplacer la déclaration après le '(' laisserait le point-virgule après 'main()' qui ne compilerait toujours pas. Certes, le temps de réponse semble être identique pour tous les messages, mais cette réponse ajoute simplement du bruit car elle n'ajoute pas de détails non plus présentés par les autres - plus approfondies - réponses (et vous ne perdriez pas rep, btw.). – bitmask

0

Bonté moi. S'il vous plaît vérifier l'aperçu et au moins assurez-vous que votre question ressemble à de la prose plus du code. Modifier okay, supposons que c'était un petit problème qui a été réglé. Le reste de ma réponse tient toujours. Un petit peu d'excavation suggère que le premier problème est que vous n'avez pas de fonction main() correctement définie. C'est la première chose que l'on apprend en général sur le C++, donc dans un premier temps, faites-le bien.

Bonne chance.

0

Vous avez probablement voulu écrire:

int main() 
{ 
    int TotalVolume; 

Vous ne pouvez pas commencer un bloc où vous avez fait. Vous avez déclaré qu'il y aura une fonction main(), et qu'il existe une variable globale TotalVolume, mais le bloc anonyme qui suit ceux-ci n'est pas autorisé.

1

On dirait que vous avez mélangé une des lignes de couple:

int main(); 
int Total_Volume; 
{ 
CBox box1; 
CBox box2; 
CBox box3; 

On dirait qu'il devrait être:

int main() { 
    int Total_Volume; 
    CBox box1; 
    CBox box2; 
    CBox box3; 
Questions connexes