[请教]谁能帮我做个题(做好了)

软件和网站开发以及相关技术探讨
回复
头像
levin
帖子: 109
注册时间: 2007-07-26 12:40
来自: 南京

[请教]谁能帮我做个题(做好了)

#1

帖子 levin » 2007-08-14 23:47

我最近研读C++ Primer Plus
刚读完第4章,但是第四章编程练习最后一题想了半天也没搞定,我是自学,周围又没有可以请教的人,上网找答案下载下来的rar包里几百个文件,命名又是乱七八糟,实在没法找......
想了半天决定来这里求救....
我把题目抄出来,哪位好心人能帮我做做,我感激不尽:

结构CandyBar包含3个成员。第一个成员存储了糖块的品牌;第二个成员存储糖块的重量(可以有小数);第三个成员存储了糖块的卡路里含量(整数)。请编写一个程序,声明这个结构,使用new来动态分配数组,该数组包含3个CandyBar结构的元素。将它们初始化并显示其内容。

(其实原题是这样的,我怕我自己因为理解问题表达失误:
4.11编程练习
1..........
2..........
3..........
4..........
5.结构CandyBar包含3个成员。第一个成员存储了糖块的品牌;第二个成员存储糖块的重量(可以有小数);第三个成员存储了糖块的卡路里含量(整数)。请编写一个程序,声明这个结构,创建一个名为snake的CandyBar变量........
6.结构CandyBar包含3个成员,如编程练习5所示。请编写一个程序,创建一个包含3个元素的CandyBar数组,并将它们初始化为所选的值,然后显示每个结构的内容。
7..........
8..........
9.完成编程练习6,但使用new来动态分配数组,而不是声明一个包含3个元素的CandyBar数组。)
上次由 levin 在 2007-08-15 13:37,总共编辑 3 次。
But for Ubuntu, I will die.
qiu_923
帖子: 250
注册时间: 2007-05-06 10:39

#2

帖子 qiu_923 » 2007-08-15 0:41

你在自学,不在上学!

代码: 全选

#include<iostream>
int main()
{
   struct CandyBar{char brand[12]; double heft; int calorie;};
   CandyBar snack={"Mocha Munch",2.3,350};
   std::cout<<"snack:\n"
            <<"brand: "<<snack.brand<<std::endl
            <<"heft: "<<snack.heft<<std::endl
            <<"calorie: "<<snack.calorie<<std::endl;
   return 0;
}
ps:我也在读
头像
levin
帖子: 109
注册时间: 2007-07-26 12:40
来自: 南京

#3

帖子 levin » 2007-08-15 7:39

谢谢楼上的 可是你理解错我的意思了 我想请教的是第9题,而你做的是第5题,第九题是由第六题演变而来,而第六题是由第5题演变而来的
But for Ubuntu, I will die.
头像
levin
帖子: 109
注册时间: 2007-07-26 12:40
来自: 南京

#4

帖子 levin » 2007-08-15 7:55

算了 我厚着脸皮把自己写的贴出来吧,其实我自己都觉得写的有点不是味 大家帮忙看看吧 如果能修改就帮忙改改 如果觉得写的太糟糕 好心人就自己写个贴出来吧

代码: 全选

 1 #include <iostream>
 2 struct CandyBar
 3 {
 4 	char name[20];
 5	float weight;
 6	int calorie;
 7 };
 8
 9 int main()
10 {
11	using namespace std;
12
13	CandyBar * pt = new CandyBar [3];
14	*pt = {"Mocha Munch", 2.3, 350};
15	*(pt + 1) = {"2nd name", 2.2, 222};
16
17	cout << "The snack info: name: " << (*pt).name << endl;
18	cout << "                weight: " << (*pt).weight << endl;
19	cout << "                calorie: " << (*pt).calorie << endl;
20	pt = pt + 1;
21
22	cout << "                name: " << (*pt).name << endl;
23	cout << "                weight: " << (*pt).weight << endl;
24	cout << "                calorie: " << (*pt).calorie << endl;
25	pt = pt - 1;
26	
27	delete [] pt;
28	return 0;
29 }
下面是g++的报错信息:

代码: 全选

pluto@levin:~/ING/primerplus/4chapter/test/9$ g++ 9.cpp 
9.cpp: In function ‘int main()’:
9.cpp:14: error: expected primary-expression before ‘{’ token
9.cpp:14: error: expected `;' before ‘{’ token
9.cpp:15: error: expected primary-expression before ‘{’ token
9.cpp:15: error: expected `;' before ‘{’ token
But for Ubuntu, I will die.
头像
madoldman
帖子: 599
注册时间: 2006-02-27 20:19
来自: works system
联系:

#5

帖子 madoldman » 2007-08-15 10:01

结构体能这么赋值?
大体给你改了一下,没有看题目,也不知道是不是符合要求,起码能编译过去了

#include <iostream>
#include <string>
using namespace std;

struct CandyBar
{
string name;
float weight;
int calorie;
};

int main()
{
CandyBar * pt = new CandyBar [3];
pt[0].name = "Mocha Munch";
pt[0].weight = 2.3;
pt[0].calorie = 350;
pt[1].name = "2nd name";
pt[1].weight = 2.2;
pt[1].calorie = 222;
cout << "The snack info: name: " << (*pt).name << endl;
cout << " weight: " << (*pt).weight << endl;
cout << " calorie: " << (*pt).calorie << endl;
pt = pt + 1;
cout << " name: " << (*pt).name << endl;
cout << " weight: " << (*pt).weight << endl;
cout << " calorie: " << (*pt).calorie << endl;
pt = pt - 1;

delete [] pt;
return 0;
}
东西路,南北走
十字路口人咬狗
拿起狗来打砖头
砖头咬了狗一口
图片
头像
aitilang
帖子: 1026
注册时间: 2007-04-28 21:38

#6

帖子 aitilang » 2007-08-15 10:56

不错。。。
thinkpad x61 2G DDR no cdrom
--------------------------------------------
ABS学习中
sed学习中
awk学习中
perl学习中
新手描述不清,老手猜测不到,胡乱指挥一通,后果难以预料
头像
levin
帖子: 109
注册时间: 2007-07-26 12:40
来自: 南京

#7

帖子 levin » 2007-08-15 11:13

谢谢5楼的 符合要求 能编译过了
问题是6楼的不错指的是什么呢? :?:
But for Ubuntu, I will die.
头像
levin
帖子: 109
注册时间: 2007-07-26 12:40
来自: 南京

#8

帖子 levin » 2007-08-15 11:20

普通的结构体应该可以这么赋值:
CandyBar snack={"Mocha Munch",2.3,350};

为什么这个动态数组这儿不可以呢?
But for Ubuntu, I will die.
头像
madoldman
帖子: 599
注册时间: 2006-02-27 20:19
来自: works system
联系:

#9

帖子 madoldman » 2007-08-15 12:15

呵呵,你这是声明的时候初始化的
改为CandyBar snack;
snack={"Mocha Munch",2.3,350};
就不行了,结构体不能这么赋值
东西路,南北走
十字路口人咬狗
拿起狗来打砖头
砖头咬了狗一口
图片
头像
levin
帖子: 109
注册时间: 2007-07-26 12:40
来自: 南京

#10

帖子 levin » 2007-08-15 13:36

原来如此
太谢谢了 说到要点上了
But for Ubuntu, I will die.
头像
ct
帖子: 2201
注册时间: 2005-04-06 21:15
来自: 安徽黄山
联系:

#11

帖子 ct » 2007-08-15 15:42

我靠,前面好多章的习题我全都做了,最后还是半途而废了.精神支持lz
头像
nihui
帖子: 1746
注册时间: 2006-10-21 12:03
来自: Shanghai
联系:

#12

帖子 nihui » 2007-08-15 15:58

hoho...
你们都是强人。。
同样是 17 年了。我一点点也没看过~ :P
.

私人空间
附有 Magic Linux 2.1 最新开发日志~


미안하다, 사랑한다


欢迎来 #xfce-cn 中文频道~~
回复