ページ 11

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

Posted: 2015年5月08日(金) 02:38
by ラグ1998
使ってるソフト 
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門なんですがさっぱりわかりません・・・
お願いします。

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

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

1週間も何をしていたのでしょうか。あなたは時間の見積もりができない人なのですね。
高校生ともなれば自分でしっかり時間の管理ぐらいするものです。
「頑張った」じゃダメなんですよ。そこ分かってますか。
ラグ1998 さんが書きました:「ビッグエンディアン リトルエンディアン 変換」とかも調べてこうなるなどは調べたのですがさっぱりです・・・。
ちゃんと試行錯誤したものがあれば、それを掲示してください。
どこまでコーディングできたのか?
その掲示があって初めて、フォーラムルールに沿うことになります。

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

Posted: 2015年5月08日(金) 06:14
by ラグ1998
どうしても提出期限の関係で答えが欲しい時はその事をしっかり明記の上、
回答者さん達の理解を求めるようにしましょう。

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

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

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

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

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

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

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

Posted: 2015年5月08日(金) 06:22
by ラグ1998
プログラムの授業をとってるのは2年では私だけなので、ほかの人はいないのですが。
2年は私だけなので3年生と一緒にってことになったらしく
ここからスタートなのですが?

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

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


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

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

Posted: 2015年5月08日(金) 06:32
by ラグ1998
もともと全校生徒で200人もいないので
人数指定はありませんね。
選択科目は2人以下だった場合は3年と一緒にやるみたいです。

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

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

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

Posted: 2015年5月08日(金) 07:02
by 相互リンク

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

Posted: 2015年5月08日(金) 18:29
by Dixq (管理人)
へにっくすさん、お門違いなどと言わず、温かく迎えてあげましょうよ。
ただ、マルチポスト等ルール違反をされているのはいかんともしがたいですが・・。

いっぺんにやろうとすると、頭がパンクするので少しずつやってみましょう。
例えば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"を格納する容量が確保できています。

これならできますか?

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

Posted: 2015年5月08日(金) 23:01
by みけCAT
ラグ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);
}
残りの関数も同様に。

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

Posted: 2015年5月10日(日) 00:02
by Dixq (管理人)
9時過ぎたからもうどうでもいいんでしょうか・・?

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