C言語今日の9時までに終わらせないといけない課題が終わらない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ラグ1998
記事: 4
登録日時: 4年前

C言語今日の9時までに終わらせないといけない課題が終わらない

#1

投稿記事 by ラグ1998 » 4年前

使ってるソフト 
Visual Studio 2008 or Visual Studio 2010 を使ってます
OS
windowう8.1

学校で関数も習ってないのに関数の問題がでてきて
一週間がんばったのですが、あんまりわかりません・・・
自分なりには関数など調べたのですが、よくわかりません・・・
この4問は手も出せない状態で丸投げ?状態かもしれませんが・・・・

「ビッグエンディアン リトルエンディアン 変換」とかも調べてこうなるなどは調べたのですがさっぱりです・・・。
今回は作成依頼みたいになっていますが、もしよければ説明もしてくれるとありがたいです。
お願いします。

1: 下記関数と同じ動作をする関数を作成しなさい。
void *memset(void *s, int c, size_t n);
char *strcpy(char *s1, const char *s2);
char *strcat(char *s1, const char *s2);
size_t strlen(const *s);

2: 下記と同じ動作をする関数を作成しなさい。
char *strncpy(char *1, const char s2, size_t n);
char *strncat(char *1, const char s2, size_t n);

3:
long型の変数l1がLittle Endianで格納されている。
long型の変数l2にBig Endianで格納する関数を作成しなさい。

4: データ列を格納しなさい。
(1)LIST構造で格納する。
(2)LIST構造で、小さい順に格納する。
データ列:10,200,230、32、64,80,12,99,42,192

4門なんですがさっぱりわかりません・・・
お願いします。

アバター
へにっくす
記事: 628
登録日時: 7年前
住所: 東京都

Re: C言語今日の9時までに終わらせないといけない課題が終わらない

#2

投稿記事 by へにっくす » 4年前

ラグ1998 さんが書きました:この4問は手も出せない状態で丸投げ?状態かもしれませんが・・・・
かもじゃなくて丸投げなんですけど。
フォーラムルールに反しています。
課題の丸投げ(問題文だけ書く事)は禁止です。
ここは宿題をやってもらうところではなく、やりたいことを手助けしてもらうところです。
なんですかね「今回は作成依頼みたいになっていますが」って…
お門違いです。別の掲示板に行ってください。

1週間も何をしていたのでしょうか。あなたは時間の見積もりができない人なのですね。
高校生ともなれば自分でしっかり時間の管理ぐらいするものです。
「頑張った」じゃダメなんですよ。そこ分かってますか。
ラグ1998 さんが書きました:「ビッグエンディアン リトルエンディアン 変換」とかも調べてこうなるなどは調べたのですがさっぱりです・・・。
ちゃんと試行錯誤したものがあれば、それを掲示してください。
どこまでコーディングできたのか?
その掲示があって初めて、フォーラムルールに沿うことになります。
最後に編集したユーザー へにっくす on 2015年5月08日(金) 06:14 [ 編集 1 回目 ]
written by へにっくす

ラグ1998
記事: 4
登録日時: 4年前

Re: C言語今日の9時までに終わらせないといけない課題が終わらない

#3

投稿記事 by ラグ1998 » 4年前

どうしても提出期限の関係で答えが欲しい時はその事をしっかり明記の上、
回答者さん達の理解を求めるようにしましょう。

ともありますし、課題の質問はしてはいけないという意味ではありません、
もし課題、宿題の質問もしてはいけないのでしたらそうルールを変えていただいたほうがいいかもしれません。

今回は回答者の理解を得れてなかったって、ことになるので、違反したのは私ですから
今回の件の責任は私にあります。
申し訳ありませんでした。

時間の見積もりの件ですが授業では1週間程度しか習っていなく
それから自分で勉強して一週間程度で、私はそこまで天才ではないでポインターまで理解はできていないのも自分がバカだったと認めます。

アバター
へにっくす
記事: 628
登録日時: 7年前
住所: 東京都

Re: C言語今日の9時までに終わらせないといけない課題が終わらない

#4

投稿記事 by へにっくす » 4年前

ラグ1998 さんが書きました:時間の見積もりの件ですが授業では1週間程度しか習っていなく
それから自分で勉強して一週間程度で、私はそこまで天才ではないでポインターまで理解はできていないのも自分がバカだったと認めます。
他の生徒のみんなも同じ条件じゃないのでしょうか。
先生がよくやることとして、まずどのぐらいできる人がいるのかを確かめるためにわざとやっていることなのかもしれません。

それなのに完璧な回答を提出したら、以後、あなたはできるだろうとレッテルをはられることになりますよ。
それでもいいのでしたら、これ以上は言いませんが…
written by へにっくす

ラグ1998
記事: 4
登録日時: 4年前

Re: C言語今日の9時までに終わらせないといけない課題が終わらない

#5

投稿記事 by ラグ1998 » 4年前

プログラムの授業をとってるのは2年では私だけなので、ほかの人はいないのですが。
2年は私だけなので3年生と一緒にってことになったらしく
ここからスタートなのですが?

アバター
へにっくす
記事: 628
登録日時: 7年前
住所: 東京都

Re: C言語今日の9時までに終わらせないといけない課題が終わらない

#6

投稿記事 by へにっくす » 4年前

ラグ1998 さんが書きました:プログラムの授業をとってるのは2年では私だけなので、ほかの人はいないのですが。
2年は私だけなので3年生と一緒にってことになったらしく
ここからスタートなのですが?
同じ学年ではいないのですか。失礼しました。
まあそれでも人数関係ないのですがね…
学年も関係ないです。
1週間でどれぐらいできるか、を見る目的ならね。


まあサンプルぐらい検索できないのでしょうかね?
たとえばmemsetなんかは一発でこんなのヒットしたけど。
memset
あとは頑張ってください。
written by へにっくす

ラグ1998
記事: 4
登録日時: 4年前

Re: C言語今日の9時までに終わらせないといけない課題が終わらない

#7

投稿記事 by ラグ1998 » 4年前

もともと全校生徒で200人もいないので
人数指定はありませんね。
選択科目は2人以下だった場合は3年と一緒にやるみたいです。

サンプルはいくつかでて理解しようとは思ったのですが
*(ポインタ)?とかがどう動いているのかがよく分からなく、
あっているのか間違っているのかもわからないので質問したんです。

ヒントありがとうございます


アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 9年前
住所: 北海道札幌市
連絡を取る:

Re: C言語今日の9時までに終わらせないといけない課題が終わらない

#9

投稿記事 by Dixq (管理人) » 4年前

へにっくすさん、お門違いなどと言わず、温かく迎えてあげましょうよ。
ただ、マルチポスト等ルール違反をされているのはいかんともしがたいですが・・。

いっぺんにやろうとすると、頭がパンクするので少しずつやってみましょう。
例えばbohyohさんのサイト等だと標準関数の実装例などが載っているので分かりやすいですよ。
http://www.bohyoh.com/CandCPP/C/Library/strcpy.html
strcpyについてはリンク先がまんま答えになると思いますが、リンク先の書き方は難しいですよね。

では以下のような問題だとどう答えますか?
これが答えられたら自分で実装できると思います。

課題.1
以下のstr1からstr2に文字列をコピーしてください。
char *str1 = "hello";
char *str2 = (char*)malloc(6);

str1は具体的には

str1[0] = 'h';
str1[1] = 'e';
str1[2] = 'l';
str1[3] = 'l';
str1[4] = 'o';
str1[5] = '\0';

のように入っています。
文字列の最後まで探すためには終端記号である\0までを探して文字列とすればOKです。
str2にはメモリを確保するための関数mallocにてメモリを用意してあるので
"hello"を格納する容量が確保できています。

これならできますか?

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

Re: C言語今日の9時までに終わらせないといけない課題が終わらない

#10

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

ラグ1998 さんが書きました:1: 下記関数と同じ動作をする関数を作成しなさい。
void *memset(void *s, int c, size_t n);
char *strcpy(char *s1, const char *s2);
char *strcat(char *s1, const char *s2);
size_t strlen(const *s);

2: 下記と同じ動作をする関数を作成しなさい。
char *strncpy(char *1, const char s2, size_t n);
char *strncat(char *1, const char s2, size_t n);
これは「委譲」に近い手法を使うと簡単です。

コード:

#include <string.h>

void *a_function_the_behavior_of_which_is_the_same_as_memset(void *s, int c, size_t n) {
    return memset(s, c, n);
}
残りの関数も同様に。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 9年前
住所: 北海道札幌市
連絡を取る:

Re: C言語今日の9時までに終わらせないといけない課題が終わらない

#11

投稿記事 by Dixq (管理人) » 4年前

9時過ぎたからもうどうでもいいんでしょうか・・?

一つ一つ手助けしますので一問ずつ自力で解いてみませんか?

閉鎖

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