小编idi*_*ast的帖子

C中的指针和循环

请知道我对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)

c pointers loops

9
推荐指数
2
解决办法
1513
查看次数

最大子阵列:分而治之

免责声明:这是一项任务.我不是要求显式代码,只是有足够的帮助来理解所涉及的算法,以便我可以修复代码中的错误.

好的,所以你可能熟悉最大的子阵列问题:计算并返回数组中最大的连续整数块.很简单,但这个任务需要我以三种不同的复杂性来做: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)

c algorithm recursion divide-and-conquer

8
推荐指数
1
解决办法
9790
查看次数

文件IO似乎没有正确读取

免责声明:这是一项任务.我不是要求明确的代码.相反,我只是要求足够的帮助,我可以理解我的问题,并自己纠正.

我正在尝试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)

c io unix-ar

5
推荐指数
1
解决办法
130
查看次数

为什么我从这个unsigned int获得segfault?

我正在尝试初始化整数数组并将所有元素设置为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)

c c++ segmentation-fault sieve-of-eratosthenes

4
推荐指数
2
解决办法
1897
查看次数

循环输入流截断数据

所以这是一个非常简单的问题,有一个我没有看到的简单解决方案:

我试图通过 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循环中的调用正在获取每一行的第一个字符,因此当该行进入循环时,该字符丢失了。问题是,我不知道如何设置一个循环来防止这种情况发生。

我想我只是需要一个新的眼光来看待这个问题。

java io loops input

4
推荐指数
1
解决办法
1万
查看次数

如何在 MATLAB 中绘制 ax+by-c 的线?

标题基本上说明了一切。我正在做一项作业,需要包括我的散点图和 生成的线linprog()

我运行linprog()并得到了值:

1.0000
1.0000
16.5000
12.5000
Run Code Online (Sandbox Code Playgroud)

分别为abcf。我的线的方程式是:

ax + by - c = 0
Run Code Online (Sandbox Code Playgroud)

我知道这是一个简单的问题,但我整晚都在寻找答案,但什么也没有出现。有人可以帮我吗?

matlab plot graph linear-programming

3
推荐指数
1
解决办法
4593
查看次数

将Epoch Time字符串转换为Time

我一直在寻找一种方法将字符串(在大纪元时间)转换为日期.

基本上,我需要采取这个:( 1360440555以字符串形式)并使其成为:Feb 9 12:09 2013.

我一直在看strptime和strftime,但似乎都不适合我.有什么建议?

编辑:谢谢,伙计们.我将它转换为int atoi(),将其转换为time_t,然后继续运行ctime().工作得很完美!

c unix linux time epoch

1
推荐指数
1
解决办法
2万
查看次数

在Java中进行多态,继承和数组排序练习

我正在为一个项目工作,我被要求获取一个.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元素.

java arrays sorting polymorphism

0
推荐指数
1
解决办法
825
查看次数