- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是一年级学生,我正在开始学习 C 语言的编程冒险。我被分配了一个我不知道该怎么做的作业。在这个程序中,我需要使用 malloc、void 函数、指针和结构。
这是作业:
1.创建预定数量的图形。使用malloc为这些图形分配内存。
2.添加新图形。
3.去除随机人物。
4.为随机图形添加一个点。
5.从图形中删除随机点。
6.显示所有数字。如果图形有 1 个点,则打印“it is a point”。如果图形有 2 个点,则打印“it is a line”。如果图形有 3 个点,则打印“它是一个三角形”等
程序需要由以下几行组成(但您可以添加一些内容)。
struct Point
{
int x, y;
};
struct Figura
{
unsigned short size;
struct Point **p;
};
这是我的不合逻辑的代码,采用了奇怪的方法。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <float.h>
#include <time.h>
#include <string.h>
#define SIZE 20
struct Point{
int x;
int y;
};
struct figure{
unsigned short size;
struct Point **p;//I have no idea how to work with this.
char figure[SIZE];
};
void create_space_for_points(struct Point ***point,int beginning_quanity);
void create_space_for_figures(struct figure ***figure,int beginning_quanity);
void ceating_base_of_figures(struct Point **point,struct figure **figure,int beginning_quanity,int *quanity,int *sum_of_points);
void adding_figure(struct Point ***point,struct figure ***figure,int *quanity,int *sum_of_points);
void showing_figures(struct figure **figure,int quanity);
int main()
{
struct figure **figure;
struct Point **point;
int beginning_quanity;
int *quanity=0;
int *sum_of_points=0;
printf("How many figures do you want to create?: ");
scanf("%d",&beginning_quanity);
//At this stage I am creating separate space for point and figures.
create_space_for_points(&point,beginning_quanity);
create_space_for_figures(&figure,beginning_quanity);
ceating_base_of_figures(point,figure,beginning_quanity,&quanity,&sum_of_points);//At this stage sometime it doesn't work. Maybe because of the memory.
adding_figure(&point,&figure,&quanity,&sum_of_points);//new figure is added at the end of list.
showing_figures(figure,quanity);
return 0;
}
//I am sure I made a mistake with memory allocation but I don't know where.
void create_space_for_points(struct Point ***point,int beginning_quanity){
struct Point **temp1=(struct Point**)malloc(beginning_quanity*sizeof(struct Point))
for(int i=0;i<beginning_quanity;i++)
temp1[i]=(struct Point*)malloc(beginning_quanity*sizeof(struct Point));
*point=temp1;
}
void create_space_for_figures(struct figure ***figure,int beginning_quanity){
struct figure **temp=(struct figure**)malloc(beginning_quanity*sizeof(struct figure));
for(int i=0;i<beginning_quanity;i++)
temp[i]=(struct figure*)malloc(sizeof(struct figure));
*figure=temp;
}
void ceating_base_of_figures(struct Point **point,struct figure **figure,int beginning_quanity,int *quanity,int *sum_of_points){
int number_of_points=0,i;
srand(time(NULL));
char word[SIZE];
for( i=0;i<beginning_quanity;i++){
char figures[SIZE];
for(int j=0;j<rand()%5+1;j++){
point[j]->x=rand()%10;
point[j]->y=rand()%10;
//printf("%d %d\n",punkt[j]->x,punkt[j]->y);
number_of_points++;
}
printf("-------Number of points-------\n%d",number_of_points);
if(number_of_points==1){
printf("----point----\n");
strcpy(word,"point");
strcpy(figure[i]->figure,word);
}
if(number_of_points==2){
printf("----line----\n");
strcpy(word,"line");
strcpy(figure[i]->figure,word);
}
if(number_of_points==3){
printf("----triangle----\n");
strcpy(word,"triangle");
strcpy(figure[i]->figure,word);
}
if(number_of_points==4){
printf("----square----\n");
strcpy(word,"square");
strcpy(figure[i]->figure,word);
}
if(number_of_points==5){
printf("----pentagon----");
strcpy(word,"pentagon");
strcpy(figure[i]->figure,word);
}
printf("\n");
*quanity=beginning_quanity;
sum_of_points+=number_of_points;
number_of_points=0;
}
printf("Number of figures: %d\n",*quanity);
}
void adding_figure(struct Point ***point,struct figure ***figure,int *quanity,int *sum_of_points){
int number_of_points;
char word[SIZE];
printf("How many points should a new figure have: ");
scanf("%d",&number_of_points);
int new_size=*quanity+1;
struct figure **temp=(struct figure **)malloc((new_size)*sizeof(struct figure*));
for(int i=0;i<*quanity;i++)
temp[i]=(*figure)[i];
temp[*quanity]=(struct figure*)malloc(sizeof(struct figure));
if(number_of_points==1){
strcpy(word,"point");
strcpy(temp[*quanity]->figure,word);
}
if(number_of_points==2){
strcpy(word,"line");
strcpy(temp[*quanity]->figure,word);
}
if(number_of_points==3){
strcpy(word,"triangle");
strcpy(temp[*quanity]->figure,word);
}
if(number_of_points==4){
strcpy(word,"square");
strcpy(temp[*quanity]->figure,word);
}
if(number_of_points==5){
strcpy(word,"pentagon");
strcpy(temp[*quanity]->figure,word);
}
free(*figure);
*figure=temp;
++(*quanity);
printf("\n");
printf("new number of figures: %d\n",*quanity);
number_of_points=0;
}
void showing_figures(struct figure **figure,int quanity){
for(int i=0;i<quanity;i++)
printf("----%s----\n",figure[i]->figure);
}
我被困在删除图形上,我什至不确定我是否正确使用了结构,而且我完全不知道如何向图形添加随机点或删除随机点。
最佳答案
如果您确定 struct Point **p;
不是拼写错误并且应该是 struct Point*
并且这就是整个赋值文本,其意图也许是Point
对象不属于Figura
,并且它只是引用/指向一些单独拥有的点*
。我会向你的老师寻求澄清。
在这种情况下,您只需将 Point*
视为您的“值”,并将 Figura
视为基本动态数组。
#include <stdio.h>
#include <stdlib.h>
struct Point
{
int x, y;
};
struct Figura
{
unsigned short size;
struct Point **p;
};
// Note, you should also write a free function so that any Figura you create don't end up leaking memory!
void figura_init(struct Figura *f)
{
f->size = 0;
f->p = NULL;
}
// Point *p must be allocated elsewhere (stack, global, malloc, whatever)
// and must not be deleted before being removed from the Figura (or Figura itself deleted)
void figura_add_point(struct Figura *f, struct Point *p)
{
// Note not checking for duplicates
f->p = realloc(f->p, sizeof(struct Point*) * (f->size + 1)); // Expand array
f->p[f->size] = p; // Store p
++f->size;
}
void figura_remove_point(struct Figura *f, struct Point *p)
{
for (unsigned short i = 0; i < f->size; ++i)
{
if (f->p[i] == p)
{
// Not storing any specific order, so can remove an item by overwriting it with the last
f->p[i] = f->p[f->size - 1];
--f->size;
// Note, could free unused memory
return;
}
}
}
int main()
{
struct Point some_points[] = {{0,0}, {10,5}, {15,20}, {1, 4}, {5, 40}};
struct Figura fig;
figura_init(&fig);
figura_add_point(&fig, &some_points[1]);
figura_add_point(&fig, &some_points[3]);
figura_add_point(&fig, &some_points[4]);
for (unsigned short i = 0; i < fig.size; ++i)
{
printf("%d %d\n", fig.p[i]->x, fig.p[i]->y);
}
figura_remove_point(&fig, &some_points[3]);
printf("After remove.\n");
for (unsigned short i = 0; i < fig.size; ++i)
{
printf("%d %d\n", fig.p[i]->x, fig.p[i]->y);
}
}
关于c - 指向另一个结构中的结构的双指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59822383/
我目前正在尝试基于哈希表构建字典。逻辑是:有一个名为 HashTable 的结构,其中包含以下内容: HashFunc HashFunc; PrintFunc PrintEntry; CompareF
如果我有一个指向结构/对象的指针,并且该结构/对象包含另外两个指向其他对象的指针,并且我想删除“包含这两个指针的对象而不破坏它所持有的指针”——我该怎么做这样做吗? 指向对象 A 的指针(包含指向对象
像这样的代码 package main import "fmt" type Hello struct { ID int Raw string } type World []*Hell
我有一个采用以下格式的 CSV: Module, Topic, Sub-topic 它需要能够导入到具有以下格式的 MySQL 数据库中: CREATE TABLE `modules` ( `id
通常我使用类似的东西 copy((uint8_t*)&POD, (uint8_t*)(&POD + 1 ), back_inserter(rawData)); copy((uint8_t*)&PODV
错误 : 联合只能在具有兼容列类型的表上执行。 结构(层:字符串,skyward_number:字符串,skyward_points:字符串)<> 结构(skyward_number:字符串,层:字符
我有一个指向结构的指针数组,我正在尝试使用它们进行 while 循环。我对如何准确初始化它并不完全有信心,但我一直这样做: Entry *newEntry = malloc(sizeof(Entry)
我正在学习 C,我的问题可能很愚蠢,但我很困惑。在这样的函数中: int afunction(somevariables) { if (someconditions)
我现在正在做一项编程作业,我并没有真正完全掌握链接,因为我们还没有涉及它。但是我觉得我需要它来做我想做的事情,因为数组还不够 我创建了一个结构,如下 struct node { float coef;
给定以下代码片段: #include #include #define MAX_SIZE 15 typedef struct{ int touchdowns; int intercepti
struct contact list[3]; int checknullarray() { for(int x=0;x<10;x++) { if(strlen(con
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Empty “for” loop in Facebook ajax what does AJAX call
我刚刚在反射器中浏览了一个文件,并在结构构造函数中看到了这个: this = new Binder.SyntaxNodeOrToken(); 我以前从未见过该术语。有人能解释一下这个赋值在 C# 中的
我经常使用字符串常量,例如: DICT_KEY1 = 'DICT_KEY1' DICT_KEY2 = 'DICT_KEY2' ... 很多时候我不介意实际的文字是什么,只要它们是独一无二的并且对人类读
我是 C 的新手,我不明白为什么下面的代码不起作用: typedef struct{ uint8_t a; uint8_t* b; } test_struct; test_struct
您能否制作一个行为类似于内置类之一的结构,您可以在其中直接分配值而无需调用属性? 前任: RoundedDouble count; count = 5; 而不是使用 RoundedDouble cou
这是我的代码: #include typedef struct { const char *description; float value; int age; } swag
在创建嵌套列表时,我认为 R 具有对列表元素有用的命名结构。我有一个列表列表,并希望应用包含在任何列表中的每个向量的函数。 lapply这样做但随后剥离了列表的命名结构。我该怎么办 lapply嵌套列
我正在做一个用于学习目的的个人组织者,我从来没有使用过 XML,所以我不确定我的解决方案是否是最好的。这是我附带的 XML 文件的基本结构:
我是新来的 nosql概念,所以当我开始学习时 PouchDB ,我找到了这个转换表。我的困惑是,如何PouchDB如果可以说我有多个表,是否意味着我需要创建多个数据库?因为根据我在 pouchdb
我是一名优秀的程序员,十分优秀!