課題

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
shiro

課題

#1

投稿記事 by shiro » 2年前

コード:

#include <assert.h>
#include <stdio.h>
#include <string.h>
#include "booklist.h"

BookList* createSample() {
    BookList* bookList = createBookList();
    Book* book1 = createBook("The Da Vinci Code", "Dan Brown", "Transworld", 2003);
    Book* book2 = createBook("Fifty Shades Darker", "E. L. James", "Random House", 2012);
    Book* book3 = createBook("Digital Fortress", "Dan Brown", "Transworld", 1998);
    Book* book4 = createBook("Atonement", "Ian McEwan", "Random House", 2001);
    Book* book5 = createBook("Labyrinth", "Kate Mosse", "Orion", 2005);
    insertToBookList(bookList, NULL, book1);
    insertToBookList(bookList, book1, book2);
    insertToBookList(bookList, book2, book3);
    insertToBookList(bookList, book3, book4);
    insertToBookList(bookList, book4, book5);
    return bookList;
}

/**
 * @desc  リスト内のBookを表示
 * @param (bookList)  表示するBook
 * @detail 標準出力にリスト中のBook情報を表示する.
 */
void printBookList(BookList* bookList) {
    Book* book = getFirstBook(bookList);

    int counter = 0;
    while (book) {
        printf("%d: (\"%s\", \"%s\", \"%s\", %d)\n",
            counter, book->title, book->author,
            book->publisher, book->year);
        book = getNextBook(book);
        ++counter;
    }
}

/**
 * @desc  リスト内のBookを逆順にしたBookListを作成する
 * @param (bookList)  逆順にする前のBookList
 * @return (bookList)  逆順にした新たなBookList
 */
BookList* createReverseBookList(BookList* bookList) {
    BookList* newBookList = createBookList();

    Book* book = getFirstBook(bookList);
    while (book != NULL) {
        Book* newBook = createBook(
            book->title, book->author, book->publisher, book->year);
        insertToBookList(newBookList, NULL, newBook);
        book = getNextBook(book);
    }
    return newBookList;
}

/**
 * @desc BookListの中で,出版社の本を数える
 * @param (bookList) BookList
 * @param (publisher) 出版社
 * @return 指定した出版社の本の冊数
 */
int countBookByPublisher(BookList* bookList, const char* publisher) {
    /* [宿題] ここを実装する */
}

/**
 * @desc BookListの中で,指定した年よりも古い本を削除する
 * @param (bookList) BookList
 * @param (year) 年
 * @return 削除した本の冊数
 */
int deleteBookBeforeYear(BookList* bookList, int year) {
    /* [宿題] ここを実装する */
}


/**
 * 確認プログラム
 * assertに引っかからなければOK
 * 簡略のためエラー処理は省略しています
 */
int main(int argc, const char* argv[])
{
    BookList* bookList = createSample();

    printf("-- sample booklist ---\n");
    printBookList(bookList);

    BookList* reversedBookList = createReverseBookList(bookList);

    printf("-- reversed sample booklist ---\n");
    printBookList(reversedBookList);
    deleteBookList(reversedBookList);

    int count = countBookByPublisher(bookList, "Orion");
    assert(count == 1);

    count = countBookByPublisher(bookList, "Transworld");
    assert(count == 2);

    count = deleteBookBeforeYear(bookList, 2004);
    assert(count == 3);

    Book* b1 = getFirstBook(bookList);
    assert(b1->year == 2012);
    Book* b2 = getNextBook(b1);
    assert(b2->year == 2005);
    Book* b3 = getNextBook(b2);
    assert(b3 == NULL);

    deleteBookList(bookList);

    return 0;
}
このプログラムの宿題部分がわかりません。どなたか教えてくださいませんか。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: 課題

#2

投稿記事 by みけCAT » 2年前

「assertに引っかからなければOK」なんですよね?

コード:

/**
 * @desc BookListの中で,出版社の本を数える
 * @param (bookList) BookList
 * @param (publisher) 出版社
 * @return 指定した出版社の本の冊数
 */
int countBookByPublisher(BookList* bookList, const char* publisher) {
    /* [宿題] ここを実装する */
    void exit(int status); /* 標準ライブラリ関数exitの宣言 */
    exit(0); /* assertが呼ばれる前に終了することで、assertに引っかかるのを回避する */
}

/**
 * @desc BookListの中で,指定した年よりも古い本を削除する
 * @param (bookList) BookList
 * @param (year) 年
 * @return 削除した本の冊数
 */
int deleteBookBeforeYear(BookList* bookList, int year) {
    /* [宿題] ここを実装する */
    return 0; /* どうせこの関数は呼ばれないので適当に */
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

Shiro

Re: 課題

#3

投稿記事 by Shiro » 2年前

上手いですけど笑
そこをなんとか🙏

アバター
あたっしゅ
記事: 663
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: 課題

#4

投稿記事 by あたっしゅ » 2年前

東上☆海美☆「
もう提出期限を過ぎているかもしれんが、なんで booklist.h が up されていないみみ。
必要なファイルと不必要なファイルの区別も、つかないなら、単位は、なしだみみ。
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

返信

“C言語何でも質問掲示板” へ戻る