help me
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 14年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: help me
まずはフォーラムルール
http://dixq.net/board/board.html
をご覧ください。
・現時点で分かっていること
・分からないこと
を明確にして下さい。
なお、aicezukiというお名前は以前問題になったハンドルネームとお見受けします。
今後のトラブル防止のためにも他の名前に改名してはいかがでしょうか。
http://dixq.net/board/board.html
をご覧ください。
・現時点で分かっていること
・分からないこと
を明確にして下さい。
なお、aicezukiというお名前は以前問題になったハンドルネームとお見受けします。
今後のトラブル防止のためにも他の名前に改名してはいかがでしょうか。
Re: help me
言語指定が無かったのでC++でやってみました。
長いので畳んでおきます。
長いので畳んでおきます。
► スポイラーを表示
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: help me
Dixq (管理人) さんの言われる通り、まずフォーラルルールを御覧ください。
それと故意でないにしても、問題のある名前はトラブルの原因となりますので避けて頂くとありがたいです。
引用:宿題の質問はOK!でも丸投げはX 宿題の文章だけ書いて「誰か答えて下さい」はX
それと故意でないにしても、問題のある名前はトラブルの原因となりますので避けて頂くとありがたいです。
引用:宿題の質問はOK!でも丸投げはX 宿題の文章だけ書いて「誰か答えて下さい」はX
質問テンプレートをお使い下さい。課題の丸投げ(問題文だけ書く事)は禁止です。
ただし上のように記載してもらえればこれは当てはまりません。
自分でどこまでやったのか、今どこが解らないのかを明確にして下さい。
さっぱり解らず、手も足も出ない時は、その事を明記の上、
勉強方法からアドバイスを受けましょう。
どうしても提出期限の関係で答えが欲しい時はその事をしっかり明記の上、
回答者さん達の理解を求めるようにしましょう。
また、解決した時は、「解決しました」とだけ言って去らず、ソースコードや解決した方法を明記して下さい。
同じ事で困っている人の為に過去ログに有用な情報を残すようお願いします。
[1] 質問文
[1.1] 自分が今行いたい事は何か
[1.2] どのように取り組んだか(プログラムコードがある場合記載)
[1.3] どのようなエラーやトラブルで困っているか(エラーメッセージが解る場合は記載)
[1.4] 今何がわからないのか、知りたいのか
[2] 環境
[2.1] OS : Windows, Linux等々
[2.2] コンパイラ名 : VC++ 2008EE, Borand C++, gcc等々
[3] その他
・どの程度C言語を理解しているか
・ライブラリを使っている場合は何を使っているか
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: help me
忠告ありがとうございます。
C言語はさっぱりわからないんですが授業の課題なのでやらなければならなくて丸投げしてしまいました。
コンパイラはBorlandでOSはWindowsです。
C言語でお願いいたします。
C言語はさっぱりわからないんですが授業の課題なのでやらなければならなくて丸投げしてしまいました。
コンパイラはBorlandでOSはWindowsです。
C言語でお願いいたします。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: help me
こちらのスタンスは宿題のお手伝いをすると言う所にありますので、今の宿題で何処が分からないか教えていただけますか。
あと幾つか質問があります。
・mainプログラムは少しでも書かれていないのでしょうか?
・この課題だとC言語の授業でだいぶ進んだ状態だと思いますが、どのあたりからC言語の理解に不安がありますか?
ポインタ、リスト構造、mallocは難易度が高いにしても、それ以前の部分でどうでしょうか?
とりあえず、コードタグで見やすくしたものを貼っておきます。
あと幾つか質問があります。
・mainプログラムは少しでも書かれていないのでしょうか?
・この課題だとC言語の授業でだいぶ進んだ状態だと思いますが、どのあたりからC言語の理解に不安がありますか?
ポインタ、リスト構造、mallocは難易度が高いにしても、それ以前の部分でどうでしょうか?
とりあえず、コードタグで見やすくしたものを貼っておきます。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: help me
横から失礼します。
例えばこのように。
ということは、下線のあとが小文字ならいいのですか?naohiro19 さんが書きました:下線または大文字が続く識別子
例えばこのように。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: help me
http://www.wdic.org/w/TECH/%E4%BA%88%E7 ... 5%E5%AD%90
とか
http://portable-c.jugem.jp/?eid=10
によれば、グローバルな名前の場合は下線で始まる名前は全滅みたいですね。
ちなみに、構造体タグ名とtypedef名は名前空間が違うため重複してもいいですから と書きましょう。
この話はnaohiro19さんが提示されたURLに載っている話です。
とか
http://portable-c.jugem.jp/?eid=10
によれば、グローバルな名前の場合は下線で始まる名前は全滅みたいですね。
ちなみに、構造体タグ名とtypedef名は名前空間が違うため重複してもいいですから と書きましょう。
この話はnaohiro19さんが提示されたURLに載っている話です。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: help me
そもそも課題ですので__nodeの名前を変更できない可能性も大きいんじゃないかと思ったりしますが、どうなのでしょう?unknownさん。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: help me
勝手な意見ですが、
「__nodeという名前はこれこれこういう理由により使用してはいけない。よって、このように修正した。」
とか書いて提出すれば、素晴らしい回答になると思います。
「__nodeという名前はこれこれこういう理由により使用してはいけない。よって、このように修正した。」
とか書いて提出すれば、素晴らしい回答になると思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: help me
それは先生によっては喧嘩を売っているようなものかと。beatle さんが書きました:勝手な意見ですが、
「__nodeという名前はこれこれこういう理由により使用してはいけない。よって、このように修正した。」
とか書いて提出すれば、素晴らしい回答になると思います。
勝手に変えたということで課題が不可となる可能性も・・・。
配列なら理解できますか?unknown さんが書きました:C言語はまずポインタと構造体がさっぱり理解できず、最近は授業についていくことができません。
まず、固定数の配列だけでスタックのプログラムを書いてみてください。
それをベースに構造化→ポインタ化してみましょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: help me
同じ喧嘩を売るのなら、Borland特有の拡張仕様やバグをついた実装をして提出した方がずっとおもしろいですね。softya(ソフト屋) さんが書きました:それは先生によっては喧嘩を売っているようなものかと。beatle さんが書きました:勝手な意見ですが、
「__nodeという名前はこれこれこういう理由により使用してはいけない。よって、このように修正した。」
とか書いて提出すれば、素晴らしい回答になると思います。
勝手に変えたということで課題が不可となる可能性も・・・。
それを指摘されたときに初めて、「どうせ未定義の動作に依存したプログラムしか書けないので、五十歩百歩である」ことを伝えると完璧です。
Re: help me
一応、Cで作ってみました。
ただし、情報が少ないので期待している仕様になっているかどうかは知りません。
また、おそらく手元の処理系では、そのままではコンパイルできないでしょうから、どうすべきかは自分で考えてください。
ただし、情報が少ないので期待している仕様になっているかどうかは知りません。
また、おそらく手元の処理系では、そのままではコンパイルできないでしょうから、どうすべきかは自分で考えてください。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
typedef struct __node {
char data;
struct __node *next;
} Node;
typedef struct {
Node *head;
Node *crnt;
} List;
typedef struct {
int max;
int num;
List stk;
} Stack;
bool stack_init(Stack *stack)
{
if (stack == NULL)
return false;
*stack = (Stack){ 0 };
return true;
}
bool stack_term(Stack *stack)
{
if (stack == NULL)
return false;
Node *node = stack->stk.head;
while (node != NULL)
{
Node *p = node;
node = node->next;
free(p);
}
return true;
}
bool stack_push(Stack *stack, char data)
{
if (stack == NULL)
return false;
Node *node = malloc(sizeof(Node));
if (node == NULL)
return false;
*node = (Node){ .data = data, .next = stack->stk.head };
stack->stk.head = node;
return true;
}
bool stack_pop(Stack* stack, char* data)
{
if (stack == NULL || data == NULL)
return false;
if (stack->stk.head == NULL)
return false;
Node *node = stack->stk.head;
*data = node->data;
stack->stk.head = node->next;
free(node);
return true;
}
int main(void)
{
Stack stack[1];
stack_init(stack);
for (;;)
{
int data;
scanf("%d", &data);
if (data < 0 || 127 < data)
break;
stack_push(stack, data);
}
for (;;)
{
char data;
if (!stack_pop(stack, &data))
break;
printf("%d\n", data);
}
stack_term(stack);
}