请知道我对C和指针一般都很新... 这是一个类,所以我不是要求显式代码,只是帮助理解这些概念.
我正在尝试创建一个循环来将随机值分配给结构中的int.当我将值分配给指针或数组的当前迭代时,会出现问题.
struct student{
int id;
int score;
};
struct student* allocate(){
/*Allocate memory for ten students*/
int ROSTER_SIZE = 10;
struct student *roster = malloc(ROSTER_SIZE * sizeof(struct student));
/*return the pointer*/
return roster;
}
void generate(struct student* students){
/*Generate random ID and scores for ten students, ID being between 1 and 10, scores between 0 and 100*/
int i = 0;
for (i = 0; i < 10; ++i) {
students[i]->id = i + 1; …Run Code Online (Sandbox Code Playgroud) 好的,所以你可能熟悉最大的子阵列问题:计算并返回数组中最大的连续整数块.很简单,但这个任务需要我以三种不同的复杂性来做:O(n ^ 3),O(n ^ 2)和O(n log n).我已经得到了前两个没有太多麻烦(蛮力),但第三个让我头疼......字面意思.
我理解该算法应该如何工作:一个数组被传递给一个函数,该函数递归地将它分成两半,然后比较各个组件以找到每一半中的最大子数组.然后,因为最大子阵列必须完全位于左半部分或右半部分,或者在与两者重叠的部分中,所以必须找到与左右重叠的最大子阵列.比较每种情况的最大子阵列,最大值将是您的返回值.
我相信我已经编写了充分执行该任务的代码,但在评估中我似乎错了.我一直在努力联系教练和助教,但是我觉得我不能随便找到他们中的任何一个.下面是我到目前为止编写的代码.如果你发现任何明显错误,请告诉我.同样,我不是在寻找明确的代码或答案,而是帮助理解我做错了什么.我已经查看了这里提供的所有类似案例,但没有找到任何可以帮助我的东西.我也做了大量的谷歌搜索指导,但这也没有多大帮助.无论如何,这是有问题的代码:
int conquer(int arr[], int first, int mid, int last) {
int i = 0;
int maxLeft = 0;
int maxRight = 0;
int temp = 0;
for (i = mid; i >= first; i--) {
temp = temp + arr[i];
if (maxLeft < temp) {
maxLeft = temp;
}
}
temp = 0;
for (i = (mid + 1); i <= last; i++) {
temp = temp + arr[i];
if …Run Code Online (Sandbox Code Playgroud) 免责声明:这是一项任务.我不是要求明确的代码.相反,我只是要求足够的帮助,我可以理解我的问题,并自己纠正.
我正在尝试ar根据家庭作业重新创建Unix 实用程序.这个任务的大部分处理C中的文件IO,其他部分处理系统调用等.
在这种情况下,我打算创建存档中所有文件的简单列表.你可能没注意到,我还没有走得太远.该计划相对简单:从存档文件中读取每个文件头,并仅打印保存的值ar_hdr.ar_name.其余字段将被跳过fseek(),包括文件数据,直到到达另一个文件,此时该过程再次开始.如果达到EOF,则该功能简单地终止.
我对文件IO没什么经验,所以我已经处于这个任务的劣势.我已尽最大努力研究实现目标的正确方法,我相信我已尽最大努力实施这些目标.也就是说,我的实施似乎有问题.来自存档文件的数据似乎没有被读取,或者至少存储为变量.这是我的代码:
struct ar_hdr
{
char ar_name[16]; /* name */
char ar_date[12]; /* modification time */
char ar_uid[6]; /* user id */
char ar_gid[6]; /* group id */
char ar_mode[8]; /* octal file permissions */
char ar_size[10]; /* size in bytes */
};
void table()
{
FILE *stream;
char str[sizeof(struct ar_hdr)];
struct ar_hdr temp;
stream = fopen("archive.txt", "r");
if (stream == 0)
{
perror("error");
exit(0);
}
while (fgets(str, sizeof(str), stream) != …Run Code Online (Sandbox Code Playgroud) 我正在尝试初始化整数数组并将所有元素设置为1.我需要数组的上限为4294967295,或者是32位的最大数unsigned int.
这对我来说似乎是一项微不足道的任务,应该是,但我遇到了segfault.我可以运行for循环空,它似乎工作正常(尽管很慢,但它处理了近43亿个数字,所以我不会抱怨).当我尝试在循环中执行任何类型的操作时,问题似乎出现了.我在下面的指令 - primeArray[i] = 1;- 导致segfault错误.尽我所知,这不应该让我超越阵列.如果我注释掉那条线,没有segfault.
已经晚了,我疲惫的眼睛可能只是缺少一些简单的东西,但我可以使用另一双.
这是我得到的:
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <stdint.h>
#define LIMIT 0xFFFFFFFF;
int main(int argc, char const *argv[])
{
uint32_t i;
uint32_t numberOfPrimes = LIMIT; // hardcoded for debugging
int *primeArray = (int*) malloc(numberOfPrimes * sizeof(int));
for (i = 0; i < numberOfPrimes; ++i) {
primeArray[i] = 1;
}
}
Run Code Online (Sandbox Code Playgroud) 所以这是一个非常简单的问题,有一个我没有看到的简单解决方案:
我试图通过 InputStream 获取数据列表,循环直到到达流的末尾。在每次迭代中,我都会打印通过 InputStream 传递的下一行文本。我有它的工作,但有一个小问题:我正在截断每一行的第一个字符。
这是代码:
while (dataInputStream.read() >= 0) {
System.out.printf("%s\n", dataInputReader.readLine());
}
Run Code Online (Sandbox Code Playgroud)
和输出:
classpath
project
est.txt
Run Code Online (Sandbox Code Playgroud)
现在,我知道这里发生了什么:read()我的while循环中的调用正在获取每一行的第一个字符,因此当该行进入循环时,该字符丢失了。问题是,我不知道如何设置一个循环来防止这种情况发生。
我想我只是需要一个新的眼光来看待这个问题。
标题基本上说明了一切。我正在做一项作业,需要包括我的散点图和 生成的线linprog()。
我运行linprog()并得到了值:
1.0000
1.0000
16.5000
12.5000
Run Code Online (Sandbox Code Playgroud)
分别为a、b、c和f。我的线的方程式是:
ax + by - c = 0
Run Code Online (Sandbox Code Playgroud)
我知道这是一个简单的问题,但我整晚都在寻找答案,但什么也没有出现。有人可以帮我吗?
我一直在寻找一种方法将字符串(在大纪元时间)转换为日期.
基本上,我需要采取这个:( 1360440555以字符串形式)并使其成为:Feb 9 12:09 2013.
我一直在看strptime和strftime,但似乎都不适合我.有什么建议?
编辑:谢谢,伙计们.我将它转换为int atoi(),将其转换为time_t,然后继续运行ctime().工作得很完美!
我正在为一个项目工作,我被要求获取一个.txt文件,将数据聚合到不同的对象中,然后根据共享特征对该列表进行排序.我的指示是使程序能够导入多达200行文本.
我已经成功实现了导入.txt文件的程序,给定了一个已定义的数组大小(如果.txt文件有6行,一个包含6个元素的数组),但我需要能够定义最多200个元素.当超出实际元素的数量时,例如6,它会抛出NullPointerException.我似乎无法找到这可能发生的地方,因为我的代码至少在视觉上出现,以处理可能发生的任何实例.这是问题发生的地方:
public Solid[] solids;
public int length;
public Measurer m;
public int h;
public SolidList(int size) {
length = 0;
solids = new Solid[size];
}
public void addSorted(Solid foo, Measurer m) {
int k = 0;
if (length != 0) {
while ((k < length) && foo.greaterThan(solids[k], m))
++k;
for (int j = length; j > k; --j)
solids[j] = solids[j - 1];
}
solids[k] = foo;
++length;
}
Run Code Online (Sandbox Code Playgroud)
具体来说,Eclipse在while循环中遇到NullPointerException addSorted(...).只有当数组确实具有null元素时才会发生这种情况,但我想我无法弄清楚如何阻止该方法尝试访问null元素.