トップページ⇒tech
1001コメント387KB

C/C++の宿題を片付けます 58代目

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/01/18(水) 03:35:45
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
 投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
【C 関数検索 man on WWW】
http://www.linux.or.jp/JM/index.html

【前スレ】
C/C++の宿題を片付けます 57代目
http://pc8.2ch.net/test/read.cgi/tech/1136768567/l50#tag993
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0412デフォルトの名無しさん2006/01/22(日) 01:09:26
説明のどこが説明になっているのかがわからん
0413デフォルトの名無しさん2006/01/22(日) 01:40:29
こんばんわ
ポインタについて質問させてください

int i;
void*p;
uint32*ui32p;
p = malloc(1024);
ui32p = (uint32* )p;
for (i=0;i<5;i++)
      ui32p[i] = i*i;

↑のソースで一番下の行がどういった動作をしているのかがわかりません
uint32型のポインタに[ ]をつけるというのはどういうことなのでしょうか?
文字列のポインタに[ ]をつけるのはよく見かけるのですが・・・
0414デフォルトの名無しさん2006/01/22(日) 01:41:11
>>411
こんなのでいかがか
int find_max(int *a, int m, int n) {
    int b, c;
    switch (n - m) {
        case 1:
            return a[m] < a[n] ? a[n] : a[m];
        case 0:
            return a[m];
        default:
            return (b = find_max(a, m, (m + n) / 2)) < (c = find_max(a, (m + n) / 2 + 1, n)) ? c : b;
    }
}
int find_min(int *a, int m, int n) {
    int b, c;
    switch (n - m) {
        case 1:
            return a[m] < a[n] ? a[m] : a[n];
        case 0:
            return a[m];
        default:
            return (b = find_min(a, m, (m + n) / 2)) < (c = find_min(a, (m + n) / 2 + 1, n)) ? b : c;
    }
}
#include <stdio.h>
int main(void) {
    int i, a[32];
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) scanf("%d", a + i);
    for (i = 0; i < sizeof(a) / sizeof(a[0]); i++) printf("%d\n", a[i]);
    printf("\nMax:%d\nMin:%d\n", find_max(a, 0, sizeof(a) / sizeof(a[0]) - 1), find_min(a, 0, sizeof(a) / sizeof(a[0]) - 1));
    return 0;
}
0415デフォルトの名無しさん2006/01/22(日) 01:42:14
>>413
何のポインタだろうが、a[i]は*(a + i)と同じ。
0416デフォルトの名無しさん2006/01/22(日) 01:46:49
>>413
ポインタに[]をつけるのは配列と同じとでも考えてればよか
char *p="ABCDEF";
*pはAだしp[0]もAだ
04174132006/01/22(日) 01:52:11
>>415-416
数値型に対して*(a + i)のようにするというのがどういうことなのかわかりません
文字列ならば*(a + i)でi個先の文字を参照したりできますが数値型だと何を参照するのでしょうか?
0418デフォルトの名無しさん2006/01/22(日) 01:53:48
もちろん数値ですが何か?
0419デフォルトの名無しさん2006/01/22(日) 01:56:58
1] 授業単元:情報処理�T
[2] 問題文(含コード&リンク):
以下の関数を完成せよ。
int hoge(x,y)
int x,*y;
{
/*
関数の機能:
 「変数xの値」と「ポインタyが示す変数値」をかけたものを「ポインタyが示す変数値」
 に代入する。戻り値は「変数xの値」と「ポインタyが示す変数値」を足したものとする。
*/
}

3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月23日でお願いします。
[5] その他の制限:特にないです。
0420デフォルトの名無しさん2006/01/22(日) 01:58:54
つまんねぇ
0421デフォルトの名無しさん2006/01/22(日) 02:01:08
この時期にこの程度の問題ができないなら素直に単位落としとけ
0422デフォルトの名無しさん2006/01/22(日) 02:01:40
>>419

*&*y = *&*&*&x*&**y;

return *&*&*&x+&**y;
04234132006/01/22(日) 02:06:16
>>418
ということは413のコードだと1024バイトの領域を確保してるのでuint32型の数値が256格納できる
したがって、ui32p[0]〜ui32p[255]までは値を格納できると考えてよいのでしょうか?
0424デフォルトの名無しさん2006/01/22(日) 02:06:34
>>422
ありがとうございます。
0425デフォルトの名無しさん2006/01/22(日) 02:08:15
>>423
そういうこと

>>419
その引数の宣言方法は古い。その先生に「貴方の頭は化石ですか?」と
言ってやれ。
int hoge(int x, int *y) {
    *y *= x;
    return x + *y;
}
0426デフォルトの名無しさん2006/01/22(日) 02:08:24
>>416
同じと考えるのは微妙にマズイ
0427デフォルトの名無しさん2006/01/22(日) 02:09:23
>>424
工エエェェ(´д`)ェェエエ工工
0428デフォルトの名無しさん2006/01/22(日) 02:10:29
>>426
ま、そのうち分かるんだろうけど、面倒なことにはなるな。
しかし、そこのとこの教育方法については毎回宗教戦争じみたことに
なるから、やめとこ。
0429デフォルトの名無しさん2006/01/22(日) 02:12:37
>>426
マズイがマズはこれでいいと思う
本格的に困ったらまた相談に来るなり
自分で調べるなりするでしょ
大学の授業とかなら同じと考えてもまぁいいと思ってそう書いちゃった
04304132006/01/22(日) 02:13:26
>>425
ありがとうございました
ようやく寝ることができます
0431デフォルトの名無しさん2006/01/22(日) 02:13:26
ゆとり教育だ
0432デフォルトの名無しさん2006/01/22(日) 02:14:40
ゆとり教育は大学関係ねぇw
0433デフォルトの名無しさん2006/01/22(日) 02:24:48
>>431-432
今日試験を受けた人間からがゆとり世代でしょ?
0434デフォルトの名無しさん2006/01/22(日) 03:22:50
>>425
こうじゃないのか?

int hoge(int x, int *y) {
int tmp = *y;
*y = x * tmp;
return x + tmp;
}
0435デフォルトの名無しさん2006/01/22(日) 03:54:24
>>434
それと>425のどこが違うのかね。
0436デフォルトの名無しさん2006/01/22(日) 04:14:46
>>435
見た目と手間と使用メモリ
0437デフォルトの名無しさん2006/01/22(日) 04:28:18
int ret, x=2, y=3; ret = hoge(x,&y); とかやると
>>425の場合はy = 6, ret = 8
>>434の場合はy = 6, ret = 5

てことじゃねーの?
0438デフォルトの名無しさん2006/01/22(日) 09:41:00
[1] プログラミング
[2] テキストファイルを読み込み、単語検索のアルゴリズムを作成する。
テキストファイルの中には数字や記号はなく、単語と単語の間はスペースが存在します。
[3]
[3.1] OS:Linux
[3.2]コンパイラ名:gcc
[3.3]言語:C
[4]2006/1/30まで

手こずってます。よろしくお願いします。


0439デフォルトの名無しさん2006/01/22(日) 10:04:26
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
キーボードからEnqueue,Dequeue,Endの指示を読み込み、Enqueueであればscanfで整数データを読み込み、
データをキューへ追加、Dequeueであればキューからデータを削除するプログラムを作ること。
キューの処理はEndの指示を読み込まれた時点で終了する。各指示の実行後のキューを画面表示するようにすること。
[実行例]
1-20>a
Enqueue[1],Dequeue[2]End[0]:1
Data>4
List:[ 4]
Enqueue[1],Dequeue[2]End[0]:1
Data>3
List:[ 4, 3]
Enqueue[1],Dequeue[2]End[0]:2
List:[ 3]
Enqueue[1],Dequeue[2]End[0]:1
Data>5
List:[ 3, 5]
Enqueue[1],Dequeue[2]End[0]:2
List:[ 5]
Enqueue[1],Dequeue[2]End[0]:2
List:[]
Enqueue[1],Dequeue[2]End[0]:0
List:[]
1-20>
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 1月23日まで
[5] その他の制限: 学び始めて間もなく理解していきたいので、多少コメントを含めて頂けると助かります。
宜しくお願いしますm(_ _)m
0440デフォルトの名無しさん2006/01/22(日) 11:10:26
>>439
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1520.txt
このプログラムはキューに入ってるデータは表示されてないから、あとは自分で考えてくれ。
0441デフォルトの名無しさん2006/01/22(日) 11:31:46
>>438
int SWProc(void){ printf("発見\n"); return 0; }
int SerchWord(char *filename,char *key,int(*lpSWProc)(void) = SWProc)
{
FILE *in = fopen(filename,"r");
if(!in) return 0;
char *lpBuf = (char*)calloc(1024,sizeof(char));
if(!lpBuf){ fclose(in); return 9; }
while(fscanf(in,"%s",lpBuf)!=EOF)
if(!strcmp(lpBuf,key)) lpSWProc();
free(lpBuf); fclose(in); return 1;
}
SerchWord関数
char *filename 対象ファイルの名称
char *key 検索文字
int(*lpSWProc)(void) = SWProc コールバック関数もどき(判らなければ指定しなくてOK)

filenameを"r"モードでオープンして全単語(EOFまで)をkeyと照会
もしkeyとその単語が一致した場合SWProc関数もしくは第3引数で指定された関数が処理される。

使い方 SerchWord("nurupo.txt","こんにちは");
戻り値 0ならば関数失敗、0以外なら成功
#include <stdio.h> #include <stdlib.h> #include <string.h>
追伸:C++の機能つかっちまいました
0442デフォルトの名無しさん2006/01/22(日) 12:22:25
1] 授業単元:プログラム演習2
[2] 問題文(含コード&リンク): http://making-gold-princessmaki.hp.infoseek.co.jp/last.htm
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン: V.C6.0
 [3.3] 言語: C++
[4] 期限: 今日中

57代目の852さん再アップお願いします。助けてください。
0443デフォルトの名無しさん2006/01/22(日) 14:09:37
【質問テンプレ】
[1] 情報処理
[2] ニュートン法orロンバーグ積分を用いて数値計算を行う(無理数など、出来れば自然対数の底)
[3] ビジュアルc
 [3.1] OS: Windows
 [3.2] ビジュアルc
 [3.3] c++
[4] 今日中
[5] その他の制限:for文if文中心でお願いします。
0444デフォルトの名無しさん2006/01/22(日) 15:00:07
[1] 授業単元: 演算と型
[2] 問題文
整数(AとB)をスキャンして
Aの値はBの〜%か求める。
[3] C Pad for Borland C++Compiler
 [3.1] OS: Windows XP Pro
 [3.2] BCC55
 [3.3] C
[4] 今日中
[5] まだまだ始めの方なんですけど
0445デフォルトの名無しさん2006/01/22(日) 15:16:15
>>441
どうでもいいけどSearchな。
0446デフォルトの名無しさん2006/01/22(日) 15:17:48
>>444
#include<stdio.h>

int main()
{
  int a,b;
  scanf("%d,%d",&a,&b);
  printf("%dは%dの%d%です\n",a,b,a*100/b);
  return 0;
}
0447デフォルトの名無しさん2006/01/22(日) 15:17:48
>>444
#include<stdio.h>
int main(void){
long a,b;
double par;
printf("Aを入力:");scanf("%ld",&a);
printf("Bを入力:");scanf("%ld",&b);
par = (double)a*100/b;
printf("AはBの%f%\n",par);
return 0;
}
0448デフォルトの名無しさん2006/01/22(日) 15:19:45
結婚式はいつですか?
0449デフォルトの名無しさん2006/01/22(日) 15:27:47
>>446、>>447
ダメ。
printf()の書式中では'%'は"%%"としないといけない。ついでに言えば、percentなんだからparはないだろ。
0450デフォルトの名無しさん2006/01/22(日) 15:28:46
>>446
>>447
有り難うございます〜。

447の中には習ってないのがあったので
446を使わせてもらいます。
二人とも有り難うございました〜^^
0451デフォルトの名無しさん2006/01/22(日) 15:30:55
>>449
あ・・\\だけじゃなかったか
スペルは英語できないから勘弁
0452デフォルトの名無しさん2006/01/22(日) 15:37:06
>>445
ハズカシス
0453デフォルトの名無しさん2006/01/22(日) 15:39:05
>>451
'\\'はいつでもそう書かなければならないけど、
'%'はprintf()系scanf()系の書式文字列内のみだから念のため。
04544442006/01/22(日) 15:44:06
望洋さんのC入門編って演習の解答が付いてないから困るね
0455デフォルトの名無しさん2006/01/22(日) 15:48:01
>>453
お、本当だputsだと%2個出る
0456デフォルトの名無しさん2006/01/22(日) 15:55:58
>>399
俺通ってるガッコの先生の課題だな俺は
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1522.txt
で出したんだが俺バカチンなのでこのスレの諸兄の方々の熱い煽りとツッコミをお待ちしています
0457デフォルトの名無しさん2006/01/22(日) 15:59:57
完璧(*^ー゚)b
0458デフォルトの名無しさん2006/01/22(日) 16:02:02
>>456
それを直すんなら
訂正前>while(s1[i]==s2[i]){
訂正後>while(s1[i] != '\0' && s1[i]==s2[i]){
だな。
0459デフォルトの名無しさん2006/01/22(日) 16:05:42
>>458
s2 もチェックな

あと関数名がキモい
0460デフォルトの名無しさん2006/01/22(日) 16:10:05
>>459
不要。

あと関数名がキモいのは同意。
0461デフォルトの名無しさん2006/01/22(日) 16:14:58
そお?関数名キモイ?
0462デフォルトの名無しさん2006/01/22(日) 16:19:02
ああ、関数名がパーフェクトにキモイな
0463デフォルトの名無しさん2006/01/22(日) 16:28:02
>>460 s2 いらんなスマソ
0464デフォルトの名無しさん2006/01/22(日) 16:28:02
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
球の半径r(倍精度浮動小数点型の変数)の値を関数scanfで入力して、
その面積S1と表面積S2(S1,S2は倍精度浮動小数点型変数)を計算し、
表示(出力)するという作業を繰り返すプログラムを作成せよ。
ただし、半径rとして数値0が入力されたときには、その処理を終了することとする。
また、面積はS1=π(r*r)、表面積はS2=4π(r*r)で計算されるものとする。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:StudyC
 [3.3] 言語:C
[4] できれば火曜までに
[5] 宿題とかじゃなく、テスト勉強のですがお願いします。
0465デフォルトの名無しさん2006/01/22(日) 16:37:58
面積S1じゃなくて体積V1じゃね?
0466デフォルトの名無しさん2006/01/22(日) 16:38:33
ああごめんS1は円ね
0467デフォルトの名無しさん2006/01/22(日) 16:42:00
>>464
#include<stdio.h>
#define pi 3.14159
void kyu(double r){
printf("S1 = %f\n",pi*r*r);
printf("S2 = %f\n",4*pi*r*r);
}
int main(void){
double r;
while(1){
scanf("%lf",&r);
if(r==0.0)break;
kyu(r);
}
return 0;
}
04684642006/01/22(日) 16:46:53
>>467
速攻の返答、多謝多謝。
有難うございました。
0469デフォルトの名無しさん2006/01/22(日) 16:49:34
>>464
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1524.txt
04704642006/01/22(日) 16:59:26
>>469
こちらも丁寧に有難うございます。

0471デフォルトの名無しさん2006/01/22(日) 17:19:49
[1] 授業単元:C言語プログラミング演習1
[2] 問題文:
要素数20、char型の配列mojiを用意し、入力する。ポインタ変数を用いて
文字数を求めるプログラムを作成しなさい。
char moji[20];
char *mp = moji; //ポインタ変数
int cnt; //文字数

実行結果
文字列入力==>ABCD
文字数:4

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 明日の午前まで。
[5]標準関数strlenは使わないこと。
0472デフォルトの名無しさん2006/01/22(日) 17:20:57
[1] 授業単元:C言語プログラミング演習2
[2] 問題文:
char型の配列mojiを用意し、初期化する。ポインタ変数を用いて大文字、
小文字、数字の文字数を求めるプログラムを作成しなさい。
char moji[]="AB12aDy3";
char *mp = moji; //ポインタ変数
int alphl; //大文字の数
int alphs; //小文字の数
int num; //数字の数

実行結果
英大文字:3
英小文字:2
数字:3

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: bcc
 [3.3] 言語: C
[4] 期限: 明日の午前まで。

この2つです。お願いします。
0473デフォルトの名無しさん2006/01/22(日) 17:30:43
>>471
int strlen(char *lpStr)
{
int count=0;

while(lpStr[count]) ++count;
return count;
}
こんなんでいいんじゃない?

>>472
2バイト文字は含むの?
0474デフォルトの名無しさん2006/01/22(日) 17:31:16
>>471
#include<stdio.h>

int main(void)
{
char moji[20];
char *mp = moji; //ポインタ変数
int cnt; //文字数

printf("Input string\n");
gets(moji);
for(cnt=0;*(mp+cnt)!='\0';cnt++)
{}

printf("count:%d\n",cnt);

return 0;
}
0475デフォルトの名無しさん2006/01/22(日) 17:35:14
>>473
2バイト文字は含まないです。
0476デフォルトの名無しさん2006/01/22(日) 17:38:24
>>472
#include<stdio.h>
int main(void)
{char moji[]="AB120aDy3";
char *mp = moji; //ポインタ変数
int alphl; //大文字の数
int alphs; //小文字の数
int num; //数字の数
int cnt;
alphl=0;
alphs=0;
num=0;
for(cnt=0;*(mp+cnt)!='\0';cnt++){
if(*(mp+cnt)>='A'&&*(mp+cnt)<='Z'){
alphl++;
}
else if(*(mp+cnt)>='a'&&*(mp+cnt)<='z'){
alphs++;
}
else if(*(mp+cnt)>='0'&&*(mp+cnt)<='9'){
num++;
}
}
printf("大文字:%d\n",alphl); printf("小文字:%d\n",alphs); printf("数字:%d\n",num);
return 0;
}
0477デフォルトの名無しさん2006/01/22(日) 17:41:06
>>472
#include<stdio.h>
int main(void){
char moji[]="AB12aDy3";
char *mp = moji; //ポインタ変数
int alphl=0; //大文字の数
int alphs=0; //小文字の数
int num=0; //数字の数
while(*mp!='\0'){
if(*mp>='A'&&*mp<='Z')alphl++;
else if(*mp>='a'&&*mp<='z')alphs++;
else if(*mp>='0'&&*mp<='9')num++;
mp++;
}
printf("英大文字:%d\n",alphl);
printf("英小文字:%d\n",alphs);
printf("数字:%d\n",num);
return 0;
}
0478デフォルトの名無しさん2006/01/22(日) 17:47:59
ありがとうございました。
0479デフォルトの名無しさん2006/01/22(日) 17:56:16
islowerとか使った方が格好良くないか?
0480デフォルトの名無しさん2006/01/22(日) 17:59:11
宿題なんだから余計なものは使わない方がいいんじゃないか
提出する本人が知っていて使う分には問題ないと思うが
0481デフォルトの名無しさん2006/01/22(日) 18:00:16
でもislowerとか使うのも一理あると思いました
0482デフォルトの名無しさん2006/01/22(日) 18:00:22
is系ちょっと特殊だからな
出てこない授業も少なくない希ガス
0483デフォルトの名無しさん2006/01/22(日) 18:06:22
皆がかっこよすぎて、たびたび惚れる。いつかおまいらを越す
0484デフォルトの名無しさん2006/01/22(日) 18:07:54
>>483
俺も思った 頑張ろう
0485デフォルトの名無しさん2006/01/22(日) 18:11:25
たかが宿題を解いたくらいで惚れるだの越すだの言わないでくれ。
0486デフォルトの名無しさん2006/01/22(日) 18:12:56
変な会話成立させないでくれ
0487デフォルトの名無しさん2006/01/22(日) 18:15:17
俺のぶっといマグナムでお前のケツシェイクしてやろうか
0488デフォルトの名無しさん2006/01/22(日) 18:18:11
直径1センチしかないくせによく言うわ
0489デフォルトの名無しさん2006/01/22(日) 18:18:45
>>485
ガンガル。
>>485
いや素でかっこいい。知識ある者への敬う気持ちが生まれた。
モチベーションの確保にも役に立つし。

てかマジかっけ〜よ・・・。>>487くれ!!DNAを。
0490デフォルトの名無しさん2006/01/22(日) 18:20:35
マグナムじゃなくデリンジャーだろ( ´,_ゝ`)
0491デフォルトの名無しさん2006/01/22(日) 18:23:10
それ早漏ってこと?
0492デフォルトの名無しさん2006/01/22(日) 18:26:46
ムケちんぽなのに早漏の漏れはどうすれば?
俺20秒あれば昇天できんだけど・・・OTL
0493デフォルトの名無しさん2006/01/22(日) 18:27:26
20秒とか自慰でも無理あるんだが
0494デフォルトの名無しさん2006/01/22(日) 18:33:03
質問なんですけど、というより宿題で
「C言語を使って実行すると特定のレジストリを書き換えるプログラムを作れ」
というのが出題されたのですが、どうしたらいいのでしょうか?
0495デフォルトの名無しさん2006/01/22(日) 18:34:09
>>494
ちんぽ剥いてしこしこ汁
0496デフォルトの名無しさん2006/01/22(日) 18:34:17
>>494
api
0497デフォルトの名無しさん2006/01/22(日) 18:39:15
>>494
RegCreateKeyEx
とか
RegSetValueEx
とか
0498デフォルトの名無しさん2006/01/22(日) 19:23:41
>>497
できれば具体例を教えていただけないでしょうか?
0499デフォルトの名無しさん2006/01/22(日) 19:25:26
宿題なら質問テンプレを使用の事。
0500デフォルトの名無しさん2006/01/22(日) 19:37:11
>>494です。

[1] 授業単元: プログラミング�V
[2] 問題文(含コード&リンク): C言語を使って実行すると特定のレジストリを書き換えるプログラムを作れ
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C
[4] 期限: ([2006年2月04日午後まで]
[5] その他の制限: 特になし
0501デフォルトの名無しさん2006/01/22(日) 19:39:17
[1] 授業単元: 基礎情報処理
[2] 問題文

次のようなLISPプログラムを書け

 アトムとして整数のみを含むs表現wを入力とし、w中に現れる0以外の整数を全て掛け合わせた結果を計算する関数MULTALL(w)を帰納的に定義せよ
 帰納的でないプログラムは回答と見なさない

  例 w=((3.((1.0).−2)).(2.0))のとき、MULTALL(w)=−12。

 LISPの文法の詳細については問わないが、なるべく読みやすく書くこと。
 なお、整数の乗算には、以下のLISPの組み込み関数TIMESを使うこと。

   TIMES(m、n) =m×n

[3] 環境
 [3.1] OS: Windows
 [3.2] ごめんなさい、わかりません
 [3.3] 同上
[4] 期限:今月中

超初心者なので、教科書とか読んでもサッパリです、出来ればどなたかどうかお願いします。
0502デフォルトの名無しさん2006/01/22(日) 19:45:23
LIPSとC/C++言語は別物だ
0503デフォルトの名無しさん2006/01/22(日) 19:50:23
そうなんですか、ごめんなさい
正直コンピューター系とかは皆同じに見えてしまう…

スレ違いになるかもしれないど、その違いだけでも教えてもらえますか?
0504デフォルトの名無しさん2006/01/22(日) 20:07:23
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):自由課題、ただし条件判断と繰り返し命令、配列は
かならず用いること。関数、ポインターなどは必要に応じて用いればよい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC 6.0
 [3.3] 言語:C
[4] 期限: 1月23日12:00まで
[5] その他の制限:なし
C言語の授業が分からなかったため最終課題ながら
全然思いつきませんでした、よろしくお願いします。
0505デフォルトの名無しさん2006/01/22(日) 20:09:54
>>504
オセロ
#include <stdio.h>
int*i,p,t,a,d,v,m[91]={-10,-9,-8,-1,1,8,9,10},s;int k(){if(m[p]==0)for(i=m;*i;i
++){for(v=p+*i;m[v]==9-t;v+=*i){}if(v-p-*i&&m[v]==t&&(s=a=v=p,d))do m[v]=t,v+=*
i;while(m[v]-t);}return 0;}int main(){for(m[40]=m[50]=s=t=3,m[41]=m[49]=6;s-1;a
=d=0){for(p=8;++p<82;printf("・\0○\0●\0\n"+m[p]))p%9?k():m[p]=9;for(a?d=a=p=9
:s?s=0,puts("pass"):s++;a==9;k())t-6?scanf("%d%d",&p,&v),p+=v*9:++p;t=9-t;}}
0506デフォルトの名無しさん2006/01/22(日) 20:16:37
それ7行のヤツじゃないか?
0507デフォルトの名無しさん2006/01/22(日) 20:42:08
>>504
#include <stdio.h>
#include <string.h>

int main()
{
char s[256];
int len;
int i;
char tmp;
printf(" input string: ");
scanf("%s",s);
if ((strlen(s))==1){ return 0; }
len = strlen(s);
for (i = 0; i < len/2; ++i) {
tmp = s[i];
s[i] = s[len-1-i];
s[len-1-i] = tmp;
}
printf("output string: %s\n", s);
return 0;
}
これは前の文字入れ替え課題の誰かが作った(どこにあるかわからんw)ソースに
ifを付け足した奴でつ。
たぶん大丈夫
0508デフォルトの名無しさん2006/01/22(日) 20:50:45
[1] 授業単元: ソフトウェア開発
[2] 問題文(含コード&リンク): 1+2*3-4を標準入力から入力し計算順に
               ((1+(2*3))-4)とカッコをつけて出力
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 無期限
[5] その他の制限: 二分木で表現をお願いします。あと演算子の優先度と
          左結合でお願いします。

ずっと出来なくて悩んでいます。どなたか教えてください。

0509デフォルトの名無しさん2006/01/22(日) 20:52:07
なんでみんなLinux使ってんの〜?
0510デフォルトの名無しさん2006/01/22(日) 20:52:48
タダだからじゃね
0511デフォルトの名無しさん2006/01/22(日) 20:55:42
>>504
じゃあ俺も書いたけど結局貼らなかったやつ貼っとく
#include <stdio.h>
#include <string.h>
void strswap(char *s,int n)
{
  int i,n1,n2;
  char temp[256];
  if(n%2==0){
    n2=n/2;
  }
  else{
    n2=n/2+1;
    temp[n/2]=s[n/2];
  }
  for(i=0;i<n/2;i++){
    temp[i]=s[n2+i];
    temp[n2+i]=s[i];
  }
  temp[n]='\0';
  strcpy(s,temp);
}
int main()
{
  char s[256];
  printf("-->");
  scanf("%s",s);
  strswap(s,strlen(s));
  printf("-->%s\n",s);
  return 0;
}
■ このスレッドは過去ログ倉庫に格納されています