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

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
あなたが解けないC言語/C++言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。

【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 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
【過去ログ検索】        http://chomework.sakura.ne.jp/
【wiki】               http://www23.atwiki.jp/homework/

【前スレ】
C/C++の宿題を片付けます 92代目
http://pc11.2ch.net/test/read.cgi/tech/1183511364/
2デフォルトの名無しさん:2007/07/15(日) 23:25:54
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4627.txt
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 )
 [3.3] 言語: (C)
[4] 期限: (7月18日まで)
[5] その他の制限: (基本はすべて習いました)

よろしくお願いします
3デフォルトの名無しさん:2007/07/16(月) 00:05:11
[1] 授業単元:コンピュータ基礎
[2] 問題文: ニュートン法により、√2の近似値を求めよ。
[3] 環境
 [3.1] OS: (Windows Vista business)
 [3.2] コンパイラ名とバージョン: (gcc 2.95.2)
 [3.3] 言語: (C言語)
[4] 期限: (7月19日まで][5] その他の制限:プログラミングについて全く無知です。
授業であまり文法の説明とかもなくいきなり課題を提示されたのですが、全くわかりません。
後学の為にも、どなたか作った後教えて下さい。お願い致します。
4デフォルトの名無しさん:2007/07/16(月) 00:08:17
初心者で悪いんだが
>>2
のマージソートは再帰するからいいんじゃないの?
5デフォルトの名無しさん:2007/07/16(月) 00:23:23
再帰を使わずに、でお願いします
6デフォルトの名無しさん:2007/07/16(月) 00:44:09
>>3
#include <stdio.h>

double sqr(double c);

int main(){
double c;
c = sqr(2);
printf("√2は%fです。\n", c);
return 0;
}

double sqr(double c){
double xn;
int i,n;

n = 10;
xn = 0;

do {
xn += 1;
} while (xn * xn < c);

for (i = 0;i < n;i++) {
xn = (xn + c / xn)/2;
}

return xn;
}

これでいいよ
7デフォルトの名無しさん:2007/07/16(月) 01:02:37
>>6
ニュートン法になってないだろ
8デフォルトの名無しさん:2007/07/16(月) 01:06:00
>>6
ありがとうございます。
とても初歩的な質問なんですが、
2行目のdouble sqr(double c);にはどんな意味があるんですか?
doubleが倍精度って…言葉だけは知ってるのですが。
9デフォルトの名無しさん:2007/07/16(月) 01:08:47
何を言っているんだ
10デフォルトの名無しさん:2007/07/16(月) 01:10:17
このスレで聞くより、まず参考書読んだほうが良い。
それでわからないことがあったらスレで聞く。
116:2007/07/16(月) 01:10:23
>>7
えっそうなの?
ずっとこれがニュートン法だと・・・・
12デフォルトの名無しさん:2007/07/16(月) 01:12:36
>>7
そうなんですか?
ニュートン法で√2を求める場合、
f(x)=x^2-2=0として解けばいいんですよね。
どうプログラムすればいいんですかね?
13デフォルトの名無しさん:2007/07/16(月) 01:17:46
7じゃないが、最後のforループはどういう意味?
146:2007/07/16(月) 01:29:38
交点の座標を詳しく求めてる

俺工房だから間違えてるのかもしれない
15デフォルトの名無しさん:2007/07/16(月) 01:43:43
[1] 授業単元: プログラミング
[2] 問題文:
@標準入力から入力される文字列(英小文字のみ)をchar型の配列に格納し、各アルファベットの数を表示するプログラムを作れ。
ただし、0個のアルファベットについては表示させないものとする。
例:this is very nice book(入力後EOF)
b=1
c=1
e=2
h=1
(後略)
ヒント:要素が26個の配列を用意し、それぞれのアルファベットをカウントする。
文字コードを利用すれば、"a"-"a"=0であり、"b"-"a"=1である。
A数字によって構成される文字列をchar型配列へ読み込み、それをint型のデータに変換する関数toatoi()を作れ。
ただし、文字列中に数字以外の文字がある場合は戻り値を-1として返すように設定せよ。
さらに、toatoi()を利用して標準入力から与える文字列を数値とし、printfの%dを用いて表示するプログラムを作成せよ。
B最大10文字50行の文字列を読み込み、縦に変換して出力するプログラムを作成せよ。
例:
0001(改行)1100(改行)2222 と入力
102(改行)009(改行)012(改行)012 と出力
配列の項目なので、配列を使用した解法を伝授お願いします
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語:どちらでも可
[4] 期限:7/19
[5] その他の制限:無し
前スレ589の課題だったのですが、締め切りが延びたので再度質問しました
どうかお願いしますorz
16デフォルトの名無しさん:2007/07/16(月) 02:00:27
>>2 とりあえず関数だけ
#include <stdlib.h>
#include <string.h>
void arraycopy (int n, int *dst, int *src) {
memcpy (dst, src, sizeof(int)*n);
}
void mergesort (int n, int *a) {
int *b = calloc (n, sizeof(int)); /* temporal space */
int s = 1; /* segment size */
arraycopy (n, b, a);
while (s < n) {
int f; /* start of segments pair */
for (f = 0; f < n; f += 2*s) {
/* merge two segments b[f : f+s], b[f+s : f+2s] into a[f : f+2s] */
int i, i1, i2;
i = i1 = i2 = 0;
while (i1 != s || i2 != s) {
if (i2 == s || i1 != s && b[f+i1] <= b[f+s+i2]) {
a[f+i++] = b[f+i1++];
} else {
a[f+i++] = b[f+s+i2++];
}
}
}
arraycopy (n, b, a); /* copy a to b */
s *= 2;
}
free (b);
}
17デフォルトの名無しさん:2007/07/16(月) 02:07:21
>>15
@
これでいいかな?


#include<stdio.h>

int main(void)
{
char alpha[26] = {0};
char c;
int i;

printf(" Input: ");
do{
c = getchar();
if( 'a'<=c && c<='z' ){
alpha[c-'a']++;
}
}while( c!=EOF && c!='\n' );

for(i=0;i<26;i++){
if( alpha[i] ){
printf("%c = %d\n",i+'a',alpha[i]);
}
}

return 0;
}
18デフォルトの名無しさん:2007/07/16(月) 02:09:58
>>15
@
間違えていた

#include<stdio.h>

int main(void)
{
int alpha[26] = {0};
char c;
int i;

printf(" Input: ");
do{
c = getchar();
if( 'a'<=c && c<='z' ){
alpha[c-'a']++;
}
}while( c!=EOF && c!='\n' );

for(i=0;i<26;i++){
if( alpha[i] ){
printf("%c = %d\n",i+'a',alpha[i]);
}
}

return 0;
}
19デフォルトの名無しさん:2007/07/16(月) 02:23:11
>>15
A
#include<stdio.h>
int toatoi(char *str)
{
int num = 0, sign = 1;
if( *str=='+' ){
str++;
}else if( *str=='-' ){
str++;
sign = -1;
}
do{
if( *str<'0' || '9'<*str )
return -1;
num *= 10; num += *str++ - '0';
}while( *str!='\0' && *str!='\n' );
return sign * num;
}

int main(void)
{
char line[100];
printf(" Input: ");
fgets( line, sizeof(line), stdin);
printf(" 数値: %d\n", toatoi(line));
return 0;
}
20デフォルトの名無しさん:2007/07/16(月) 06:23:03
>>6
x*x-c=0 限定なのは良いとしても,収束判定がまずい.
xn の初期値をそうとるなら sqr(100)とかは無駄に計算するし,sqr(1e-6)とかは精度が足りない.
double sqr(double c){
double x,xn=0,e = 1e-10;/* */
do {
xn += 1.0;
} while (xn * xn < c);
x = xn + 1.0;
while( fabs(xn - x) > e ) {
x = xn;
xn = (x + c / x ) / 2.0;
}
return xn;
}
21デフォルトの名無しさん:2007/07/16(月) 08:54:14
[1] 授業単元:OS
[2] 問題文(含コード&リンク):
セマフォを使い親子プロセス間でのメッセージ通信を実現させよ。
親プロセスでメッセージを入力すると子プロセスで表示され、
子プロセスでメッセージを入力すると親プロセスで表示されるものとする。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 今日
[5] その他:前スレで助けてもらい、それにいろいろ付け加えたらコンパイルエラーはなくなり、
       以下のようなプログラムになりました
       http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4629.c
       しかし、これだと親プロセス内だけでの通信となってしまいます。
       どなたかお力を貸してください!
       よろしくお願いします
22デフォルトの名無しさん:2007/07/16(月) 09:05:21
名前:デフォルトの名無しさん[sage] 投稿日:2007/07/15(日) 09:55:51
[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク): 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4624.txt
ソース:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4625.txt

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語:C言語
[4] 期限:問題1は2007/07/17/12:00まで。問題2.3は2007/07/19の12:00まで。
[5] その他の制限:特になし


前スレがすぐ1000になってしまったので、もう一度書きこまさせていただきます。
23 ◆uaa3kJNAQA :2007/07/16(月) 10:01:22
[1] 授業単元: C言語
[2] 問題文
入力として英数文字(アルファベット、句読点等)の
文字列を受け取り、(入力終了はEOF)
その文字列の中の英大文字を英小文字に変換した文字列を出力
する。文字セットはASCII方式を用いるものとし、
<ctype.h>の関数は使用しない。


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 18日の23:00まで


よろしくおねがいます。
24デフォルトの名無しさん:2007/07/16(月) 10:55:39
#include <stdio.h>

int main(void){
int i;
char str[31];

printf("文字列入力\n");
fgets(str, 30, stdin);
printf("入力文字列は %s です\n", str);

for(i=0; i<31; i++){
if(str[i]>'A' && str[i]<'Z'){
str[i] += 32;
}
}

printf("変換文字列は %s です\n", str);
return 0;
}
25デフォルトの名無しさん:2007/07/16(月) 11:12:42
>>22
課題と関係なしに趣味で組んでるが、駄目だよなw

つか、仕様だけ決めて課題出してくれればいいのに。
関数名とかロジックとか中途半端に決められてると萎える。

あと、このくらいのプログラムの規模になったらモジュール化しないと辛いんじゃね?

↓問題1のCPUのランダム対戦まで出来てる

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4631.zip
26デフォルトの名無しさん:2007/07/16(月) 12:41:25
>>24勝手に訂正

for(i=0; i<31; i++){
if(str[i]>='A' && str[i]<='Z'){
str[i] += 'a'-'A';
}
}
27デフォルトの名無しさん:2007/07/16(月) 15:34:01
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4151.txt
次の手順で動作するプログラムmergesort.cを作成し,その動作を確認せよ.

まずファイルから保存されているデータ数nを読み込み,次にその数だけデータを読み込み格納する.
次に,保存されたデータについてマージソートを実行する関数mergesort()を呼び出し,データを整列する.
最後に,整列されたデータをディスプレイ上に表示しプログラムを終了する.

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
 [3.3] 言語: C
[4] 期限: 7月22日
[5] その他の制限:結果がソートされていることをそれぞれのデータについて毎回確認すること. プログラム中で保存するデータは「ポインタを用いた線形リスト」で実現せよ.

解いてください。お願いします。
28デフォルトの名無しさん:2007/07/16(月) 15:39:45
[1] 授業単元: プログラミング技術U
[2] 問題文(含コード&リンク):
プログラム中でm×nの2次元の動的メモリ確保を行い、
その確保された変数の[i][j]の要素に、数値(i×n+j)を代入し、
結果を表示するプログラムを作成せよ。
(実行例)
mの値を入力せよ:2
nの値を入力せよ:3

a[0][0]=0
a[0][1]=1
a[0][2]=2
a[1][0]=3
a[1][1]=4
a[1][2]=5

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C言語
[4] 期限: 7/19(木)
[5] その他の制限: なし
29デフォルトの名無しさん:2007/07/16(月) 15:48:38
[1] 授業単元: C言語基礎演習
[2] 問題文(含コード&リンク):
n個の文字列を読み込み、読み込んだ文字列を縦に読む
プログラムを作成せよ。
(空白、スペースを含む場合は空白、スペースを飛ばして表示)
但し、”ポインタのポインタ”をどこかに用いてプログラムすること。
「プログラムの動作」
何個の文字列を読み込みますか?:3
1番目の文字列:World
2番目の文字列:Cup
3番目の文字列:Soccer

1列目:WCS
2列目:ouo
3列目:rpc
4列目:lc
5列目:de
6列目:r
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C言語
[4] 期限: 7/17までにお願いします。

期限ぎりぎりですがよろしくお願いします。
30デフォルトの名無しさん:2007/07/16(月) 15:56:31
31デフォルトの名無しさん:2007/07/16(月) 16:05:03
[1] 授業単元:プログラミングU演習
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4632.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年07月17日08:20まで
[5] その他の制限: 無し

よろしくお願いします。
32デフォルトの名無しさん:2007/07/16(月) 16:21:27
>>31
そんなんで分かる訳無いだろ
33デフォルトの名無しさん:2007/07/16(月) 16:24:10
C言語苦手だああああ
34デフォルトの名無しさん:2007/07/16(月) 16:26:17
>>31
こんな幹事会。ちなみに中身はtgz。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4633.zip
35デフォルトの名無しさん:2007/07/16(月) 16:26:54
>>30
すいません、2次元配列さっぱり分からないもので、参考のページで
論議されている内容もさっぱり分かりません。
36デフォルトの名無しさん:2007/07/16(月) 16:33:04
遅れましたが、前スレの748です
前スレ750さん、ありがとうございました
ただ、使い方が良くわからないのでできればご指導願います
37デフォルトの名無しさん:2007/07/16(月) 16:39:19
>>34
queue.h の中の
static int qfirst = 0, qlast = 0, qcount = 0;
の行は queue.c に移動したほうがいいんじゃね?
38デフォルトの名無しさん:2007/07/16(月) 16:42:35
>>37
そういやそうだね。あとmakefileも微妙だったりゴミが混じってたりするけど気にしないでくれ。
39デフォルトの名無しさん:2007/07/16(月) 16:47:16
というか、このくらいの問題に手も足もでない、自力でできないくらいじゃ
単位やらなくてもいいんじゃない?と俺は思うよ。
40デフォルトの名無しさん:2007/07/16(月) 16:52:34
それには同意だが、そんなこと知ったことじゃないし、暇つぶしになるから問題なし。

#include <stdio.h>
#include <stdlib.h>
int main(void){
int m,n,i,j,**a;
char buf[256];
printf("mの値を入力せよ:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&m);
printf("nの値を入力せよ:");
fgets(buf,sizeof(buf),stdin);
sscanf(buf,"%d",&n);
a=(int**)calloc(m,sizeof(int*));
if(a==NULL){printf("メモリ確保失敗。\n");exit(1);}
for(i=0;i<m;i++){
a[i]=(int*)calloc(n,sizeof(int));
if(a[i]==NULL){printf("メモリ確保失敗。\n");exit(1);}
}
for(i=0;i<m;i++)for(j=0;j<n;j++){
a[i][j]=i*n+j;
printf("a[%d][%d]=%d\n",i,j,a[i][j]);
}
for(i=0;i<m;i++)free(a[i]);
free(a);

return 0;
}
41デフォルトの名無しさん:2007/07/16(月) 17:04:25
このスレは宿題を淡々を片付けるスレだから
レベルが低かろうが高かろうがどうでもいいと思うぜ
42デフォルトの名無しさん:2007/07/16(月) 17:14:32
[1] 授業単元:IT入門
[2] 問題文(含コード&リンク):
繰り返し複素数(実部,虚部はそれぞれ整数型とする)を入力し,ユーザが最後に1 
(1+i*0)を入れたら今まで入力した複素数の実部と虚部のペアをすべて出力し,さらに
入力した複素数すべての積を出力するプログラムを作成せよ.
なお,ユーザが入力する回数に制限はないものとする.
stdio.hの他にstdlib.hをインクルードしておく必要がある.

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 最新版
 [3.3] 言語: C
[4] 期限:2007年7月21日
[5] その他:参考プログラム(http://www-it.sci.waseda.ac.jp/ITB1/class1/list.c)を使ってください
43デフォルトの名無しさん:2007/07/16(月) 17:15:08
>>40
ありがとうございます。
提出期限と同じ木曜日に出題されて今日まで連休中考えていたけど
配列はどうしても苦手で参考サイトを回ってみたけど、さっぱりでした。

>>39
それでも単位は欲しいのが大学生です。
4442:2007/07/16(月) 17:15:52
http://www-it.sci.waseda.ac.jp/ITB1/class1/list.c
もう一度リンクしておきます
45デフォルトの名無しさん:2007/07/16(月) 17:32:14
どうでもいいけど直リンだと2chでお願いしてるのがバレバレだよ。
46デフォルトの名無しさん:2007/07/16(月) 17:33:19
どうせ誰がコピッたかなんて分かるわけが…
ソース見りゃ分かるか。
47デフォルトの名無しさん:2007/07/16(月) 17:39:27
>>29
ソース自体は書いたんだが、ポインタのポインタを有効に使う方法が思いつかないなぁ・・・。
4847:2007/07/16(月) 17:50:22
>>29
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4634.txt
とりあえずupしといたんで、ポインタのポインタ使用版に改良できる人いたらお願い。
49デフォルトの名無しさん:2007/07/16(月) 17:56:33
gets使うなよ。
50デフォルトの名無しさん:2007/07/16(月) 18:06:10
そういう事は言ってやるなよ。
宿題丸投げする奴への餞別のつもりだろ。
51デフォルトの名無しさん:2007/07/16(月) 18:12:33
申し訳ありません。宜しくお願いします

【質問テンプレ】
[1] アプリ開発
[2] OS内にあるサウンド出力プログラム作成
[3.1] Windows
[3.2]eclipse バージョンは分かりません
[3.3] どちらでもイイらしいです
[4] 7/18(水)
[5] スタイルシートを自ら作りSQLで模擬エクセル作成、バックトラック法、動的計算法はやりました
52デフォルトの名無しさん:2007/07/16(月) 18:16:04
>>51 
接続部位のデバイス設定をやりたいのか
WAVとかmp3とかの出力ファイルを作りたいのか
メディアプレイヤーとかのアプリを作りたいのかはっきりしろw
意味が中途半端で分からんw
53デフォルトの名無しさん:2007/07/16(月) 18:17:54
ecliってCコンパイラあったのか?
ちょっとしか触った事ないけどJava用IDEってイメージだった
54デフォルトの名無しさん:2007/07/16(月) 18:18:36
>>51 eclipseならbccだろ?ちゃんと書いたほうがいいよ
5536:2007/07/16(月) 18:18:48
すいませんがどなたか使い方教えてください・・・

750 :デフォルトの名無しさん [sage] :2007/07/12(木) 13:00:15
>>748 ショボイですが
暗号
#include <stdio.h>
#include <ctype.h>

static char alpha[53] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
static char table[53] = "zNFeYMljvJXKicfrGyDEOwQpHkCLbxhqRAPsnouVTaWIZdUmBStg";

int getindex(char *str, int ch){
int i;
for(i = 0; i < 52 && str[i] != ch; i++) ;
return i;
}

int main(int argc, char *argv[]){
FILE *fpin, *fpout;
int ch, op;

if(argc < 3 || (fpin = fopen(argv[1], "r")) == NULL || (fpout = fopen(argv[2], "w")) == NULL) exit(1);

while((ch = fgetc(fpin)) != EOF)
if(isalpha(ch)) fputc(table[getindex(alpha, ch)], fpout);
else fputc(ch, fpout);

fclose(fpin), fclose(fpout);

return 0;
}
56デフォルトの名無しさん:2007/07/16(月) 18:18:59
>>27
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4635.txt

2重ポインタ版。
縦に表示なんて面倒な指定さえなければもっとメモリ節約できるけど。
5756:2007/07/16(月) 18:19:44
安価ミス
>>27×
>>29
58デフォルトの名無しさん:2007/07/16(月) 18:23:31
>>55
「main」関数に「引数」があるわけだな
ぐぐってみろ
ぐぐってまったく意味不明だったら答えてやる
59デフォルトの名無しさん:2007/07/16(月) 18:24:45
>>51 ちょwwwそれ宿題ってレベルじゃねーぞw どこの学校だよw
6056:2007/07/16(月) 18:25:29
訂正、下の方の
putchar(str[j][i]);
の行を
if(str[j][i]!='\0')putchar(str[j][i]);
にしといて。
61デフォルトの名無しさん:2007/07/16(月) 18:25:54
>>55
問題文もくれなきゃ何がしたいのかわからん。
ソース見る限り単一換字暗号?
62デフォルトの名無しさん:2007/07/16(月) 18:27:31
63デフォルトの名無しさん:2007/07/16(月) 18:33:17
>>51
多分これじゃダメなんだろうな

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
char cmd[10+FILENAME_MAX];

if(argc==2){
sprintf(cmd, "start %s", argv[1]);
system(cmd);
}

return 0;
}
64デフォルトの名無しさん:2007/07/16(月) 18:37:24
>>61
任意の英文について、換字暗号表を用いて暗号化するプログラムと、
暗号化した文を同様の表を用いて解読するプログラムを作成せよ。
入力する文章と換字暗号表の形式は自由にしてよいものとする。(別に用意したテキストファイルから読み込む形のほうが好ましい)


abcd… という英文があったとき、換字暗号表がa→t b→y c→e d→k…だったなら、
tyek…と出力されるプログラム、またその逆操作するプログラム
という意味です。

という文章でお願いしたところ、>>55のような回答をいただきましたが、使い方がわかりませんでした
よろしくお願いします
6551:2007/07/16(月) 18:37:46
すいません 組み込み系です。

>>52さんの言われている中では「接続部位のデバイス設定」になると思います

>>63すいません OS無しで作る方法を・・・・・
66デフォルトの名無しさん:2007/07/16(月) 18:39:58
OS無しとは、一気に難易度が上がったな。
67デフォルトの名無しさん:2007/07/16(月) 18:40:10
>>51
UNIX板行った方がいいと思うよ あっちは組み込み系だから・・・・・・
68デフォルトの名無しさん:2007/07/16(月) 18:41:40
その誘導のしかたもどうかと思う。
69デフォルトの名無しさん:2007/07/16(月) 18:41:54
>>56
スベース文字のスキップがない
70デフォルトの名無しさん:2007/07/16(月) 18:42:24
>>51 ちょwwどこの学校だ・・・・・今後の参考に教えてくれないか?
71デフォルトの名無しさん:2007/07/16(月) 18:46:30
>>51 マジレス:卒業したら年収700万で雇うから来てくれ 
housurejiak2245589761045@hotmell〜
72デフォルトの名無しさん:2007/07/16(月) 18:47:12
>>51 の学校で他人のソースコピペ無しで卒業なら、めちゃめちゃ優秀なマだな
73デフォルトの名無しさん:2007/07/16(月) 18:52:43
>>51 君の学校は新しいOSを開発しているのか?

申し訳無いが、俺らはソフト屋だ。そっち側はまったく分からん
助けにならなくて申し訳ない

74デフォルトの名無しさん:2007/07/16(月) 19:00:12
CPUの演算がどのように行われているのかをまず覚えよ

底辺マは出力結果にしか興味を持たない だからバグがでる

75デフォルトの名無しさん:2007/07/16(月) 19:02:39
>>51
サウンドデバイスの IO の定義が無いとどうにもならない
最低限でも
1.音量設定の方法
2.周波数設定の方法
3.サウンドバッファへの書き込み&失敗検出の方法
くらいは必要だと思うよ
7655:2007/07/16(月) 19:05:29
>>58
ぐぐってみましたが意味不明でした…
すいません、教えていただけますか?
77デフォルトの名無しさん:2007/07/16(月) 19:06:56
>>63 が駄目ならこれも駄目ってことか
OS無しって難しすぎだろ
PlaySound("c:\\windows\\media\\chimes.wav", NULL, SND_SYNC | SND_FILENAME);
78デフォルトの名無しさん:2007/07/16(月) 19:08:20
>>76
./a.out 変換元ファイル 変換後ファイル名
79デフォルトの名無しさん:2007/07/16(月) 19:10:28
>>64
出てきたバイナリのコマンドラインに対象テキストファイル名と出力先ファイル名を追記。
例えばコンパイルして出てきたプログラムがa.exe、暗号化するテキストがbefore.txt、
出力先をafter.txtとするなら
a.exe before.txt after.txt
でafter.txtに暗号化済みのファイルが出力される。
逆操作は不可。そういう意味では>>55は要件を満たしていないね。

こんなとこに丸投げする人にいう事じゃないと思うけど
こんくらいのソース読めないでこれからやっていけると思ってる?
8051:2007/07/16(月) 19:12:04
すいません
やっぱり 自分でやってみます

自分で考えて解決しなきゃ成長しませんもんね・・・・・

色々ありがとうございました。

>>71さん、心使いは嬉しいのですが学校で研究を続けるつもりなので・・・・

それと学校名は出せません。ごめんなさい




81デフォルトの名無しさん:2007/07/16(月) 19:15:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4638.txt

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc 3.4
 [3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 出来る限り単純な方法で回答して下さると助かります。
よろしくお願いします。


82デフォルトの名無しさん:2007/07/16(月) 19:16:44
擁護するわけじゃないけど、コマンドライン引数の実際の使い方は教本によっちゃ物凄い投げやりだからな。
こんなんで分かればエスパーだろってぐらい。
で、分からんから後まわしにして課題出てくると四苦八苦するんだよな。
83デフォルトの名無しさん:2007/07/16(月) 19:16:53
>>80
ここの方達が手上げてるのを完成させるの難しくない?
>>67の行ってるUNIX板行った方がよくない?
84デフォルトの名無しさん:2007/07/16(月) 19:18:28
>>81
前スレに同じのがあったから見てくるといいと思うよ。
85デフォルトの名無しさん:2007/07/16(月) 19:20:27
LL構文解析懐かしすぎる
86デフォルトの名無しさん:2007/07/16(月) 19:27:12
>>29
だれかお願いします。
>>47,48ががんばってくれたけど「ポインタのポインタ」使用版でないと
駄目な課題なので分かる方お願いします。

>>47,48
ありがとうございます。
8756=57=60:2007/07/16(月) 19:29:07
orz
8851:2007/07/16(月) 19:32:53

自分も投げ出してたから人のこと言えないけど
時間かかってでも自分で考えて解決した方がいいと思う
89デフォルトの名無しさん:2007/07/16(月) 19:34:51
>>88
秀同って事でスレ終了 乙です
90デフォルトの名無しさん:2007/07/16(月) 19:45:35
>>78
その通りやっても出来ない・・・なぜでしょうか
91デフォルトの名無しさん:2007/07/16(月) 19:57:19
>>90
次の一連のコマンドを打ち込んだ結果を晒してみて
echo hello>a.txt
./a.out a.txt b.txt
echo $?
cat b.txt
9291:2007/07/16(月) 19:59:42
最後に追加
ls -l a.out a.txt b.txt
93デフォルトの名無しさん:2007/07/16(月) 20:00:57
C:\Documents and Settings\******>echo hello>a.txt

C:\Documents and Settings\******>./a.out a.txt b.txt
'.' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。

C:\Documents and Settings\******>echo $?
$?

C:\Documents and Settings\******>cat b.txt
cat: b.txt: No such file or directory

こうなりました
94デフォルトの名無しさん:2007/07/16(月) 20:02:44
C:\Documents and Settings\******>ls -l a.out a.txt b.txt
ls: a.out: No such file or directory
ls: b.txt: No such file or directory
-rw-rw-rw- 1 user group 7 Jul 16 19:59 a.txt

追加の分はこうなりました
コマンドプロンプトで実行しました
9591:2007/07/16(月) 20:05:31
>>93
linux じゃなかったのかよ!

echo hello>a.txt
.\a.exe a.txt b.txt
type b.txt
dir
96デフォルトの名無しさん:2007/07/16(月) 20:08:41
笑った。
どうみてもコマンドプロンプトかcygwinとかだね。
97デフォルトの名無しさん:2007/07/16(月) 20:21:17
>>86
皆さんの回答を参考にして作ってみた。これでどうかな。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4639.txt
98デフォルトの名無しさん:2007/07/16(月) 20:31:46
よく見てないけど。
if(buf[strlen(buf)-1] == '\n')
buf[strlen(buf)-1] = 0;
↑ifで判定する必要ない。
99デフォルトの名無しさん:2007/07/16(月) 20:41:55
>>42
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4641.txt
参考コードは一部使用していない
10099:2007/07/16(月) 20:52:38
101デフォルトの名無しさん:2007/07/16(月) 21:00:34
>>42
コンパイルしていない
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct _{ int r, i; } img;
static img *ary=NULL;
static int arysize;
static int arylen;
void putimg(img img){
if(arysize<=arylen){
arysize+=10;
ary=realloc(ary, sizeof(img)*arysize);
}
ary[arylen++]=img;
}
int main(void){
img m;
int i;
for(;;){
scanf("%d,%d", &m.r, &m.i);
if(m.r==1&&m.i==0) break;
putimg(m);
}
for(m.r=1, m.i=i=0;i<arylen;i++){
printf("%d+%d*i\n", ary[i].r, ary[i],i);
m.r=m.r*ary[i].r-m.i*ary[i].i;
m.i=m.r*ary[i].i+m.i*ary[i].r;
}
printf("%d+%di\n", m.r, m.i);
}
102デフォルトの名無しさん:2007/07/16(月) 21:04:13
[1] 授業単元: プログラミング言語
[2] 問題文(含コード&リンク):
• 区間[ a, b ]において連続なる関数f ( x) について,定積分の計算を行う
• 適用する公式は,シンプソンの公式
S=h/3{y(0)+y(2n)+4{y(1)+y(2)+....+y(2n-1)}+y(2)+y(4)+.....+y(2n-2)}
• f ( x)=1/(1+x2)
• a=0, b=10, e=0.0000001の場合の積分値とnの値を表示する
• 各変数(nを除く)の型はdoubleとする

[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
 [3.3] 言語:C++
[4] 期限:次の木曜まで
[5] その他の制限: これといって無し
リンク先に手順の例とかがあります
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4644.txt

とりあえず自分でやってみたけど無理でした。この雑魚にどなたかご教授をorz

あと最後らへんのprintf文の、&nの&は無かったことに(´;ω;`)
103デフォルトの名無しさん:2007/07/16(月) 21:05:06
>>97
ぜんぜん良いと思います。
ありがとうございます。
ポインタのポインタを使っていてちゃんと動作するものなら問題ないので。
104デフォルトの名無しさん:2007/07/16(月) 21:09:42
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4645.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語: C
[4] 期限: 7/17午前中
[5] その他の制限: なし
105デフォルトの名無しさん:2007/07/16(月) 21:19:06
>>103
ベースは>>56さんのなので、よろ
106デフォルトの名無しさん:2007/07/16(月) 21:34:45
>>102
#include <stdio.h>

double f(double x){
    return 1.0/(1.0+x*x);
}

int main(void){
    double a=0.0, b=10.0, h, sum;
    long n=10000000, i;

    h=(b-a)/n;

    sum=f(a)+f(b);
    for(i=1;i<n;i+=2) sum+=2*f(a+h*i);
    for(i=2;i<n;i+=2) sum+=4*f(a+h*i);
    sum*=h/3;

    printf("Answer: %f\n", sum);

    return 0;
}
107デフォルトの名無しさん:2007/07/16(月) 22:14:38
>>106さん、ありがとうございます。工夫すればかなり短くなるんですね・・・

それと、問題文に抜けてしまったんですが
• s2は最新の計算結果,s1は一つ前の計算結果
• |s2-s1|<eとなるまで,nを1増やしながら,以下の
処理を繰り返す
- s1←s2
- s2を新しいnで計算する

というのはどうすれば出来るでしょうか?よろしければご教授お願いします
108デフォルトの名無しさん:2007/07/16(月) 22:24:21
>>104
#include <stdio.h>

int main(void){
    int masu[9], a, i, j, turn = 0;
    char *koma[3] = {" 0 ", " X ", " * "};
    for(i = 0; i < 9; i++) masu[i] = 2;
    while(1){
        do{
            printf("?"), scanf("%d", &a);
            if(a >= 9) continue;
        }while(masu[a] != 2);
       
        masu[a] = turn%2;
        turn++;
        for(i = 0; i < 3; i++){
            for(j = 0; j < 3; j++) printf("%s", koma[masu[i*3 + j]]);
            printf("\n");
        }
        if((masu[(a + 3)%9] == masu[a] && masu[(a + 6)%9] == masu[a]) ||
          (masu[3*a/3 + (a + 1)%3] == masu[a] && masu[3*a/3 + (a + 2)%3] == masu[a]) ||
          (a%4 == 0 && masu[0] == masu[a] && masu[4] == masu[a]&& masu[8] == masu[a]) ||
          (a%2 == 0 && a%8 != 0 && masu[(a + 2)%8 + 2] == masu[a] && masu[(a + 4)%8 + 2] == masu[a])){
            printf("%s\n", koma[masu[a]]);
            break;
        }else if(turn >= 9){
            printf("draw\n");
            break;
        }
    }
    return 0;
}
109デフォルトの名無しさん:2007/07/16(月) 22:29:18
一つでまとめますかw
あんたすごいよ。
11021:2007/07/16(月) 22:30:37
どなたか>>21お願いします!
111デフォルトの名無しさん:2007/07/16(月) 22:33:10
>>107
#include <stdio.h>
#include <math.h>

double f(double x){
    return 1.0/(1.0+x*x);
}

int main(void){
    double a=0.0, b=10.0, e=0.0000001, h, s1=0.0, s2;
    long n, i;
    int is_first=1;

    for(n=2;;n+=2){ // アルゴリズムの関係で n は偶数
        h=(b-a)/n;

        s2=f(a)+f(b);
        for(i=1;i<n;i+=2) s2+=2*f(a+h*i);
        for(i=2;i<n;i+=2) s2+=4*f(a+h*i);
        s2*=h/3;
        if(!is_first && fabs(s2-s1)<e) break;
        s1=s2;
        is_first=0;
    }

    printf("n=%ld integral=%f\n", n, s2);

    return 0;
}
112デフォルトの名無しさん:2007/07/16(月) 22:46:56
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
CSVファイルからデータを読み込み、構造体に入れる。
CSVファイルの中身は、名前・住所・電話番号で、10件以内である。
構造体には、登録番号・名前・住所・電話番号を入れる。
登録番号は自分でつける。
最初に、登録番号と名前を表示し、入力された登録番号に応じて
名前住所電話番号を表示する。
[3] 環境
 [3.1] OS:windows cygwin
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 今日中
[5] その他の制限:特になし

色々かんがえたのですがわかりませんでした。。
よろしくおねがいします。
113デフォルトの名無しさん:2007/07/16(月) 22:48:53
>>111さん
素早い回答ありがとうございました。おかげで次の宿題は出せそうです。ありがとうございました。
114デフォルトの名無しさん:2007/07/16(月) 22:49:29
>>107
ごめん間違った

for(i=1;i<n;i+=2) s2+=2*f(a+h*i);
for(i=2;i<n;i+=2) s2+=4*f(a+h*i);

for(i=1;i<n;i+=2) s2+=4*f(a+h*i);
for(i=2;i<n;i+=2) s2+=2*f(a+h*i);
115デフォルトの名無しさん:2007/07/16(月) 22:50:12
あちゃー手遅れだったか
116スモーク:2007/07/16(月) 22:50:23
多分岐型
整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力し
、その計算結果cを出力するプログラムを作成しなさい。

実行される計算は和・差・積・商・剰余の5種類とし、
演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で
表現されるものとする。

演算子にそれ以外の記号が入力された場合は
エラーメッセージを表示する。
また0による除算の回避も含めること。

まだcaseになれていないのだろうか・・・。
教えてください。
117スモーク:2007/07/16(月) 22:51:41
他にも。
多分岐型(2)
次の説明は冬季オリンピックの開催年についての説明である。

キーボードから変数year に入力された年号について、
開催された年に第何回大会が開催されたか
画面に表示するプログラムを作成しなさい。

また開催年でない場合は、画面にその旨メッセージを出力すること。

118デフォルトの名無しさん:2007/07/16(月) 22:55:35
>>117
説明がneeeeeeeeeeeee
119107:2007/07/16(月) 22:56:05
>>114さん、わざわざ丁寧にありがとうございます!(´;ω;`)ブワッ
120デフォルトの名無しさん:2007/07/16(月) 22:57:52
【質問テンプレ】
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
文字列を置換するプログラムをつくれ。
どのような形でもいいので、置き換える文字列と置き換えられる文字列を受け取り
置換した文章を出力する。なるべくポインタを使うこと。試しにちゃんと動くか確認すること。
(例)”僕" を ”私” に置換する
僕は20才だ。僕の好きなたべものはお酒だ。
-> 私は20才だ。私の好きなたべものはお酒だ。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:(gcc 2.95.3)
 [3.3] 言語: C
[4] 期限: (2007年07月31日23:59まで )
[5] その他の制限: 無し
121デフォルトの名無しさん:2007/07/16(月) 22:58:12
まぁ、感謝されたって力つかなきゃ意味無いし、暇つぶしの種にされてるだけだから考え物だけどな。
122デフォルトの名無しさん:2007/07/16(月) 23:05:22
>>110
あれでできてるんじゃねえのか?
scanfの前に"c2p Message:","p2c Message:"とか
printfをいれて挙動をチェックしろ
123デフォルトの名無しさん:2007/07/16(月) 23:11:52
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4648.txt

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ名とバージョン:Visual Studio .NET 2003
 [3.3] 言語:C
[4] 期限:2007/7/17(火) 10:30
[5] その他の制限:入力はfopen系関数を使用したものではなく、コマンドプロンプトから入力が保存されたテキストファイルを読み込む方法で行うようにしなければならない。

どうかよろしくお願いします。
124デフォルトの名無しさん:2007/07/16(月) 23:16:50
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): メンバx[]の値が定まっているPoint5Dのインスタンスを引数とし,
                その2ノルムを計算して返す関数 Norm を書け.
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:明日まで
[5] その他の制限:無し

問題の意味がいまいち分かりません…orz
よろしくお願いします。
125デフォルトの名無しさん:2007/07/16(月) 23:17:09
>>120
#include <stdio.h>
#include <string.h>

void replace(char *sentence, char *src, char *dest){
    char *ptr;
    int src_len;

    src_len=strlen(src);
    for(;;){
        ptr=strstr(sentence, src);
        if(ptr==NULL) break;
        printf("%.*s%s", ptr-sentence, sentence, dest);
        sentence=ptr+src_len;
    }
    printf("%s", sentence);
}

int main(void){
    char *sentence="僕は20才だ。僕の好きなたべものはお酒だ。";
    char *src="僕", *dest="私";

    replace(sentence, src, dest);

    return 0;
}
126デフォルトの名無しさん:2007/07/16(月) 23:18:52
>>120
#include <stdio.h>
int main(int argc, char **argv)
{
    char *queue;
    int c, qhead = 0, qtail = 0, qsize;
    if (argc < 3)
        return fprintf(stderr, "usage: %s from to\n", argv[0]), 1;
    qsize = strlen(argv[1]);
    queue = malloc(qsize);
    while ((c = getchar()) != EOF) {
        queue[qtail] = c;
        qtail = (qtail + 1) % qsize;
        if (qhead != qtail) continue;
        if (memcmp(&queue[qhead], argv[1], qsize - qhead) == 0
        && memcmp(queue, argv[1] + qsize - qhead, qtail) == 0) {
            fputs(argv[2], stdout);
            qhead = qtail = 0;
        } else {
            putchar(queue[qhead]);
            qhead = (qhead + 1) % qsize;
        }
    }
    while (qhead != qtail) {
        putchar(queue[qhead]);
        qhead = (qhead + 1) % qsize;
    }
    free(queue);
    return 0;
}
127126:2007/07/16(月) 23:21:41
あ。
#include <stdlib.h>
#include <string.h>
もしといて。スマソ。
128デフォルトの名無しさん:2007/07/16(月) 23:28:07
>>125
ありがとうございます。かなりきれいにできていますね。
自分もstrstr ()を使ったのですが、途中でつまってしまいました。
129デフォルトの名無しさん:2007/07/16(月) 23:28:59
>>120 便乗
#include <stdio.h>
#include <string.h>

int main(void)
{
    char buf[1024], rep[2048], word1[32], word2[32], *p = buf, *q = rep;
    scanf("%[^\n]%s%s", buf, word1, word2);
    while(*p){
        if(!strncmp(p, word1, strlen(word1))) strcpy(q, word2), p += strlen(word1), q += strlen(word2);
        else *q++ = *p++;
    }
    *q = '\0';
    puts(rep);
    return 0;
}
130デフォルトの名無しさん:2007/07/16(月) 23:31:06
>>126
すごいですね。こんなやりかたもあったのですか。
131デフォルトの名無しさん:2007/07/16(月) 23:38:44
>>129
検索単語がみつかったら単語の文字の数だけ前に進めてstrcpy()をつかうのですね。
それも考えていたのですが、できそうでできませんでした。
みなさん、ありがとうございました。
132デフォルトの名無しさん:2007/07/16(月) 23:40:48
[1] 授業単元:情報基礎
[2] 問題文:
・1から9までの数字を一回ずつ使った9桁の数字を小町数という。
 自乗した数が小町数となるような自然数をすべて求めるプログラムを作成し
 その数と小町数の両方を出力せよ

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: (明日まで )
[5] その他の制限: 無し



 C言語習いたてで、期限ぎりぎりまでがんばったんですけどダメでした
どなたかよろしくお願いします。
133デフォルトの名無しさん:2007/07/16(月) 23:52:56
昔のスレに同じ質問あった気がするな
13422:2007/07/16(月) 23:54:32
>>25
ありがとうございます。
なんですが、元々のソースを追記修正して今まできたので
一応そのような形でって事になってます。
制限なしと書いていましたが、現在のソースを
やっと作れるか作れないかぐらいのレベルなので
>>25さんのだとまだちょっとわからないことがいろいろとあります。
勉強してみます。ありがとうございました。

135デフォルトの名無しさん:2007/07/17(火) 00:08:28
>>132
#include <stdio.h>
#include <string.h>
int check(unsigned long n)
{
    char f[10] = { '0' };
    for (n = n * n; n > 0; n /= 10)
        f[n % 10] = '1';
    return memcmp(f, "0111111111", 10) == 0;
}
int main(void)
{
    unsigned long n;
    /*
    * 最小小町数 123456789, sqrt(123456789) = 11111.11...
    * 最大小町数 987654321, sqrt(987654321) = 31246.96...
    */
    for (n = 11111; n < 31428; ++n)
        if (check(n))
            printf("%lu * %lu = %lu\n", n, n, n * n);
    return 0;
}
136135:2007/07/17(火) 00:11:09
あ、コメント間違ってら
sqrt(987654321) = 31426.96...
ね、正しくは。
137デフォルトの名無しさん:2007/07/17(火) 00:18:27
>>136
わざわざありがとうございます!
今できる環境にないので明日大学で試してみます
138デフォルトの名無しさん:2007/07/17(火) 01:10:25
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4649.txt
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:本日(17日)まで
[5] その他の制限:無し

よろしくお願いします。
139デフォルトの名無しさん:2007/07/17(火) 01:50:51
>>108
ありがとうございます。
終了条件の部分大変参考になりました。
140デフォルトの名無しさん:2007/07/17(火) 03:38:07
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):迷路の作成(探索)
2次元配列を用いて迷路をつくりSTARTからGOALまでの経路を視覚的にわかるように出力せよ。
(例)壁1 通路0 START8 GOAL9
データ
1 1 1 1 1 1 1 1 1 1
1 9 0 0 0 1 0 1 0 1
1 1 1 1 0 1 0 0 0 1
1 0 1 0 0 1 1 1 0 1
1 0 1 0 1 1 0 0 0 1
1 0 0 0 1 0 0 1 1 1
1 1 0 1 1 0 1 0 0 1
1 0 0 0 1 0 1 0 1 1
1 0 1 0 0 0 0 0 8 1
1 1 1 1 1 1 1 1 1 1
141デフォルトの名無しさん:2007/07/17(火) 03:38:42
続きです
出力結果
**********
*G+++* * *
****+* *
* *++*** *
* *+** *
* ++* ***
**+** * *
* ++* * **
* *+++++S*
**********
[3] 環境
 [3.1] OS:Mac
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:本日(17日)まで
[5] その他の制限:無し

現在奮闘中ですがなかなかできませんorz
よろしくお願いします。
142デフォルトの名無しさん:2007/07/17(火) 04:26:02
>>142
#include <stdio.h>
#define X 10
#define Y 10
int map[X][Y]={ {1,1,1,1,1,1,1,1,1,1}, {1,9,0,0,0,1,0,1,0,1},
{1,1,1,1,0,1,0,0,0,1},{1,0,1,0,0,1,1,1,0,1},
{1,0,1,0,1,1,0,0,0,1},{1,0,0,0,1,0,0,1,1,1},
{1,1,0,1,1,0,1,0,0,1},{1,0,0,0,1,0,1,0,1,1},
{1,0,1,0,0,0,0,0,8,1},{1,1,1,1,1,1,1,1,1,1}};
char expr[]=" *+34567SG";
int next(int x, int y) {
if (map[x][y] == 0) map[x][y] = 2;
if (map[x-1][y] == 9 || map[x-1][y] == 0 && next(x-1, y)) return 1;
if (map[x][y-1] == 9 || map[x][y-1] == 0 && next(x, y-1)) return 1;
if (map[x+1][y] == 9 || map[x+1][y] == 0 && next(x+1, y)) return 1;
if (map[x][y+1] == 9 || map[x][y+1] == 0 && next(x, y+1)) return 1;
if (map[x][y] == 2) map[x][y] = 0;
return 0; }
int main() {
int x, y, r=0;
for (x=0; x<X; x++) for (y=0; y<Y; y++) if (map[x][y] == 8) next(x, y);
for (x=0; x<X; x++) {
for (y=0; y<Y; y++) putchar(expr[map[x][y]]);
putchar('\n');
}
return 0; }
143142:2007/07/17(火) 04:30:54
安価ミスた.orz
144デフォルトの名無しさん:2007/07/17(火) 04:46:27
145デフォルトの名無しさん:2007/07/17(火) 08:50:03
146デフォルトの名無しさん:2007/07/17(火) 09:22:08
>>112
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct{
    char num[128], name[128], adr[128], tel[128];
}Data;

int main(int argc, char *argv[])
{
    Data x[10];
    FILE *fp;
    int i = 0, j;
    char buf[1024], *p, search[128];
    if(argc < 2) fprintf(stderr, "usage : %s string\n", argv[0]), exit(1);
    if((fp = fopen(argv[1], "r")) == NULL) perror(argv[1]), exit(2);
    while(fgets(buf, sizeof(buf), fp) != NULL){
        printf("num : "), scanf("%s", x[i].num);
        if((p = strtok(buf, ",")) != NULL) sscanf(p, "%s", x[i].name);
        if((p = strtok(NULL, ",")) != NULL) sscanf(p, "%s", x[i].adr);
        if((p = strtok(NULL, ",")) != NULL) sscanf(p, "%s", x[i].tel);
        i++;
    }
    for(j = 0; j < i; j++)
        printf("%s %s\n", x[j].num, x[j].name);
    printf("search : "), scanf("%s", search);
    for(j = 0; j < i; j++)
        if(!strcmp(search, x[j].num))
            printf("%s %s %s\n", x[j].name, x[j].adr, x[j].tel);
    return 0;
}
147デフォルトの名無しさん:2007/07/17(火) 11:28:50
[1] 授業単元:IT入門B1
[2] 問題文:繰り返し複素数(実部,虚部はそれぞれ整数型とする)を入力し,ユーザが最後に1 (1+i*0)を入れたら今まで入力した複素数の実部と虚部のペアをすべて出力し,さらに入力した複素数すべての積を出力するプログラムを作成せよ.
なお,ユーザが入力する回数に制限はないものとする.
stdio.hの他にstdlib.hをインクルードしておく必要がある.
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c
[4] 期限:2007年7月30日
[5] その他の制限: 特になし
参考プログラムです→http://www-it.sci.waseda.ac.jp/ITB1/class1/list.c

よろしくお願いします。

148デフォルトの名無しさん:2007/07/17(火) 11:38:25
>>147
検索して死ね
149デフォルトの名無しさん:2007/07/17(火) 11:39:39
[1]授業単元:プログラミング技術III
[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4651.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ: gcc
 [3.3] 言語: C
[4] 期限:7/18まで
[5] その他の制限:特になし

よろしくお願いします
150デフォルトの名無しさん:2007/07/17(火) 13:09:50
[1]授業単元:ゲームV
[2]問題文:数独(wiki参照http://ja.wikipedia.org/wiki/%E6%95%B0%E7%8B%AC)解読プログラム
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ: gcc
 [3.3] 言語: C
[4] 期限:7/20
[5] その他の制限:関数は2つ以下、#include <stdio.h>のみを使用すること

宜しくお願いします
151デフォルトの名無しさん:2007/07/17(火) 13:22:11
>>150
http://www.techfinesse.com/game/sudoku_solver.php
こんなのがあるようだぞ
その制限には引っかかるようだがなw
152デフォルトの名無しさん:2007/07/17(火) 13:30:55
[1] データ構造論
[2]treeprintのプログラムを参考にして木をカッコ表記で表示するプログラムを作り、コマンド X で動作するようにせよ。

/* treeprint() : 2分探索木を根から順にすべて表示する(1行10個毎) */

int num; /* 1行のデータ個数を制御するための変数。*/
void treeprint(void)
{
num= 0;
/* 木の根ノードからサブ関数trprintを用いてプリント開始。*/
trprint(start->right);
}
int trprint(TNODE *p) /* trprint(p) : p の2分木を再帰的にプリント。*/
{
if(p != end){ /* p が終端ノードでないならば */
trprint(p->left); /* pの左部分木を再帰的にプリント。 */
printf("%5d%c",p->key, (++num % 10) ? ' ':'\n'); /* pのkey値を表示。 */
trprint(p->right); /* pの右部分木を再帰的にプリント。 */
}
}
 [3.1] Linux [3.2] gcc 3.4 VC 6.0等 [3.3] C言語
[4] 2007年07月18日12:00まで]
[5] プログラムの中のtreeprintだけ問題文の載せています
よろしくお願いします
153デフォルトの名無しさん:2007/07/17(火) 13:33:01
154 ◆Il0WZuGYWw :2007/07/17(火) 14:47:00
>>150
bsdのportsの中に入ってるお
155デフォルトの名無しさん:2007/07/17(火) 15:36:03
>>150
何の工夫も無い力技だが一応やってみた。
出回っているソースは確実にこれよりはマシだろう。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4656.txt
156デフォルトの名無しさん:2007/07/17(火) 16:23:42
あ、あ、ぼるじょあのほうにカキコしてしまった……
こっちのほうがいいのかな?マルチは怒られますよね?よければ誰かぼるじょあスレ見てください〜〜
157デフォルトの名無しさん:2007/07/17(火) 19:15:37
>>142
遅い時間にも関わらず回答ありがとうございます。
確かに動作できました。
しかしながら関数を3つ作ってとけとのことでしたorz
すみませんがお時間がありましたら回答おねがいします。
問題は>>140-141です
よろしくお願いします<(__)>
158c言語初心者:2007/07/17(火) 20:00:23
授業名:プログラミング1
プリントを渡されてやってこいとのことでした。
問題1
 サイコロを10000回投げたとき、1から6までのそれぞれの目が
何回ずつ出たか調べるプログラムを作成せよ

#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0))

int main(void)
{
int i, j,spot, f[ ?(1) ];

srand(0);
for (j = 1;j <= 6;j++){
f[j] = 0;
}
for( i = 1;i <= 10000; i++){
spot = (int)(6 * uniformrand()) + 1;
[ ?(2) ]
}

return 0;
}

です。どうかよろしくお願いします。
159デフォルトの名無しさん:2007/07/17(火) 20:01:52
C++です
距離の単位にyかmが入力されるともう片方の単位に変換するプログラムです。
ただし、距離を変換する部分は、関数transを定義し、main関数で呼び出すこと。
距離の数値を入れた後に動かなくなるんですが、何が違うのか教えてほしいです。。
よろしくお願いします
#include <iostream>
using namespace std;
double trans(char a,double b)
{
double c;
cin>>a;
cin>>b;
if(a='y')
{
c=b*0.914;
return c;
}
else if(a='m')
{
c=b/0.914;
return c;
}
}
160デフォルトの名無しさん:2007/07/17(火) 20:02:55
続き
int main()
{
char a;
double b;
cout<<"meter or yard -->";
cin>>a;
while(a!='E')
{
cout<<"input data -->";
cin>>b;
{
if(a='y')
{
cout<<b<<" yard --> "<<trans(a,b)<<" meter";
}
else if(a='m')
{
cout<<b<<" meter --> "<<trans(a,b)<<" yard";
}
cout<<"meter or yard -->";
cin>>a;
}
}
return 0;
161デフォルトの名無しさん:2007/07/17(火) 20:04:35
a=='y' にしろ
162デフォルトの名無しさん:2007/07/17(火) 20:05:45
>>158
結果の出力は要らないのか?
163デフォルトの名無しさん:2007/07/17(火) 20:05:48
>>158
#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0))

int main(void)
{
int i, j,spot, f[7];
srand(0);
for (j = 1;j <= 6;j++){
f[j] = 0;
}
for( i = 1;i <= 10000; i++){
spot = (int)(6 * uniformrand()) + 1;
f[spot]++;
}
for(i=1; i<=6; i++) {
printf("%d %d \n",i,f[i]);
}

return 0;
}
164デフォルトの名無しさん:2007/07/17(火) 20:06:15
>158
(1)7
(2)f[spot]++;
165c言語初心者:2007/07/17(火) 20:07:34
たぶん(1),(2)にあてはまるものをいれてこいってことだと思います。
よろしくおねがいします。。
166デフォルトの名無しさん:2007/07/17(火) 20:10:40
>161
改善されませんでした・・・
167デフォルトの名無しさん:2007/07/17(火) 20:14:50
>>159
>>161 に加えて
trans(a,b)で余計に a, b を入力させようとしてるから.
引数で渡してんだから,そこで入力させてどうする.
168c言語初心者:2007/07/17(火) 20:27:54
ありがとうございました
講義名:プログラミング1
プリントを渡されてやってこいとのことでした。よろしくおねがいします
1,2,・・・13の中から5個の数をランダムに選び出すプログラムを作成せよ

#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0))

int a[13];

void RandomPermutation(int n)
{
例題2と同じ


int main(void)
{
int i;

RandomPermutation(13);
for (i = 0;i < (1)? ; i++){
printf("%4d \n", (2)? );
}

return 0;
}
です。(1)(2)の部分をお願いします。『例題2と同じ』という場所は
問題の横に横に例題2というのが乗っていました。だけど、自分はどこからどこまでが例題2
と同じ部分なのかがわからないです。例題2の部分がいるならそれも打ちます。よろしくお願いします。
169デフォルトの名無しさん:2007/07/17(火) 20:37:44
(1)13
(2)a[i]
170デフォルトの名無しさん:2007/07/17(火) 20:41:31
[1] 授業単元:C言語演習
[2] 問題文:
テキストファイルを読み込みたとえばテキストファイルに
3+4=
5*6=
...etc(これは他のその他の数式、etcと直接出力しない)
と書かれていたら画面に
3+4=7
5*6=30
...etc
と出力せよ。
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc )
 [3.3] 言語: (C言語)
[4] 期限: 7月19日
171c言語初心者:2007/07/17(火) 20:46:29
講義名:プログラミング1 プリントを渡されてやってこいとのことでした。よろしくおねがいします
よく切られたトランプから、5枚のカードを選び出すプログラムを作成せよ、
ただし、トランプにはジョーカーは含まれないものとする。
#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0))

int a[ (1)? ];

void RandomPermutation(int n)
{
例題2と同じ


int main(void)
{
int i;

RandomPermutation( (1)? );
for(i = 0; i < 5; i++){
if( (2)? ){
printf("ハート% 4d \n", n (3)? );
}else if ( (4)? ){
printf("ダイア% 4d \n", n (5)? );
}else if ( (6)? ){
      printf("クラブ% 4d \n", n (7)? );
}else{
printf("ハート% 4d \n", n (8)? );
}
return 0;
}
問2もありがとうございました。(1)から(8)までをよろしくお願いします
172デフォルトの名無しさん:2007/07/17(火) 20:47:34
>>170
演算の種類は?
173デフォルトの名無しさん:2007/07/17(火) 21:06:43
>>172
足し算、引き算、割り算、掛け算です。説明不足ですいません。
174スモーク:2007/07/17(火) 21:23:34
こんばんわ。すみません、今度は説明を書いたのでよろしくお願いします。

「1」課題:C言語でコードを記述して実行する。

「2」内容:多分岐型のコードを使って整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力して、その計算結果cを出力するプログラムを作る。
というもの。さらに、実行される計算は和・差・積・商・剰余の5種類とし、
演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で、
表現されるものとする。 演算子にそれ以外の記号が入力された場合は、
エラーメッセージを表示する。
また0による除算の回避も含めるものです。

「3」OS:WINDOWS XP SP2。

「4」バージョン:Visual Studio 2005。

「5」期限:今週の金曜まで。

「6」 コンパイラのバージョン: gcc。

 これでおねがいします。
175デフォルトの名無しさん:2007/07/17(火) 21:23:47
[1] 授業単元: CG入門
[2] 問題文
縦横400ピクセルのスクリーン上に3次元空間の3角形が複数個、投影される。
この3角形についてそれぞれ
@スクリーン上の頂点:(x1,y1)(x2,y2)(x3,y3)
A頂点のZ値(視点から3次元空間までの距離):Z1,Z2,Z3
B三角形の色:(r,g,b)-均一色
が標準入力から与えられるとき、Z−バッファ法に基づいてスクリーン上に三角形を描き
最終結果をppm画像として出力するプログラムを作成せよ。

*必要なデータは標準入力から入力するものとし、かつ複数のB角形に対応させる事
(B角形個数は予め与えてもよい)

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: Visual studio.
 [3.3] 言語: C
[4] 期限: 2007年7月19日 11:00まで

この手のプログラムはスレ違いかもしれないと思いつつも、C言語で書いて来いとのことなので
書き込ませて頂きました。何卒、よろしくお願いします。
176デフォルトの名無しさん:2007/07/17(火) 21:25:47
177デフォルトの名無しさん:2007/07/17(火) 21:28:47
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 線形探索
次の表は、平成19年のお年玉付き年賀葉書の当選番号である。
1等 157788、457190
2等 5161、7093、7485、9614
3等 64、79
手元に届いた年賀状の抽選番号をキーボードから入力し、
当選したかどうかチェックして結果を表示するプログラムを作成する。

当選番号(の下2桁)は、キーの配列に初期値として格納する
キーボードから2桁の数字を入力してターゲットに格納し、線形探索を行う。
探索結果を画面に出力する。当選した場合は何等が当たったか、も出力すること。
【発展】
余力のある人は、下2桁に限らず、全桁を初期値として格納し、当選のチェックを実行するプログラムを作成してみること。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: VB
 [3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: 習ったのは 配列 if-else文 繰り返し ポインタ 線形探索と基礎知識
です。[発展]の方でお願いします。
178デフォルトの名無しさん:2007/07/17(火) 21:37:38
>>174

>>170と同じ人か?

%演算子の分追加、変数名微修正と
コマンドライン引数を指定するとそのファイルから、
指定しないと標準入力から読み取るようにした。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4658.txt
179 ◆y43pIoOHKo :2007/07/17(火) 21:39:12
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
自分の名前をローマ字でキーボードで入力し、文字数を表示させる関数、名前を逆順にする関数を
各自それぞれ定義しプログラムを組みなさい。結果の表示はmainで行い、姓と名の間は1文字
空白を入れること。ただし、変数が文字型、ポインタ型のみの場合の2つに分けてプログラムを組みなさい。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語:C++
[4] 期限: 2007年07月18日10:00まで]
[5] その他の制限:できれば、do-while文及びfor文を使用してお願いします。
180デフォルトの名無しさん:2007/07/17(火) 21:41:12
>>176さん、ありがとうございます。
けどまた説明不足でした…。小数の場合も含みます…。
>>170追加例
ファイル内
1.5+1.5=
3*5=
1.5+2=
出力
1.5+1.5=3
3*5=15
1.5+2=3
何度も説明不足ですいません…。この小数と整数を区別して出力するのが
むずかしいです。よかったらお願いします。
181デフォルトの名無しさん:2007/07/17(火) 21:45:15
>>180
説明し忘れが無いか一度確認したほうがいいと思うよ
小数点以下は切り捨てるとかそういう細かい部分も説明すべきだと思う
182デフォルトの名無しさん:2007/07/17(火) 21:45:22
>>180
aとbの型をdoubleにして、
fscanfの%dを%lfに、
printfの%dを%gにすればおk
183デフォルトの名無しさん:2007/07/17(火) 21:50:56
170です。
>>182さんありがとうございます!!これで完成しました!!
みなさんありがとうございました。%gとは便利な…。
184デフォルトの名無しさん:2007/07/17(火) 21:52:10
そんな事より、今日うちに犬が死んだ。老衰だった
185デフォルトの名無しさん:2007/07/17(火) 21:53:27
>>34>>37
遅くなりましたがありがとうございました。
186デフォルトの名無しさん:2007/07/17(火) 22:01:04
[1] 授業単元: ソフトウェアシステム
[2] 問題文(含コード&リンク):
以下の円周率を2000桁もとめるプログラムを
できるだけ高速に計算できるように改良せよ。

ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4659.txt

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン:分かりません
 [3.3] 言語: C
[4] 期限: 2007年7月18日12:00まで
[5] その他の制限:
マイコン。配布プロラムはマチンの公式を使っている。

若干スレ違いかもしれないですが、よろしくお願いします。
187デフォルトの名無しさん:2007/07/17(火) 22:05:38
>>186
マイコンかWindowsかどっちなんだ。つかマイコンだろうな。
どんな石だか知らんが、これコンパイルして動かせる環境持ってる奴
いないんじゃないか。
188デフォルトの名無しさん:2007/07/17(火) 22:07:21
>>175
よくわからんが、おもむろにCreateWindow()で窓を開く
コンソールアプリをつくれということだろうか。
189デフォルトの名無しさん:2007/07/17(火) 22:09:28
>>187
Windows上で開発してるってことだろ、多分
せめてどんなマイコンを使ってるかわからないと難しいな・・・
190デフォルトの名無しさん:2007/07/17(火) 22:17:30
○×ゲーム
Linuxのプロンプト上でplay
com/man対戦、先攻/後攻を選べる
191デフォルトの名無しさん:2007/07/17(火) 22:20:53
最近三目並べはやってんのかyo
192175:2007/07/17(火) 22:37:33
>>188
アプリと言いますか、コマンドプロンプトで必要な入力を入れていくと
それを適当なソフトで忠実に再現したppm画像に出してくれるものです。
同じ事言ってたらすいませんorz

できれば骨組みだけでも(流れ的な)考えていただけると幸いですm(__)m
193デフォルトの名無しさん:2007/07/17(火) 22:40:26
>>186です

>>187
>>189
説明不足ですいません。

答えになってないかいもしれないですが、この付属のV850基板を使っています。
ttp://www.cqpub.co.jp/interface/contents/2007/200705.htm
194デフォルトの名無しさん:2007/07/17(火) 22:42:40
V850基板なら手元にあるぜ
でもまだソフトインスコしてない・・・
195デフォルトの名無しさん:2007/07/17(火) 22:43:16
>>192
いや、スクリーンに描画しろとか書いてあるからさ。
それを見なかったことにして、PPM画像ファイルを出力するだけなら、
標準Cの範囲のプログラムで出来る話だが、400*400の画面に
描画しろってんなら、窓開いてGUIスレッド起動してって話になるだろう。
196190 ◆Oa0JSQvro2 :2007/07/17(火) 23:14:27
追記です。
期限は木曜夜でお願いします。

よろしくおねがいしますm(__)m
197175:2007/07/17(火) 23:14:34
>>195
なるほどそういう事でしたか…
特に制限などは言われていないので(Cのみとは言われてません)
このスレの趣旨に沿っていないかもと思ったのです。

できれば400X400は後に考えますので、ファイル出力の部分をお願いします。
198デフォルトの名無しさん:2007/07/17(火) 23:36:49
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
 練習13-2(気象情報)
インターネットを利用して出身地の観測開始から現在までの
気象情報を入手し,各年の月別平均気温データを作成する.
作成したファイルから気象データを読み込んで,
  (1)平均気温が最も低い年月と最も高い年月を探索して
    両者の年月と気温をディスプレイに出力する
  (2)年間平均気温を計算し,高い年から順に
    年と年間平均気温をファイルに出力する
プログラムを作成しなさい.

気象庁HP(http://www.jma.go.jp/jma/index.html)参照
[3] 環境
 [3.1] OS: Windows
 [3.2]
 [3.3] 言語:C言語
[4] 期限: 2007年 7月18日の朝
[5] その他の制限: 出身地は神戸でお願いします
199デフォルトの名無しさん:2007/07/17(火) 23:38:00
>>196

>>1のテンプレを漏れなく書け。
200デフォルトの名無しさん:2007/07/17(火) 23:45:39
× 資料なし(欠測) 統計値を求める期間内の観測結果が全て求められなかった場合。
は、どうあつかうんだ?
201デフォルトの名無しさん:2007/07/18(水) 02:31:07
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
longが定義されている数の最大値LONGMAXをもとめろ。
例えば、i=1 を2倍していき、LONGMAXの最大値を求める。
別にこの方法でなくてもいい。各自にまかせる。
ちなみに LONGMAXはおよそ2147483647である。
余裕があるものはdouble などもやることが望ましい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: (gcc2.95-3)
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: (2007年07月25日23:59まで)
[5] その他の制限:無制限
さぐりで下のようなところまでは書きました。
#include <stdio.h>
#define LONGMAX 2147483647
int main(void)
{
long int i,i2;
/*これは0 ... の無限ループ
for(i=1;i<LONGMAX;i*=2)
printf("%d ",i);
*/
for(i=1;;i2=i,i*=2){
printf("%d ",i);
if(i<i2){
printf("%d is LONGMAX\n",i);
break;
}}}
までできましたが、値が少し違い微妙です。
それと、コメントカットしたらなぜ無限ループになるのでしょうか?
これにかなり悩みました。
202デフォルトの名無しさん:2007/07/18(水) 03:17:08
>>201
無限ループの最初の方で止めれば分かるけど 1,2,4,8…1073741828 の次から0になってるはず。
で、その理由は出力される数を2進表現してみれば分かるはず。キーは32ビット。

後半での出力は…少しの違いなのか?

---
#include <stdio.h>
int main(void)
{
unsigned long max = -1;
printf("Unsigned MAX:%ud\n", max);
printf("Signed MAX:%d\n", max >> 1);
return 0;
}
----
203デフォルトの名無しさん:2007/07/18(水) 03:37:53
>>201
2倍していき・・・verで書いてみた

#include <stdio.h>
#include <math.h>
int main(void)
{
int i=0;
long n, tmp;
while( (tmp = pow(2, i)-1) >= 0 ){
n = tmp;
i++;
}
printf("LONG MAX : %d\n", n);
return(0);
}
204デフォルトの名無しさん:2007/07/18(水) 03:54:03
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4660.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限:7/19まで
[5] その他の制限:課題@はwhile文、Aは両方とも構造体、Bは全てポインタと構造体の単元です
@とAは自分が考えたソースを添えてみたので、どこが悪いのかだけでも教えていただけると幸いです
どうかご教授の程お願いします
205デフォルトの名無しさん:2007/07/18(水) 07:36:23
授業単元:プログラミング
問題文(含コード&リンク):
環境
OS:Windows xp
コンパイラ名とバージョン:ボーランド
言語:C
期限:
その他の制限:
テーマ:標準関数の利用
問題1:文字列を入力、英文字とそれ以外を収納する配列に振り分けしなさい
使用する標準関数:isalpha()など
実行画面
文字列入力==>A12H&jfTy8uZ3#
英字:AHjfTyuZ
その他:12&83#

問題2:文字列と削除文字列を入力し、文字列中から削除文字列を排除しなさい
使用する標準関数:strncmp(),strcpy(),strlen()など
実行画面
文字列入力(m1)==>ABCDEFAADABC
削除文字列(m2)==>ABC
結果文字列(m1):DEFAD

注意:配列の使用はm1,m2のみとする
206デフォルトの名無しさん:2007/07/18(水) 07:56:14
>>204
よく見てないけど
@
=< じゃなくて <=
isdigit() -> isdigit(moji)
printf("hogehoge %d"); -> printf("hogehoge %d",); (カンマ)

A
× while(buff = getchar()!="0 0 0"){
whileのなかのsscanfのbufferなんてない
× printf("%4s%4f%4s,stu[j].name,stu[j]height,stu.[j]blood");}
207206:2007/07/18(水) 07:57:21
あー
printf("hogehoge %d"fuga); -> printf("hogehoge %d",fuga); (カンマ)
に訂正です
208デフォルトの名無しさん:2007/07/18(水) 08:10:29
>>186

ttp://www.sra.co.jp/people/miyata/algorithm/multprec.txt

たぶんこれと同じなんやろうけど、どうやったら速くできるんだろう。
209デフォルトの名無しさん:2007/07/18(水) 08:34:24
>>177
奮闘中ですが、できませんorz
お願いします!
210190 ◆Oa0JSQvro2 :2007/07/18(水) 09:12:44
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):○×ゲーム(3目並べ) をプロンプト上で動かす。com/man対戦、先攻後攻は選択可能
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 今週金曜夜
[5] その他の制限: 特になし
211デフォルトの名無しさん:2007/07/18(水) 10:09:46
[1] プログラミング基礎
[2] 検討及び考察」の指示に従って求めた, S/N=3.0 [dB]のときの a. 誤差[%],b. 誤り検出率[%] の数値(有効数字3桁以上)
および実験 2. のために作成したシミュレーションプログラムを使って報告せよ。

詳しいことは次のアドレスに書いてあります。
http://itohws03.ee.noda.tus.ac.jp/~matsuda/programming/final/programming.pdf

[3.1] Unix
[3.2] gcc
[3.3] c
[4] 7月27日(金)
[5] 私の学籍番号の下三桁は080です。
212デフォルトの名無しさん:2007/07/18(水) 10:14:23
どうせその学籍番号は他人のものだろ?
213デフォルトの名無しさん:2007/07/18(水) 10:41:19
>>177
VBではなくVSです
214c言語初心者:2007/07/18(水) 10:56:39
講義名:プログラミング1 … プリントを渡されてやってこいとのことでした。よろしくおねがいします
問3、よく切られたトランプから、5枚のカードを選び出すプログラムを作成せよ、ただし、トランプにはジョーカーは含まれないものとする。
#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1.0))

int a[ (1)? ];

void RandomPermutation(int n)

215c言語初心者:2007/07/18(水) 10:57:29
『続き』

{
例題2と同じ


int main(void)
{
int i;

RandomPermutation( (1)? );
for(i = 0; i < 5; i++){
if( (2)? ){
printf("ハート% 4d \n", n (3)? );
}else if ( (4)? ){
printf("ダイア% 4d \n", n (5)? );
}else if ( (6)? ){
      printf("クラブ% 4d \n", n (7)? );
}else{
printf("ハート% 4d \n", n (8)? );
}
return 0;
}
例題2と同じというところは、プリントの横に例題2というのがあったんですが、どこかどこまでが例題2と同じなのかがわかりませんでした。そこが必要であれば例題2を打つんでよろしくお願いします。(1)から(8)までを回答としてよろしくねがいします。
216デフォルトの名無しさん:2007/07/18(水) 11:07:22
217デフォルトの名無しさん:2007/07/18(水) 11:19:47
>>215
四の五の言わないで全部書き出しな
218デフォルトの名無しさん:2007/07/18(水) 11:21:57
>>175
ですがどうにもうまく三角形が描けませんorz
ファイル出力までで結構ですので、どなたかなにとぞお願いしますm(__)m
219c言語初心者:2007/07/18(水) 11:39:59
>>215
0,1,2, … 、99をランダムに並べる

#include<stdio.h>
#include<stdlib.h>
#define uniformrand()((double)rand() / ((double)RAND_MAX + 1))

int a[100]

220c言語初心者:2007/07/18(水) 11:40:29
続き
void RandomPermutaion(int n)
{
int i, j, z;
for (i = 0; i < n; i++) {
a[i] = i;
}
for(j = n - 1; j > 0; j--) {
i = (int)(j * uniformrend());
z = a[i]; a[i] = a[j]; a[j] =z;
}
}

int main()
{
int n, i;

n = 100;
RandmPermutation(n);
for (i = 0; i < n; i++){
printf("%4d", a[i]);
}
printf("/n");

return 0;
}
が例題2です。よろしくお願いします
221デフォルトの名無しさん:2007/07/18(水) 11:56:24
>>220
できたぞ
つか
 printf("ハート% 4d \n", n (3)? );
とか
 printf("ダイア% 4d \n", n (5)? );
って、問題間違ってないか?
222c言語初心者:2007/07/18(水) 12:00:14
間違ってました。申し訳ありません。
printf("ハート% 4d \n", (3)? );
printf("ダイア% 4d \n", (5)? );

です。
よろしくお願いします。
223デフォルトの名無しさん:2007/07/18(水) 12:07:51
[1] 授業単元: C
[2] 問題文(含コード&リンク):単純選択法
大きさ20の配列keyを用意し、キーボードから値を入力する。
この配列keyの要素を、単純選択法でソートするプログラムを作成せよ。

ただし、ソートの途中経過を画面に出力すること。
また、最後に比較回数を画面に出力すること。

【ヒント】
配列の大きさの指定
#define SIZE 20
単純選択法‥最小の要素を選び、未ソートの部分の先頭の要素と交換する
途中経過‥未ソートの部分が1つ減るたびに(外ループ)出力。
比較回数‥初期値0の変数を用意し、比較のたびに(内ループ)インクリメント。
発展
以下の機能を持つ関数を作成し、利用する形にコードを修正しなさい。

配列要素の入力を行う input_array
配列要素の出力を行う output_array
単純選択法によるソート select_sort
[3] 環境
 [3.1] OS: WindowXP
 [3.2] コンパイラ名とバージョン:VS2005
 [3.3] 言語: C
[4] 期限: いつでも
[5] その他の制限:なし
224デフォルトの名無しさん:2007/07/18(水) 12:09:04
>>223
発展までは書いてみました

#include<stdio.h>
#define SIZE 20
void kadai28()
{ int key[SIZE];
int i, j, p, cnt = 0, w;
for(i = 0; i < SIZE; i++)
scanf("%d", &key[i]);
for(j = 0; j < SIZE; j++)
printf("%3d", key[j]);
printf("\n");
for(i = 0; i < SIZE; i++){
p = i;
for(j = i+1;j < SIZE;j++){
if(key[j] < key[p])
p = j;
cnt++;
}
w = key[p];
key[p] = key[i];
key[i] = w;
for(j = 0; j < SIZE; j++)
printf("%3d", key[j]);
printf("\n");
}
printf("cnt = %d\n", cnt);
return;
}
発展の方お願いしますー
225デフォルトの名無しさん:2007/07/18(水) 12:10:49
[1] プログラム基礎復習
[2] charのみを使用し小数点以下100桁まで計算できる計算機を作る(中学程度)
[3] 環境
 [3.1] Windows2000プロ
 [3.2] gcc
 [3.3] C
[4]7/20
[5]main以外の関数を作ってはいけない

お願いします。さっぱりなので・・・
226デフォルトの名無しさん:2007/07/18(水) 12:13:08
>>225
「+」「-」「*」「/」「√」位かな?
227デフォルトの名無しさん:2007/07/18(水) 12:15:15
>>222
じゃ、パーツだけ教えるよ


a[i]/13==0
a[i]/13==1
a[i]/13==2
a[i]%13
a[i]%13
a[i]%13
a[i]%13

または

n
a[i]&3==0
a[i]&3==1
a[i]&3==2
a[i]/4
a[i]/4
a[i]/4
a[i]/4

好きなほうを使ってくれ
228デフォルトの名無しさん:2007/07/18(水) 12:15:26
>>226
お願いできますか?
charだと256までしか出来ないので積や商がさっぱりで・・・
229c言語初心者:2007/07/18(水) 12:20:22
>>221さん。
頼んでおいて申し訳ないのですが、>>214の回答をよろしくお願いします。
230デフォルトの名無しさん:2007/07/18(水) 12:20:25
>>225
小数点以下でcharってprintf出力で表示される答えが100桁でいいんだよね?
231デフォルトの名無しさん:2007/07/18(水) 12:24:54
>>229
>>227にヒントを書いたんだけど、不服?
232225です:2007/07/18(水) 12:28:13
>>214さん
問題文の意味がよく分からないんですけど
ジョーカーは1枚ですよね?
それでランダムで5枚引くと・・・・


233デフォルトの名無しさん:2007/07/18(水) 12:29:21
>>225
小数点以上は無限大?
234225です:2007/07/18(水) 12:32:02
>>233
指定されていないので 多分無限だと思います
235c言語初心者:2007/07/18(水) 12:33:46
>>231さん
不服なんてとんでもないです。ただ、ヒントもらっても自分が解けないだけです。申し訳ないです。

>>232さん
たぶんジョーカー2枚を抜いた52枚でのことだとおもいます。よろしくお願いします。
236225です:2007/07/18(水) 12:33:59
足し引きはifで100で固めれば簡単に出来ることはわかったんですけど
237デフォルトの名無しさん:2007/07/18(水) 12:34:33
多倍長の実数計算を実装させて
>[5]main以外の関数を作ってはいけない

冗談きつすぎ
238デフォルトの名無しさん:2007/07/18(水) 12:37:24
>>225
100^256 までしかできなくね? 無限じゃネージャン
239デフォルトの名無しさん:2007/07/18(水) 12:38:15
再帰下降も不可、と
240デフォルトの名無しさん:2007/07/18(水) 12:39:19
>>238
勿論char[]で多倍長を実装するんでしょ
そうじゃなきゃそもそも実数すら扱えん
241256です:2007/07/18(水) 12:39:40
ごめんなさい頼る所はココしかないので・・・・orz 
242デフォルトの名無しさん:2007/07/18(水) 12:40:08
未来からの使者か?
243149:2007/07/18(水) 12:58:59
>>153さんのテキストをコンパイルしてみたのですが、

/tmp/ccY67IGB.o(.text+0x163): In function `angle':
: undefined reference to `sqrt'
/tmp/ccY67IGB.o(.text+0x177): In function `angle':
: undefined reference to `sqrt'
/tmp/ccY67IGB.o(.text+0x197): In function `angle':
: undefined reference to `acos'
collect2: ld はステータス 1 で終了しました

と表示されて、./a/out のファイルが作成されなかったのですが
これは何でしょうか・・
244デフォルトの名無しさん:2007/07/18(水) 13:00:17
何方か205お願いします
245デフォルトの名無しさん:2007/07/18(水) 13:01:49
エラーメッセージじゃないかな??
246デフォルトの名無しさん:2007/07/18(水) 13:05:23
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
特定の単語にgoogle 検索のリンクをはるプログラムをつくれ。
例えば、下は「テスト」という単語をgoogle検索したリンク である。
q= 以降は「テスト」という単語がURLエンコード(unicode)された文字列となっている。
http://www.google.co.jp/search?hl=ja&q=%E3%83%86%E3%82%B9%E3%83%88
1. htmlファイルを受け取る
2. 検索リンクにしたいいくつかの指定した単語を受け取る
3. すでにリンク済みの単語に注意しながら、指定した単語をgoogle 検索のリンクにする。
(例)「宿題」をgoogle 検索されたリンクにする。
この宿題ができなかったら単位はあげません。
->
この<a href="http://www.google.co.jp/search?hl=ja&q=%E5%AE%BF%E9%A1%8C">
宿題</a>ができなかったら単位はあげません。
なお、目的を果たせるプログラムだったらこの形式でなくてもかまわない。
余裕がないものは
・検索ワードはURLエンコードの必要のない半角英数等だけでいい。
・受け取った検索ワードはすでにリンクされていないと仮定してもいい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc2.95-3
 [3.3] 言語: C
[4] 期限: (2007年07月31日17:00まで)
[5] その他の制限: 何を使っても構わない
247デフォルトの名無しさん:2007/07/18(水) 13:07:40
>>243
-lmつけると幸せになれる
248デフォルトの名無しさん:2007/07/18(水) 13:08:14

>>225
組むのめんどいからヒントだけあげるよ

現在のCPU能力では「+」と「-」しか演算が出来ない。
「*」「/」はただの演算方法でしかない
例 a*bの場合   int i; for(i=0;i=b;i){a++}


249デフォルトの名無しさん:2007/07/18(水) 13:09:34
>>248
ちょw
250デフォルトの名無しさん:2007/07/18(水) 13:12:39
>>205
何が分からないか分からないんだが・・・・・・・
まんまじゃん


251デフォルトの名無しさん:2007/07/18(水) 13:15:31
>>250
それを言うなwそれ言っちゃこのスレの存在価値がw
252149:2007/07/18(水) 13:37:55
>>247さん
幸せになれましたが、どういう原理なのでしょう?
質問ばっかですいません

書き忘れましたが、153さん・247さんありがとうです
253デフォルトの名無しさん:2007/07/18(水) 13:41:52
>>252
mという数学ライブラリをリンクしたのです。
254デフォルトの名無しさん:2007/07/18(水) 13:42:09
>>248
兄さんそれ掛け算になってません。
forの条件式もアレです。意図は伝わるけど。
255デフォルトの名無しさん:2007/07/18(水) 13:46:27
a*bの場合 int i,n; for(i=0;i<b;i++){n+=a;}
暇ですね。
256デフォルトの名無しさん:2007/07/18(水) 13:47:11
a*bの場合 int i,n=0; for(i=0;i<b;i++){n+=a;}
257デフォルトの名無しさん:2007/07/18(水) 13:48:03
>>252
243のエラーメッセージはソースの中に存在しない関数(sqrtとacos)があって
プログラムを作れないというリンカのエラー。
>>253の言うとおり数学ライブラリをリンク指定すれば
その中に関数sqrtとacosという関数があるからリンクが通る。
258デフォルトの名無しさん:2007/07/18(水) 13:52:06
259デフォルトの名無しさん:2007/07/18(水) 14:02:41
馬鹿は彫っとけ
260デフォルトの名無しさん:2007/07/18(水) 14:04:45
やらないか
261デフォルトの名無しさん:2007/07/18(水) 14:16:34
>>175
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4662.c

入力は各行に(別に各行でなくてもいいけど)
x1 y1 Z1 x2 y2 Z2 x3 y3 Z3 r g b
の順で数値を並べたファイル.
(例)
0 10 10 100 30 10 50 50 100 255 0 0
0 100 20 100 100 20 50 0 20 0 255 0
0 200 30 100 200 30 80 20 15 0 0 255

出力先もコンソールにしてるが,変更したければmain冒頭の
FILE *out = stdout;
を書き換えればいい.

画像はLinuxのxvで確認した.ppm形式はいくつか種類があるようなので問題あるかも.
(注:CGは昔かじった程度なのでzバッファについて根本的な勘違いをしてるかもしれない)
262デフォルトの名無しさん:2007/07/18(水) 14:30:47
>>205
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4663.txt
問題2でstrcpy()(文字列のコピー)の替わりにstrcat(文字列の連結)を使った。
strcpy()を使えと言われても俺の能力じゃムリポ
263デフォルトの名無しさん:2007/07/18(水) 14:33:09
>>262
strccat(a, b) ≡ strcpy(a + strlen(a), b) ≡ strcpy(strchr(a, '\0'), b)
264262:2007/07/18(水) 14:37:06
262の駄文は忘れてくれ
問題2の修正版
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4664.c
265デフォルトの名無しさん:2007/07/18(水) 15:08:56
266デフォルトの名無しさん:2007/07/18(水) 15:18:43
>>262
最後のナル文字にさえ気をつければ便利だし安全だよ。
267デフォルトの名無しさん:2007/07/18(水) 15:19:45
サイズの方が重要かも。
268265:2007/07/18(水) 15:24:25
あ、コメントの処理入れるの忘れた
まあいいや
どうせもともと穴だらけだ
269ヒープ:2007/07/18(水) 15:36:58
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
ヒープソートを用いて、配列に格納された10個の数値データを
大きい順に並び替える。変化がわかるようにソート前と後を出力させる。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 早いとありがたいです
[5] その他の制限: 特にありません
よろしくおねがいします。
270デフォルトの名無しさん:2007/07/18(水) 17:26:12
>>177
#include <stdio.h>

int main(void) {
int i,j,k,sn,flg[3]={0},suka;
int n[3][5]={
{157788,457190,-1},
{5161,7093,7485,9614,-1},
{64,79,-1}
};
printf("Input number > ");
scanf("%d",&sn);
for(i=0,k=1000000; i<3; i++,k/=100) {
for(j=0; n[i][j]>0; j++) {
if(n[i][j]==sn%k) {
flg[i]++;
break;
}
}
}
for(i=0,suka=1; i<3; i++) {
if(flg[i]) {
printf("%d等 \n",i+1);
suka=0;
}
}
if(suka) printf("はずれ\n");
return 0;
}
271デフォルトの名無しさん:2007/07/18(水) 18:07:53
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
2次元配列の中にデータの入ったファイルを読み込んで代入する方法を
main関数ともう1つ関数をつくって作成せよ。
例. box[5][5];の2次元配列にファイルのデータ(ここではdata.txt)を代入
data.txt
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 今日中です
[5] その他の制限: 特にありません
よろしくおねがいします。
272175:2007/07/18(水) 19:53:23
>>261
ありがとうございました!m(__)m
自分でも色々いじってみましたが、思っていた通りの完璧な出来でした。
本当に助かりました!

273デフォルトの名無しさん:2007/07/18(水) 20:09:44
[1] 授業単元:情報活用
[2] 問題文:キーボードから順次入力された正の整数を0が入力されるまで、
配列に順番に格納し、入力された(0を除く)値の平均値(実数として扱うこと)
にもっとも近い値(平均との差が最小となる値)が何番目に入力された
どういう値であるかを表示するプログラムを作成せよ。

例)
数字(1)を入力してください。 2
数字(2)を入力してください。 5
数字(3)を入力してください。 3
数字(4)を入力してください。 1
数字(5)を入力してください。 0
入力された数字の平均は2.75です。
これは、3番目に入力された3に最も近いです。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: [7月19日20:00]
[5] その他の制限:特になし

ギリギリまで頑張ったのですができませんでした。わかる方お願いします
274デフォルトの名無しさん:2007/07/18(水) 20:12:21
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):○×ゲーム(3目並べ) をプロンプト上で動かす。com/man対戦、先攻後攻は選択可能
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 今週金曜
[5] その他の制限: 特になし
275デフォルトの名無しさん:2007/07/18(水) 20:13:01
>>273
なんか前々スレくらいで全く同じ問題に回答した気がする。
276スモーク:2007/07/18(水) 20:17:27
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 問題009
多分岐型
整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力し
、その計算結果cを出力するプログラムを作成しなさい。

実行される計算は和・差・積・商・剰余の5種類とし、
演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で
表現されるものとする。

演算子にそれ以外の記号が入力された場合は
エラーメッセージを表示する。
また0による除算の回避も含めること。

[3] 環境
 3.1] OS: (Windows XP)
 [3.2] コンパイラ名とバージョン: (VS 2005)
 [3.3] 言語:C
[4] 期限: ([2007年07月20日hh:金曜まで]
[5] その他の制限:

課題の数は残り20くらいありますが、半分は片付けました。
しかし、追加されてくるものを回答する時間がもうありません。
どうかよろしくおねがいします。
あなたの能力が便りです。
277デフォルトの名無しさん:2007/07/18(水) 20:20:53
釣りか?
278デフォルトの名無しさん:2007/07/18(水) 20:21:21
除算の結果の小数点以下は?
279デフォルトの名無しさん:2007/07/18(水) 20:25:19
280デフォルトの名無しさん:2007/07/18(水) 20:27:06
[1] 授業単元:情報
[2] 問題文:2次方程式a*x*x + b*x + c = 0の解を求めるプログラムを作成せよ。
係数a,b,cはdouble型で、キーボードから入力するものとする。
虚数解の出力も行うこと。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: あしたまで
[5] その他の制限:ありません

よろしくおねがいします
28122:2007/07/18(水) 20:37:28
名前:デフォルトの名無しさん[sage] 投稿日:2007/07/15(日) 09:55:51
[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク): 問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4668.txt
ソース:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4669.txt

[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語:C言語
[4] 期限:2007/07/19の12:00まで。
[5] その他の制限:特になし

どうにか講師が作らせたかった内容になったらしく問題1と2はOKでました。
最後の問題3です。よろしくお願いいたします。
282スモーク:2007/07/18(水) 20:41:23
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): 問題009
多分岐型
整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力し
、その計算結果cを出力するプログラムを作成しなさい。

実行される計算は和・差・積・商・剰余の5種類とし、
演算子はそれぞれ’+’、’-’、’*’、’/’、’%’で
表現されるものとする。

演算子にそれ以外の記号が入力された場合は
エラーメッセージを表示する。
また0による除算の回避も含めること。

[3] 環境
 3.1] OS: (Windows XP)
 [3.2] コンパイラ名とバージョン: (VS 2005)
 [3.3] 言語:C
[4] 期限: ([2007年07月20日hh:金曜まで]
[5] その他の制限:

課題の数は残り20くらいありますが、半分は片付けました。
しかし、追加されてくるものを回答する時間がもうありません。
どうかよろしくおねがいします。
あなたの能力が便りです。
小数点以下は切り捨てでいいですよ。
とにかく0による除算の回避とあるだけなのでそのとおりで済むはずです。
多少のミスはかまいません。それ以外がうまく機能すればよいです。
また、ほかの問題も載せますのでよろしくお願いします。
283デフォルトの名無しさん:2007/07/18(水) 20:42:52
ここまでくると、嫌がらせとしか思えないな
284デフォルトの名無しさん:2007/07/18(水) 20:43:30
なんか追記の書き方がムカツクのは俺の心が狭いからかな
285デフォルトの名無しさん:2007/07/18(水) 21:07:30
286285:2007/07/18(水) 21:11:36
あー、a=0の時の処理書いてないわ
適当に追加してね
287デフォルトの名無しさん:2007/07/18(水) 21:26:20
>>284
俺も。>>285はキリストかあるいはMだと思う。
288デフォルトの名無しさん:2007/07/18(水) 21:39:00
>>282
#include <stdio.h>
#include <stdlib.h>
int main(void){int a,b,c;char e;if(scanf("%d %d %c",&a,&b,&e)!= 3){
fprintf(stderr, "input error\n");return EXIT_FAILURE;}switch (e) {
case '+': c = a + b; break;case '-': c = a - b; break;
case '*': c = a * b; break;case '/':
case '%':if (b == 0) {fprintf(stderr, "zero divide\n");
return EXIT_FAILURE;}if (e == '/') {c = a / b;} else {c = a % b;}
break;default:fprintf(stderr, "illegal operator\n");return EXIT_FAILURE;}
printf("result = %d", c);
return EXIT_SUCCESS;}
289alsk:2007/07/18(水) 21:56:33
健康についての英語のエッセイを500〜600字程度でお願いしたいのですが…
可能でしょうか?
タバコとか、肥満についてならなんでもいいんで!
290デフォルトの名無しさん:2007/07/18(水) 21:57:11
>>289
スレ違いすぎ。
291デフォルトの名無しさん:2007/07/18(水) 22:00:17
(´-`).。oO(英語で500〜600"字"ってかなり少なくないか?)
292デフォルトの名無しさん:2007/07/18(水) 22:03:32
(´-`).。oO("語"の間違いだろ・・・常考)
293デフォルトの名無しさん:2007/07/18(水) 22:04:01
釣りか単なるマルチだろ…
294デフォルトの名無しさん:2007/07/18(水) 22:40:52
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
次のようにプログラムを作成せよ。前回のプログラムのmainとnumber大域変数は変更しない。
intのスタックを2つ作る(大域変数)。1つのスタックは数値をいれる。もう1つには演算子を表す数をいれる

+→0 弱低
-→1 ↓
*→2 ↓
/→3 強高


#include<stdio.h>
#include<ctype.h>
char *p;char c[100];
int expression(void);
int term(void);
int number(void);
main(){
int ans;
while(1){
printf("Enter expression : ");
fgets(c,90,stdin);
p=&c;

if(*p == '\n')
{break;}
ans=expression();
printf("Answer:%d\n" , ans);
}
}
295デフォルトの名無しさん:2007/07/18(水) 22:42:19
int expression(){
int ans;
ans = term();
while(1){
if(*p == '+'){
*p++;
ans = ans + term();
}
else if(*p == '-'){
*p++;
ans = ans - term();
}
else
break;
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2007年07月19日
[5] その他の制限:特になし
296デフォルトの名無しさん:2007/07/18(水) 23:13:01
>>223
お願いします
297デフォルトの名無しさん:2007/07/18(水) 23:16:30
>>279
回答ありがとうございます。
とてもみやすかったです^^
298デフォルトの名無しさん:2007/07/18(水) 23:24:06
>>297
readfile関数内の int j はいらないから消しといて><
299デフォルトの名無しさん:2007/07/19(木) 00:12:58
>>273

#include <stdio.h>
#include <math.h>
#define N 128
int main(void)
{
int i=0, j, n=0, x[N];
float avg=0.0, tmp;
while(1){
printf("数字(%d)を入力してください。: ", i+1);
scanf("%d", &x[i]);
if(x[i] == 0) break;
avg += x[i];
i++;
if(i == N) break;
}
avg = avg / i;
printf("\n入力された数字の平均は%fです。\n", avg);
tmp = fabs(avg - x[0]);
for(j=1 ; j<i ; j++){
if(tmp > fabs(avg - x[j])){
tmp = fabs(avg - x[j]);
n = j;
}
}
printf("これは、%d番目に入力された%dに最も近いです。\n", n+1, x[n]);
return(0);
}
300デフォルトの名無しさん:2007/07/19(木) 00:33:57
[1] 授業単元:計算機
[2] 問題文(含コード&リンク):
スタックを利用し、入力された文字を逆順に出力するプログラム。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4671.txt
ここまで作ったのですが、ポップアップがうまく出来ません
[3] 環境
 [3.1] OS: (Windows/Linux/等々) windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) bcc32
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限:7/26

どなたかご教授お願いしますorz


301273:2007/07/19(木) 00:47:41
>>299
ありがとうございますmm
明日やってみます。
本当にありがとうございます。
302デフォルトの名無しさん:2007/07/19(木) 00:51:41
303デフォルトの名無しさん:2007/07/19(木) 00:58:09
>>300
よく分からないのだが、
対話的に1文字ずつ文字入力を行い、1文字ずつ取り出したいのか?
それとも、
文字列を入力し、結果の反転文字列を一気に出力したいのか?
304デフォルトの名無しさん:2007/07/19(木) 00:58:15
>300
char x;
scanf("%s", &x);
ってなんだ?
305デフォルトの名無しさん:2007/07/19(木) 01:02:05
>>303
入力は1文字ずつで、出力は1文字ずつ出したり全部出したり出きる様にしたいんです。
306デフォルトの名無しさん:2007/07/19(木) 01:11:28
[1] 授業単元:Cぷろぐらみんぐ
[2] 問題文:複素数a+bi(iは複素数)のn乗を求めて出力するプログラムを作れ。
a,bはdouble型とし、nはint型で、キーボードから入力するものとする。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: はやめでおねがいします
[5] その他の制限:特にないです
307デフォルトの名無しさん:2007/07/19(木) 01:16:07
「はやめ」っていつまでだよ
明日の朝とかもうちょっと具体的に書け
308デフォルトの名無しさん:2007/07/19(木) 01:19:00
[1] 授業単元:プログラミング論
[2] 問題文(含コード&リンク):http://sakuratan.ddo.jp/uploader/source/date44998.txt
                  return ????部分が分かりません。
[3] 環境
 [3.1] OS: (Windows/Linux/等々)WinXP
 [3.2] コンパイラ名とバージョン:VC6
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 今日
[5] その他の制限:なし

よろしくおねがいしますorz
309デフォルトの名無しさん:2007/07/19(木) 01:24:12
なんでいちいち外部に上げるかね
310デフォルトの名無しさん:2007/07/19(木) 01:24:47
>>308
問題文じゃねええええええええええええええええええええええええええええええええええええええええええ
311デフォルトの名無しさん:2007/07/19(木) 01:27:19
>>308
double 型の値を返すんだから、
FXかFX1じゃねえの?

問題文がないしわけがわからんよ
312308:2007/07/19(木) 01:28:11
>>310
問題文がついてないんです・・・
一次正弦関数の補完値を求めたいみたいなんですけど
グーグル先生に聞いてもよく分かりませんでした。
313デフォルトの名無しさん:2007/07/19(木) 01:29:36
は?
問題文がないなら宿題じゃねえじゃん
314デフォルトの名無しさん:2007/07/19(木) 01:30:00
>>306
int main(){
double a,b,t; int n;
scanf("%lf,%lf,%d",&a,&b,&n);
while(--n>0)
t=b,b=2*a*b,a=a*a-t*t;
printf("%g+%gi\n",a,b);
}
315デフォルトの名無しさん:2007/07/19(木) 01:31:47
[1] 授業単元: c言語
[2] 問題文(含コード&リンク):
 整数nを入力し、1〜nまでの整数を使い、n桁の組み合わせを出力する。
同じ整数は2回以上使ってはいけない。
例えば3を入力した場合
012 021 102 120 201 210
を出力したい。


[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 7/23
[5] その他の制限: 特に無し

もうさっぱりです。お願いします。
316308:2007/07/19(木) 01:32:04
>>313
「ここ埋めてきて」と…
317デフォルトの名無しさん:2007/07/19(木) 01:33:24
>>316
俺たちはその「ここ埋めてきて」とか一時正弦関数の補完とか言われてな・・・
もしかして文章で伝えられずに口頭だったから何も書かなかったのか・・・

もうだめぽ
318デフォルトの名無しさん:2007/07/19(木) 01:46:04
>>315
> 整数nを入力し、1〜nまでの整数を使い、n桁の組み合わせを出力する。
...
>例えば3を入力した場合
>012 021 102 120 201 210

この例だったら、1 〜 n じゃなくて 0 〜 n-1 じゃないのか?
319300:2007/07/19(木) 01:46:55
とりあえず1文字ずつ入力して1文字ずつ出力しようとしてみたけど
どうしても最後の文字(1番最初に入力した物)が出力されません。。
配列には入ってるみたいなんだが・・・
320デフォルトの名無しさん:2007/07/19(木) 01:47:47
>>315
n桁ってのは上限はないのか?
321デフォルトの名無しさん:2007/07/19(木) 01:48:52
1違いは良く見直せというのはプログラミングをやる人間にとっての常套句
322 ◆Kt53Ir50Qk :2007/07/19(木) 01:50:39
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
線形リストを用いて過去に素数とわかった数を保存し、指定された数(N)以下の素数を求めるプログラムを作成する。
Nはプログラム実行中に外部から入力できるようにする。
・素数かどうかを判定する際には線形リストに保存されている素数のみ利用する。
・引数として与えた数が、引数として与えられた素数を保存する線形リスト中の素数で割り切れるかどうかを判定する関数を作る。
・順番に小さい数から線形リストに保存してある素数で割り切れるかどうかを判断し、割り切れない場合(素数)は線形リストに加えていく。 [3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC 6.0
 [3.3] 言語: C/C++の違いがわからない
[4] 期限: はやめ
[5] その他の制限: 特になし
わ か り ま せ ん
323デフォルトの名無しさん:2007/07/19(木) 01:53:41
>>318
うっかりしてました。
123 132 213 231 312 321
の間違いです。

>>320
基本的に上限はありませんが、あんまり数が大きいと
馬鹿になりませんので…。
大体5か6くらいまでを想定してます。
324デフォルトの名無しさん:2007/07/19(木) 01:58:48
>>300
変な所は色々あるんだが、とりあえず、
case 3:
while(sp>0){
 sp--;
 printf("%c", Stack[sp]);
}
printf("\n");
break;
325デフォルトの名無しさん:2007/07/19(木) 02:01:00
>>322
最初は線形リストになにも保存されていないと思われるが、どうする?
326 ◆Kt53Ir50Qk :2007/07/19(木) 02:05:05
たぶん、いくつかの素数を入れた素数テーブルを作っておくんだと思いますが、、、
よくわからないです。
↓授業で使った線形プログラム
http://sakuratan.ddo.jp/uploader/source/date45003.txt

327デフォルトの名無しさん:2007/07/19(木) 02:07:59
何?
さくらアップローダーが流行ってるの?
328300:2007/07/19(木) 02:10:22
きったないプログラムだけどなんとか動くようになりました。。。
あとは修正頑張ってみます。
ありがとうございました。
329デフォルトの名無しさん:2007/07/19(木) 02:12:17
>>323
#include <stdio.h>
#define N 6
int nextperm(int p[], int n){
int i, j, t;
i = n - 1;
p[0] = 0;
while (p[i] >= p[i + 1]) i--;
if (i == 0) return 0;
j = n;
while (p[i] >= p[j]) j--;
t = p[i]; p[i] = p[j]; p[j] = t;
i++; j = n;
while (i < j){ t = p[i]; p[i] = p[j]; p[j] = t; i++; j--; }
return 1;
}

int main(){
int i, n, p[N + 1];
do{ scanf("%d", &n); }while(n < 1 || N < n);
for (i = 1; i <= n; i++) p[i] = i;
do{ for (i = 1; i <= n; i++) printf("%d", p[i]); putchar(' '); }while(nextperm(p,n));
return 0;
}
ぐぐって出てきたのほぼそのまんまだから動作原理はシラネ
330デフォルトの名無しさん:2007/07/19(木) 02:23:00
>>300
がんばれ
331デフォルトの名無しさん:2007/07/19(木) 03:01:10
自分で書いたソースを晒して質問するのって、それなりに大変だよな。
宿題丸投げして、回答があっても放置される事が多いけど。
332 ◆Kt53Ir50Qk :2007/07/19(木) 03:13:35
>326 まちがってました。授業でやったのは
http://sakuratan.ddo.jp/uploader/source/date45007.txt
でした。さっきのは自分でぐちゃぐちゃにしたやつでした。
333306:2007/07/19(木) 07:44:56
今日、19日のうちにおねがいします
334デフォルトの名無しさん:2007/07/19(木) 08:53:07
>>329
まさにそのまんまがあったんですね…。
ありがとうがざいます。
335デフォルトの名無しさん:2007/07/19(木) 08:57:12
>>333
もうで照るだろ
336デフォルトの名無しさん:2007/07/19(木) 09:57:38
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
a,b,c,d,eに1〜5の整数を一つずつ入れて
a + b - c * d / e
の結果の最大になる値、最小となる値、そのときのa,b,c,d,eを求めよ。
(算数的に計算するのではなく全パターンをためすこと。)
また、結果は何通りあるかも求めよ。

[3] 環境
 [3.1] OS: (/Linux/)
 [3.2] コンパイラ名とバージョン: (gcc 2.95-2)
 [3.3] 言語: C
[4] 期限: 2007年07月20日17:40
[5] その他の制限: 無し
337デフォルトの名無しさん:2007/07/19(木) 11:08:25
[1] プログラミング
[2] 問題 配列 int a[12]を用意し、a[i] = I ( i=0,1,2,…,10),a[11] = a[0]+a[1]+a[2]+…[10]とせよ
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: C ++
[4]本日まで

問題の意味がよく分からないかもしれませんがよろしくお願いします。
338デフォルトの名無しさん:2007/07/19(木) 11:56:02
339デフォルトの名無しさん:2007/07/19(木) 12:12:46
>>338
ありがとうございます。
ところで、count が120になったのですが、
a + b - c * d / e
のaとbまたはcとdを入れ替えると同じになると思うので
値は5*4*3*2*1通り未満になりませんか?
よくわからないので、もうすこしがんばってみます。
340デフォルトの名無しさん:2007/07/19(木) 12:17:01
>>339
同値になる入れ換えは考慮してない。
必要かな?
341デフォルトの名無しさん:2007/07/19(木) 12:23:35
>>340
どちらかといえばあったほうがいいです。
342デフォルトの名無しさん:2007/07/19(木) 12:25:21
授業単元:プログラミング
問題文(含コード&リンク):
環境
OS:Windows xp
コンパイラ名とバージョン:ボーランド
言語:C
期限:
その他の制限:
テーマ:ポインタの利用
英文字の単語の出題をカウントしなさい
英文字に含まれる単語数は10以下とする
ポインタ配列を使用する
char english[] = "My name is Taro.Your name is Hanako.";

実行画面
My:1
name:2
is:2
Taro:1
Your:1
Hanako:1
343デフォルトの名無しさん:2007/07/19(木) 12:28:13
授業単元:プログラミング
問題文(含コード&リンク):
環境
OS:Windows xp
コンパイラ名とバージョン:ボーランド
言語:C
期限:
その他の制限:
テーマ:ユーザ関数の作成
問題1:2値の最大を求めるユーザ関数を作成しなさい
プロトタイプ宣言:int Max(int dt1,int dt2);
実行画面
数値1を入力==>10
数値2を入力==>15

大きい値:15
344デフォルトの名無しさん:2007/07/19(木) 12:50:24
>>343
#include <stdio.h>

int Max(int dt1,int dt2);

int main(void) {
int a,b,c;

printf("数値1を入力==>");
scanf("%d",&a);
printf("数値2を入力==>");
scanf("%d",&b);

printf("大きい値:%d",Max(a,b));

return 0;
}


int Max(int dt1,int dt2) {
return dt1>dt2 ? dt1 : dt2;
}
345デフォルトの名無しさん:2007/07/19(木) 13:04:30
346デフォルトの名無しさん:2007/07/19(木) 13:25:20
>>345
たとえば
1 +2 -3 *4/ 5
1と2の入れ換えで結果が重複して120の半分の60通りになり
3と4の入れ換えで結果が重複して60の半分の30通りになりそうなので
あっていると思います。
ありがとうございました。
ちなみにこれは算数オリンピックの第一問です。
347デフォルトの名無しさん:2007/07/19(木) 13:31:01
>>346
aとb、cとdの値に順序性を持たせた。
宿題ではないのか?
348デフォルトの名無しさん:2007/07/19(木) 13:42:23
>>347
それをC言語でとかせる宿題です。
349デフォルトの名無しさん:2007/07/19(木) 13:42:49
>>337です。
聞いてみたところどうもfor文を使うらしいのですがどこに使えばいいのか分かりません
よろしくお願いします。
350デフォルトの名無しさん:2007/07/19(木) 13:47:18
>>337>>349
int a[12];
int i;
for(i = 0; i < 11; i++) a[i] = i;
a[11] = 0;
for(i = 0; i < 11; i++) a[11] += a[i];
351デフォルトの名無しさん:2007/07/19(木) 13:48:00
>>337です。
たびたびすみません。
先ほどの問題でデバックの結果がa[11] = a[0]+a[1]+a[2]+…+a[10]と表示できればいいそうです。
よろしくお願いします
352デフォルトの名無しさん:2007/07/19(木) 13:51:54
printf("a[11] = %d\n", a[11]);
353デフォルトの名無しさん:2007/07/19(木) 13:54:06
何方か342お願いします
354デフォルトの名無しさん:2007/07/19(木) 13:55:43
[1]単元:プログラミング
[2]問題:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4675.c
[3]環境
OS:リナックス
コンパイラ:cc
言語:C
[4]期限:来週の水曜日までに

よろしくお願いします.
355デフォルトの名無しさん:2007/07/19(木) 14:06:47
[1]単元:プログラミング
[2]問題:複数人の、名前と不定個の得点を入力し、平均点が50点を超える場合のみ、
名前と平均点を出力するプログラムをつくれ。得点の最大個数は10個である。
平均点は、小数点以下2桁までとせよ。入力は3人のデータとし、得点の入力終了は負数(-1)とする
一応ココまでやりました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4676.c
[3]環境
OS:windows
コンパイラ:bcc32
言語:C
[4]期限:7/20
356デフォルトの名無しさん:2007/07/19(木) 14:06:55
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク)
 
 演算子のオーバーロードにより、複素数a,bの絶対値の大小を与える
 演算子 < を作成せよ。 

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: CC
 [3.3] 言語:C++
[4] 期限: 7月20日

どなたかよろしくお願いします。
357デフォルトの名無しさん:2007/07/19(木) 14:21:04
>>356
#include <complex>
template <typename T>
bool operator<(const std::complex<T>& left, const std::complex<T>& right) {
    return std::abs(left) < std::abs(right);
}
358デフォルトの名無しさん:2007/07/19(木) 14:32:44
誰か >>306 お願いします。
359デフォルトの名無しさん:2007/07/19(木) 14:53:49
>>385
複素数をn乗するってことでおk?
360デフォルトの名無しさん:2007/07/19(木) 14:58:11
予言者か!
361デフォルトの名無しさん:2007/07/19(木) 15:24:32
>>360
書いた自分でワロタ
362デフォルトの名無しさん:2007/07/19(木) 15:39:45
>>359 おkです。
363デフォルトの名無しさん:2007/07/19(木) 15:43:07
授業単元:プログラミング
問題文(含コード&リンク):
環境
OS:Windows xp
コンパイラ名とバージョン:ボーランド
言語:C
期限:
その他の制限:
テーマ:標準関数の利用
問題1:文字列を入力、英文字とそれ以外を収納する配列に振り分けしなさい
使用する標準関数:isalpha()など
実行画面
文字列入力==>A12H&jfTy8uZ3#
英字:AHjfTyuZ
その他:12&83#

問題2:文字列と削除文字列を入力し、文字列中から削除文字列を排除しなさい
使用する標準関数:strncmp(),strcpy(),strlen()など
実行画面
文字列入力(m1)==>ABCDEFAADABC




364デフォルトの名無しさん:2007/07/19(木) 15:55:56
syntax errorってなんですか?
cygwin上でemacsを使ってCのソースの入力してコンパイルしたのですが、
syntax errorとでまして、コンパイルできません^^;

syntax error before '{' token
とでます^^;

基本中の基本かもしれませんが^^;
誰かわかりますか?
365364:2007/07/19(木) 15:59:12
失礼・・・カテ違いでした^^;
366デフォルトの名無しさん:2007/07/19(木) 16:01:42
>>306

#include <stdio.h>

int main(void){
double a, b, prev_a, prev_b, const_a, const_b;
int i, n;

printf("a b n : "); scanf("%lf%lf%d", &a, &b, &n);

const_a = a, const_b = b;
for(i = 1, prev_a = a, prev_b = b; i < n; i++, prev_a = a, prev_b = b){
a = prev_a*const_a - prev_b*const_b;
b = prev_a*const_b + const_a*prev_b;
}

printf("%g + %gi\n", a, b);

return 0;
}
367デフォルトの名無しさん:2007/07/19(木) 16:27:16
>>363
>>205と同じやね。>>262>>264
368デフォルトの名無しさん:2007/07/19(木) 17:12:56
369368:2007/07/19(木) 17:23:40
後、ボーランドで確認してない。よろ
370デフォルトの名無しさん:2007/07/19(木) 17:58:40
[1] 授業単元:プロA
[2] 問題文

  構造体
  struct coord{
float x;
float y;
}
を用い、また、coord.data(内容は以下のようなもの)を作成して、
 
  1.2 3.4
2.1 4.5
3.2 2.1
2.0 4.9
5.3 2.8
1.5 3.2

これらの値をメンバx,yに読み込み、(例えばa.x,a.y,b.x,b.y
又はa[0].x,a[0].yなど好きな変数名を作成すればよい。
構造体はa[0],a[1]のように配列でもよい。
この場合、メンバとはa[0].xなどとして結びつく)
 
  xとyの平均をoutput2.dataに出力するプログラムを作れ。


[3] 環境
 Windows ,CC ,C++
[4] 期限: 7/19 21:00

よろしくお願いします。
371デフォルトの名無しさん:2007/07/19(木) 18:36:25
372デフォルトの名無しさん:2007/07/19(木) 18:46:15
どなたか>>354お願いします
373デフォルトの名無しさん:2007/07/19(木) 19:08:19
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4680.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: BCC 5.5.1
 [3.3] 言語: C
[4] 期限: できればお早めに

お手数ですが宜しくお願いいたします
374デフォルトの名無しさん:2007/07/19(木) 19:25:43
375デフォルトの名無しさん:2007/07/19(木) 19:30:20
376デフォルトの名無しさん:2007/07/19(木) 19:32:59
>>373
下の二つの関数を追加して
int gcd(int a, int b){ // 最大公約数を求める関数
int c;
while((c=a%b)!=0){a=b;b=c;}
return b;
}

int gcd3(int a, int b, int c){
return gcd(gcd(a, b), c);
}

if(gcd3(a, b, c)!=1) // これが成り立つ時はなにかの倍数
377デフォルトの名無しさん:2007/07/19(木) 20:28:26
>>373
問1は、ループをxyz共に1000回ずつ回すのは無駄だから
for(x=1; x<=MAX-2; x++) {
for (y=x+1; y<=MAX-1; y++) {
for (z=y+1; z<=MAX; z++) {
みたいにすれば速くなるよ
問2はできてるんじゃないの?
378デフォルトの名無しさん :2007/07/19(木) 20:48:32
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):実行結果と同じ内容を表示するプログラムの作成

実行結果

+
++
+++
++++
+++++

[3] 環境
 [3.1] OS:Windows Vista Business
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
 [3.3] 言語:C言語
[4] 期限:2007年9月3日
[5] その他の制限:@文字の出力にはprintfを使用し、プログラム中に2回のみ使用できるものとする
Aアルゴリズムはwhile文の2重ループで行うこと
379デフォルトの名無しさん :2007/07/19(木) 20:49:04
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):月(1〜12)と日(1〜31)をキーボードから入力し、入力された日付を表示する
プログラムの作成

実行結果 (「」内の部分はキーボードからの入力)


月を入力:「15」
月の入力は1以上12以下にしてください
月を入力:「8」
日を入力:「46」
日の入力は1以上31以下にしてください
日を入力:「25」
入力された日付は8月25日です

[3] 環境
 [3.1] OS:Windows Vista Business
 [3.2] コンパイラ名とバージョン:Microsoft Visual Studio 2005
 [3.3] 言語:C言語
[4] 期限:2007年9月3日
[5] その他の制限:@月の入力については1〜12で範囲チェックを行い、範囲外の入力だった
場合は、エラーメッセージを表示して再入力させること
A日の入力については1〜31で範囲チェックを行い、範囲外の入力だった
場合は、エラーメッセージを表示して再入力させること
380デフォルトの名無しさん:2007/07/19(木) 20:54:54
>>378
#include <stdio.h>

int main(void)
{
int i=0, j;

while(i < 5){
j = 0;
while(j <= i){
printf("+");
j++;
}
printf("\n");
i++;
}

return(0);
}
381デフォルトの名無しさん:2007/07/19(木) 20:57:13
>>379
終了の条件は?
382デフォルトの名無しさん:2007/07/19(木) 21:04:44
>>377
問2はいきなり7309から始まるんですよ…
383デフォルトの名無しさん:2007/07/19(木) 21:06:37
>>382
いや、それはそれ以前に処理されたものが画面に表示しきれていないだけでは・・・
実際には処理されているよ。
384デフォルトの名無しさん:2007/07/19(木) 21:07:54
>>382
っ a.exe > result.txt

プロンプトのバッファを超えただけと思う
385デフォルトの名無しさん:2007/07/19(木) 21:21:19
294です。おねがいします
386デフォルトの名無しさん :2007/07/19(木) 21:23:49
>>381
何の終了条件ですか?
387デフォルトの名無しさん:2007/07/19(木) 21:32:44
ああ、1周でいいのか
388デフォルトの名無しさん:2007/07/19(木) 21:38:22
>>379

#include <stdio.h>
int main(void){
int m, d, tmp;
while(1){
printf("月を入力:");
scanf("%d", &m);
if(m<1 || m>12) fprintf(stderr, "月の入力は1以上12以下にしてください\n");
else break;
}
switch(m){
case 2:
tmp = 2;
break;
case 4:
case 6:
case 9:
case 11:
tmp = 1;
default:
tmp = 0;
}
while(1){
printf("日を入力:");
scanf("%d", &d);
if(d < 1 || d > 31-tmp) fprintf(stderr, "日の入力は1以上%d以下にしてください\n", 31-tmp);
else break;
}
printf("入力された日付は%d月%d日です\n\n", m, d);
return(0);
}
389デフォルトの名無しさん:2007/07/19(木) 21:44:17
うわあ、switch文でbreak;書き忘れた><
390デフォルトの名無しさん:2007/07/19(木) 22:00:18
>>375
サンクスです☆
391デフォルトの名無しさん:2007/07/19(木) 22:09:26
>>379

#include <stdio.h>
int main(void) {
int month = 0, day = 0;
while (month<1 || 12<month) {
printf("月を入力:");
scanf("%d", &month);
if (month<1 || 12<month) printf("月の入力は1以上12以下にしてください\n");
}
while (day<1 || 31<day) {
printf("日を入力:");
scanf("%d", &day);
if (day<1 || 31<day) printf("日の入力は1以上31以下にしてください\n");
}
printf("入力された日付は%d月%d日です", month, day);
return 0;
}
392デフォルトの名無しさん:2007/07/19(木) 22:22:33
>>294>>295
お願いします
393デフォルトの名無しさん:2007/07/19(木) 23:01:43
>>376 >>377 >>383
ありがとうございました〜!
394体験版ありw:2007/07/19(木) 23:15:53
株式会社リアルクソエイト
http://www.realcreate.net/

WILLTY(ウィルティ)はネットワーク上や
外部媒体からウィルスやハッカーが侵入する際の
異常な電子の動きをキャッチし、コンピュータの入り口で
確実にブロックしてしまうという世界初の画期的な方法が
とられています。

たとえ、ウィルス感染したCD,FD,USBなどをインストールしても、
コンピューターがウィルス感染することはありません。
正常なデーターのみがコンピューター内に取り込まれます。

■ 電源コンセントからの情報漏洩をブロック
WILLTYは電源LANシステムを応用したデーター漏洩やハッキングをブロックします。
コンピュータ電源をコンセントに差し込んだ瞬間から機密情報は丸裸になっています。
LAN上のセキュリティーをどれだけ強固にしても、電源コンセントから
あなたの情報は筒抜けになっています
395デフォルトの名無しさん:2007/07/19(木) 23:16:32
>>393
if ( dvsr >= trg ){
このtrgって、sqrtを取得して比較すれば
素数判定が早くできないかな。

dvsr++;
これも奇数を見るだけで良いのじゃないかな。
チェック対象件数が半減すると覆うよ。
396デフォルトの名無しさん:2007/07/19(木) 23:17:16
↑のソフト使った人感想ちょうだいw


397デフォルトの名無しさん:2007/07/19(木) 23:22:24
ウィルスに感染した電子ってスピンか何かが違うのか?
398デフォルトの名無しさん:2007/07/19(木) 23:24:02
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4662.c

>>261を参考にしながらPPMファイルを出力したいのですが、できません。
環境はWindows xp + cygwinです。
0 10 10 100 30 10 50 50 100 255 0 0
0 100 20 100 100 20 50 0 20 0 255 0
0 200 30 100 200 30 80 20 15 0 0 255
をCygwin上で入力しています。
何がいけないのでしょうか・・
399デフォルトの名無しさん:2007/07/19(木) 23:24:10
>>397
違わないだろw

壮大な釣りソフトw
400デフォルトの名無しさん:2007/07/19(木) 23:53:45
こんなソフト通用すると思ってんのかw
401デフォルトの名無しさん:2007/07/20(金) 00:04:20
>>394
あぶねえ。
俺、“そういう試みをチャレンジしている会社がある”と信じるところだった。
402デフォルトの名無しさん:2007/07/20(金) 00:14:35
そういうウィルスを作れたら、
量子コンピュータどころじゃない、
21世紀最大の発明となる鴨。
遺伝情報の媒体って超ひもあたりでやるのか?
エンコードやデコードどうするのかなw
403デフォルトの名無しさん:2007/07/20(金) 00:45:57
>>294
とりあえずは問題の意味が分からないんだけど、それは置いておいて
>>294>>295に出ているソースをベースにして作らないといけないの?

コンパイルさえできないんだけど。

404デフォルトの名無しさん:2007/07/20(金) 01:58:29
>>294>>295です
書いてあるプログラムのmainとnumber大域変数は変更しないで
intのスタックを2つ作る(大域変数)。
1つのスタックは数値をいれる。もう1つには演算子を表す数をいれます。
405デフォルトの名無しさん:2007/07/20(金) 02:01:27
コンパイルは出来なくてもいいんです。確か1つ引っかかりますよね。
406デフォルトの名無しさん:2007/07/20(金) 06:45:10
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): 問題010
多分岐型(2)
次の説明は冬季オリンピックの開催年についての説明である。

キーボードから変数year に入力された年号について、
開催された年に第何回大会が開催されたか
画面に表示するプログラムを作成しなさい。

また開催年でない場合は、画面にその旨メッセージを出力すること。

【説明】
1924 年の第1 回大会以来、4 年に1 度開催されている。
1992 年の第16 回大会までは夏季大会と同じ年に開催されたが、
1994 年の第17 回大会からは、夏季大会の2 年後に開催されるようになった。
1940 年、1944 年は第二次世界大戦の影響で中止。
次回は2010 年、第21 回大会、カナダのバンクーバーで開催予定。
[3] 環境
 [3.1] OS: Windows;
 [3.2] コンパイラ名とバージョン: (VS)
 [3.3] 言語: C
[4] 期限: ([2007年07月21日まで]
[5] その他の制限:

よろしく。
407デフォルトの名無しさん:2007/07/20(金) 07:02:51
>>406
やだ
408デフォルトの名無しさん:2007/07/20(金) 07:26:01
>>406
ほらよ、とっときな

#include <stdio.h>
int main(void){
int year;
while(1){
printf("年号は?");scanf("%d",&year);
switch(year){
case 1924:puts("第@回");break;
case 1928:puts("第A回");break;
case 1932:puts("第B回");break;
case 1936:puts("第C回");break;
case 1948:puts("第D回");break;
case 1952:puts("第E回");break;
case 1956:puts("第F回");break;
case 1960:puts("第G回");break;
case 1964:puts("第H回");break;
case 1968:puts("第I回");break;
case 1972:puts("第J回");break;
case 1976:puts("第K回");break;
case 1980:puts("第L回");break;
case 1984:puts("第M回");break;
case 1988:puts("第N回");break;
case 1992:puts("第O回");break;
case 1994:puts("第P回");break;
case 1998:puts("第Q回");break;
case 2002:puts("第R回");break;
case 2006:puts("第S回");break;
default:puts("開催されなかった、あるいはどうなるか分かりません。");break;
}}return 0;
}
409デフォルトの名無しさん:2007/07/20(金) 07:27:22
>>405
コンパイル出来ないのは、
「大域変数を変更する」以前の
「書いてあるプログラム」の問題。
410デフォルトの名無しさん:2007/07/20(金) 11:06:04
411タウリン2000mg配合:2007/07/20(金) 11:13:28
[1] 授業単元:計算機プログラミング
[2] 問題文:input7.txtから4×4の行列の要素を読み込み、その逆行列を出力するプログラムを作成せよ。

[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:よくわかりません。
 [3.3] 言語: C言語
[4] 期限: 2007/8/3 まで

http://www.fluid.cse.nagoya-u.ac.jp/~ishihara/c/Sec9prac2.html
を改造して作ればいいという課題です。
抜けてる部分だけ作ればいいんですが、それでもいまいちわかりません。
どなたか親切な方がいたら教えてもらえないでしょうか。
412デフォルトの名無しさん:2007/07/20(金) 11:42:11
413デフォルトの名無しさん:2007/07/20(金) 11:48:58
>>412
どんなソースかと思いきやww
414デフォルトの名無しさん:2007/07/20(金) 13:02:20
アマリニモカワイソスギル
415デフォルトの名無しさん:2007/07/20(金) 13:05:47
>>411
nagoya-u.ac.jpって書いてあるけど、ブラクラ?
416デフォルトの名無しさん:2007/07/20(金) 13:15:02
>>363
#include <stdio.h> #include <string.h> #include <ctype.h>
#define SIZE 500
int main()
{ char English[SIZE] = {'\0'}; char Other[SIZE] = {'\0'};
char buff[SIZE]= {'\0'}; char *temp; int i,j=0,k=0; int len;
fgets(buff,sizeof(buff),stdin); if(temp = strchr(buff, '\n'))
*temp = '\0';
for(i = 0; buff[i] != '\0'; i++){
if(isalpha(buff[i]))
English[j++] = buff[i];
else
Other[k++] = buff[i];
}
printf("English %s Other %s \n",English,Other);

printf("英文字入力\n");
fgets(buff,sizeof(buff),stdin);
if(temp = strchr(buff, '\n'))
*temp = '\0';
printf("削除文字入力\n");
fgets(Other,sizeof(Other),stdin);
if(temp = strchr(Other, '\n'))
*temp = '\0';
len = strlen(Other);
while(temp = strstr(buff,Other)){
memcpy(temp,temp+len,sizeof(buff));
}
printf("削除後 %s \n", buff);

return 0;
}
417デフォルトの名無しさん:2007/07/20(金) 13:17:10
>>415
サンプルソースだ。問題ないと思うが。
418デフォルトの名無しさん:2007/07/20(金) 13:36:14
[1] 授業単元:演習
[2] 問題文:自然数nを入力すると、任意のディレクトリに任意の名前でn個のフォルダを作成するプログラムを作りなさい。
       なお、危険防止のためnの上限は5とする事。
[3] 環境
 [3.1] OS: (Windows)
 [3.2] コンパイラ名とバージョン: (vs)
 [3.3] 言語: (C言語)
[4] 期限:今日中
419デフォルトの名無しさん:2007/07/20(金) 13:38:38
C++の認定試験てあるの?
420デフォルトの名無しさん:2007/07/20(金) 13:52:41
[1] 授業単元: 演習
[2] 問題文(含コード&リンク):
探索パターンと置換パターン、入力ファイル名を引数にとり、
入力ファイルの探索パターンに合致する部分をすべて置換パターンに置き換えるプログラムを作成せよ
パターンにはsedで扱える正規表現のうち、下の部分が使えるように実装せよ

. 改行をのぞく任意の1文字にマッチ
[abc…] aまたはbまたはc…のうちいずれか1文字にマッチ
d*    0個以上のd(dは文字または正規表現)にマッチ
\(str\) 文字列str(strは正規表現を含んでよい)二マッチ
\n    n番目に表れた\(...\)の中の文字列にマッチ (nは1から9の整数)
\c    cに^,$,.,*,[,\をおくことによりそれ自身にマッチ
.*    0個以上の改行を除く任意の文字にマッチ

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 07年7月22日
[5] その他の制限: system()等使わずに正規表現を実装すること
421お願いします!:2007/07/20(金) 13:54:03
「2個のサイコロ振りをシミュレートするCプログラムを書け。1個目のサイコロ振りにも2個目サイコロ振りにも関数randを使い、2つの出目の和を計算する。」
この問題です!よろしくぅお願いします!
422デフォルトの名無しさん:2007/07/20(金) 13:55:20
>>421
#include <stdlib.h>
#include <stdio.h>
int main() {
int a,b;
a = rand() % 6 + 1;
b = rand() % 6 + 1;
printf("%d", a + b);
return 0;
}
423デフォルトの名無しさん:2007/07/20(金) 14:02:04
>>422
ありがとうございますぅ!ただ、何と何が出たか分からないから個別に表示もおながいもうしあげます
424デフォルトの名無しさん:2007/07/20(金) 14:03:22
printf("%d + %d = %d\n", a, b, a + b);
425デフォルトの名無しさん:2007/07/20(金) 14:04:14
>>423
ほれ
#include <stdlib.h>
#include <stdio.h>
int main() {
int a,b;
a = rand() % 6 + 1
printf("a = %d\n", a);
b = rand() % 6 + 1;
printf("b = %d\n", b);
printf("%d", a + b);
return 0;
}
426デフォルトの名無しさん:2007/07/20(金) 14:05:19
おー!すばらしい!!!あと、半か丁か表示できますか??
427デフォルトの名無しさん:2007/07/20(金) 14:10:53
if(a % 2 == 0) printf("aは丁"); else printf("aは半");
if(b % 2 == 0) printf("bは丁"); else printf("bは半");

428デフォルトの名無しさん:2007/07/20(金) 14:11:47
ちがうよ、2個の合計で丁か半か判断するんだってばwww
429デフォルトの名無しさん:2007/07/20(金) 14:12:12
>>426
そろそろ自分でやったらどうだい?
430デフォルトの名無しさん:2007/07/20(金) 14:13:10
if((a + b) % 2 == 0) printf("丁"); else printf("半");
431デフォルトの名無しさん:2007/07/20(金) 14:15:04
あと、掛け金もおながいします
その辺はきでんのセンスで
432デフォルトの名無しさん:2007/07/20(金) 14:20:09
>>431
なんでいっぺにいわないんだい?
自分でやりなさい。
433デフォルトの名無しさん:2007/07/20(金) 14:22:53
>>431
指定の口座に3本ほど振り込んでくれないか
434デフォルトの名無しさん:2007/07/20(金) 14:23:55
お金はないので他のお礼で。。。
435デフォルトの名無しさん:2007/07/20(金) 14:25:16
釣りだろ
436デフォルトの名無しさん:2007/07/20(金) 14:25:25
6カ月分のガス料金を求めましょう
使用料金=基本料金+(1㎥当たりの単価×使用量)

使用量         基本料金     1㎥当たりの単価
25㎥以下       690円     127円
25㎥から500㎥以下 1170円    108円
500㎥より多い    6980円    96円

月の使用量を順番にキーボードから入力する。
使用料金は基本料金+(1㎥当たりの単価×使用量)で計算する。
各月の使用料金を算出して以下のように表示させる。

例)
1gatu 2gatu 3gatu 4gatu 5gatu 6gatu Goukei heikin
Charge 12500 25600 35410 19860 13250 2980s0 1278540 21906
437デフォルトの名無しさん:2007/07/20(金) 14:26:15
>>434
体?でどう?
438デフォルトの名無しさん:2007/07/20(金) 14:27:04
㎥が文字化けしているぞ?
439デフォルトの名無しさん:2007/07/20(金) 14:31:26
int ryokin(int siyou)
{
int kihon, tanka;
if(siyou <= 25) { kihon = 690; tanka = 127; }
else if(siyou <= 500) { kihon = 1170; tanka = 108; }
else { kihon = 6980; tanka = 96; }
return kihon + siyou * tanka;
}
440デフォルトの名無しさん:2007/07/20(金) 14:36:55
>>438 してないお(^ω^)
441デフォルトの名無しさん:2007/07/20(金) 14:38:41
>>437
女でよければ。。
442デフォルトの名無しさん:2007/07/20(金) 14:39:41
int i, siyou[6], charge[6];
int gokei,heikin;
gokei = 0;
for(i = 0; i < 6; i++) {
printf("%d月の使用量:", i);
scanf("%d", &siyou[i]);
charge[i] = ryokin(siyou[i]);
gokei += charge[i];
}
heikin = gokei / 6;
printf("1gatu 2gatu 3gatu 4gatu 5gatu 6gatu Goukei heikin \n");
printf("Charge");
for(i = 0; i < 6; i++) printf("%6d", charge[i]);
printf("%6d", gokei);
printf("%6d\n", heikin);
443デフォルトの名無しさん:2007/07/20(金) 14:41:16
>>441はやっぱなし!高校生だし
444デフォルトの名無しさん:2007/07/20(金) 14:47:10
>>443
えええええええええええええええええええええええええええええええ
ええええええええええええええええええええええええええええええ
えええええええええええええええええええええええええええええ
ええええええええええええええええええええええええええええ
えええええええええええええええええええええええええええ
ええええええええええええええええええええええええええ
えええええええええええええええええええええええええ
ええええええええええええええええええええええええ
えええええええええええええええええええええええ
ええええええええええええええええええええええ
えええええええええええええええええええええ
ええええええええええええええええええええ
えええええええええええええええええええ
ええええええええええええええええええ
えええええええええええええええええ
ええええええええええええええええ
えええええええええええええええ
ええええええええええええええ
えええええええええええええ
ええええええええええええ
えええええええええええ
ええええええええええ
えええええええええ
ええええええええ
えええええええ
ええええええ
えええええ
ええええ
えええ
ええ
445デフォルトの名無しさん:2007/07/20(金) 14:50:05
>>444
for(int i = 0; i < 31; i++) {
for(int j = 0; j < 31 - i; j++) printf("え");
puts("");
}
446デフォルトの名無しさん:2007/07/20(金) 14:50:29
>>445
実はもう書いてあったw
447デフォルトの名無しさん:2007/07/20(金) 14:57:14
なにこの流れ
448デフォルトの名無しさん:2007/07/20(金) 15:13:49
あと、>>418も私です
お礼はできませんが、ほんとお願いします
449デフォルトの名無しさん:2007/07/20(金) 15:16:18
名前は指定なしで勝手にきめていいの?
450デフォルトの名無しさん:2007/07/20(金) 15:16:57
指定しないほうがありがたいです☆
451 ◆DpMW3bRjps :2007/07/20(金) 15:26:22
[1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):任意の文字列を入力し、その文字列の中に任意の文字が何個入っているかを出力する
               プログラムのソースコードを提出しなさい。
                
              実行例)
              文字列を入力してください
              yamamotoyama
              さがす文字を入力してください
              y
              入力された文字列の中に指定された文字は2個あります


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年07月23日17時まで
[5] その他の制限:今回初めて文字配列というものを習いました!春から初めた初心者です
         よろしくお願いします!!
452デフォルトの名無しさん:2007/07/20(金) 15:41:33
>>451

#include <stdio.h>

#define N 128

int main(void)
{
char target, str[N];
int i, count=0;

printf("文字列を入力してください\n> ");
gets(str);
printf("さがす文字を入力してください\n> ");
gets(&target);

for(i=0 ; i<N ; i++){
if( str[i] == target ) count++;
}

printf("\n入力された文字列の中に指定された文字は%d個あります\n", count);

return(0);
}
453デフォルトの名無しさん:2007/07/20(金) 16:02:07
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4686.txt
[3] 環境
 [3.1] OS: (Windows/Linux/等々) 自宅はWindows、学内はLinux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) 自宅:Microsoft Framework SDK 学内:gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月21日まで(おそらく日付変わるまでなら大丈夫)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
基本的に情報系の高校生でも組めるようなプログラムにしていただけると助かります。
多少複雑になってもいいので、できるだけ基本的な命令(ifとかfor)でお願いします
454 ◆DpMW3bRjps :2007/07/20(金) 16:25:21
>>451さんへ
ありがとうございます!!
455 ◆UoNQqijD4I :2007/07/20(金) 17:08:04
>452ですが。今コンパイルしたら下のようにエラーがでました(><)

/tmp/cc2eSWqP.o(.text+0x38): In function `main':
: warning: the `gets' function is dangerous and should not be used.
456デフォルトの名無しさん:2007/07/20(金) 17:13:46
内容:
[1] 授業単元:C++
[2] 問題文 文字列の長さを計算する関数を作成せよ
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
 [3.3] 言語: C++
[4] 期限: (20日18:00まで]
[5] その他の制限: 以下の内容に手を加えて欲しいのですが・・・
#include <stdio.h>
#define MAX 100
string_length(char str[MAX]);
int main(void){
int i,string_len;
char string[MAX];
printf("入力:");
scanf("%s",string);
printf("文字列の大きさは%dです。",string_length(string));
return(0);
}
int string_legth(char str[MAX]){
int i;
int str_len;
for(i=0;str[i]!='\0';i++);{
}
str_len=i;
return(str_len);
}
Error: 外部シンボル '_string_length' が未解決
と、出て四苦八苦してるのでよろしくお願いします
457デフォルトの名無しさん:2007/07/20(金) 17:15:06
>>455
ワーニングだ
fgetsに帰ればおk
458デフォルトの名無しさん:2007/07/20(金) 17:16:07
> char target, str[N];
> gets(&target);
コレは幾らなんでもマズい
459デフォルトの名無しさん:2007/07/20(金) 17:19:11
>>456
- string_length(char str[MAX]);
+ int string_length(char str[MAX]);

- int string_legth(char str[MAX]){
+ int string_length(char str[MAX]){
460456 :2007/07/20(金) 17:22:01
>>459さん
ありがとうございます。俺が間抜けでした!!
レポート出してきます!!
461デフォルトの名無しさん:2007/07/20(金) 18:32:36
462電通女 ◆v1Uy5WkQ7k :2007/07/20(金) 19:41:06
試験勉強中です…付き合ってくださる師匠様募集中…

[1] 授業単元:関数を自作する
[2] 問題文:n!を計算するプログラムを作る
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ名とバージョン:???
 [3.3] 言語:C++ …なんですけど、先生はいつもC言語と混ざっている気がする。

#include <stdio.h>
int kaijo(int n)
{
int ans,i;
ans=i;
for(i=1;i<=n;i++) ans*=i;
return ans;
}
int main(void)
{
int n,k;
printf("n="); scanf("&d",&n);
k=kaijo(n);
printf("%d!=%d\n",n,k);
return 1;
}

とやってみたら、

n=5
10494432!=0

となってしまって…。
463デフォルトの名無しさん:2007/07/20(金) 19:44:44
scanf("&d",&n);をscanf("%d",&n);に変えると幸せになれる
464デフォルトの名無しさん:2007/07/20(金) 19:47:59
kaijo()もおかしいから、それだけじゃ幸せにはなれない
465デフォルトの名無しさん:2007/07/20(金) 19:52:57
順を追って考えろ
int ans, i;

このときのansの値とiの値は特に決められていない
だからans = i;
としたところで何も意味がない
ans = 定数にしてやれ
466電通女 ◆v1Uy5WkQ7k :2007/07/20(金) 19:53:09
>>463
それだけで幸せになれました。ありがとうございます。
またわからないとこが出てきたら来ます。
467デフォルトの名無しさん:2007/07/20(金) 19:55:12
これで電通かよ・・・
大阪電気通信大学の間違いじゃないのか・・・
468デフォルトの名無しさん:2007/07/20(金) 19:58:03
>>462
一緒に幸せになろう
469電通女 ◆v1Uy5WkQ7k :2007/07/20(金) 19:59:05
いや、私は電気通信大学じゃないですよw
電気通信大学意以外でも電通って訳すところ、以外とたくさんあるようで。
470デフォルトの名無しさん:2007/07/20(金) 20:03:29
[1] 授業単元: 情報演習基礎
[2] 問題文(含コード&リンク):

・ 区間[ a, b ]において連続なる関数f ( x) について,定積分の計算を行う。
・適用する式は,シンプソンの公式f ( x)=1/(1+x2)とする。
・a=0, b=100, e=0.0000001の場合の積分値とnの値を表示する
・各変数(nを除く)の型はdoubleとする

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ名とバージョン: visualstudio2005
 [3.3] 言語:C++
[4] 期限: 2007 7/22
[5] その他の制限:標準ライブラリは禁止

よろしくおねがいします。
471デフォルトの名無しさん:2007/07/20(金) 20:05:12
>>470
printfも使っちゃだめなのか?w
472電通女 ◆v1Uy5WkQ7k :2007/07/20(金) 20:08:25
#include <stdio.h>

int add(int a,int b)
{
int c=a+b;
a=100;b=200;
return c;
}

int main(void)
{
int a,b,c;
a=1;b=2;c=add(a,b);
printf("%d+%d=%d\n",a,b,c);
return 1;
}

これの実行結果が1+2=3になるんですけど、最初の方の100も200も消えちゃってるってことですか?
473デフォルトの名無しさん:2007/07/20(金) 20:12:04
>>472
関数の中で宣言した変数は関数を抜けると消えてなくなるよ?
474デフォルトの名無しさん:2007/07/20(金) 20:17:42
ここは宿題スレであって質問スレではないから
質問をしたいなら質問スレに行け。
475電通女 ◆v1Uy5WkQ7k :2007/07/20(金) 20:23:41
おっと、すみません。
初心者歓迎スレに移行しまする。
476デフォルトの名無しさん:2007/07/20(金) 20:23:42
477 ◆UoNQqijD4I :2007/07/20(金) 20:27:13
>>457さん、fgetsに変えたのにまだエラーがでます泣
478 ◆UoNQqijD4I :2007/07/20(金) 20:30:25
>477ですが、ちなみに今度はこんなエラーです
tin.c: 関数 `main' 内:
tin.c:12: error: too few arguments to function `fgets'
tin.c:14: error: too few arguments to function `fgets'
tin.c:16: error: `gcc' undeclared (first use in this function)
tin.c:16: error: (Each undeclared identifier is reported only once
tin.c:16: error: for each function it appears in.)
tin.c:16: error: 文法エラー before "for"
tin.c:16: error: 文法エラー before ')' token
tin.c: トップレベル:
tin.c:20: error: 文法エラー before string constant
tin.c:20: 警告: conflicting types for built-in function `printf'
tin.c:20: 警告: data definition has no type or storage class
479デフォルトの名無しさん:2007/07/20(金) 20:33:22
>>471
ttp://www.geocities.jp/ky_webid/cpp/library/000.html
こういうやつのつもりで言ったんですが、違うんですか?
課題が出るときに標準ライブラリ禁止といわれただけなので、よくわからないです
480デフォルトの名無しさん:2007/07/20(金) 20:35:13
>>478
いやゴメン、使い方はオンラインマニュアルなりで確認しようね
とりあえず
fgets(buf, sizeof(buf), stdin);
にすればおk

あと>>458
481480:2007/07/20(金) 20:35:50
bufじゃなかった、strだった
482デフォルトの名無しさん:2007/07/20(金) 20:49:02
finを思い出した。
483電通女 ◆v1Uy5WkQ7k :2007/07/20(金) 20:57:35
スイマセンこれは宿題なんでこっちで教えてください。
1+2+3+…+nをつくるんですが、

#include <stdio.h>

int sum(int n)
{
int ans,i;
ans=i;
for(i=0;i<=n;i++) ans+=i;
return ans;
}

int main(void)
{
int n,s;
printf("n="); scanf("%d",&n);
s=sum(n);
printf("1から%dまでの和は%dです。\n",n,s);
return 1;
}

こうしたら実行結果が

n=5
1から5までの和は16です。

となってしまったんですが、どこで1増えてしまってるんでしょうか?
484デフォルトの名無しさん:2007/07/20(金) 20:59:16
>>483
よく見てないけど、sum()の中の
ans=i;

485デフォルトの名無しさん:2007/07/20(金) 20:59:42
ans=i;をans=0;に変えると幸せになれる
486デフォルトの名無しさん:2007/07/20(金) 20:59:44
>>483
>ans=i;
何を代入してるんだ。
487電通女 ◆v1Uy5WkQ7k :2007/07/20(金) 21:00:39
ああ!
ans=0;
ですね!ありがとうございました!
488デフォルトの名無しさん:2007/07/20(金) 21:11:04
上に書いてあったのに読んでないんだな
489デフォルトの名無しさん:2007/07/20(金) 21:19:48
宿題を人に投げる人間なんてそんなもん。
490デフォルトの名無しさん:2007/07/20(金) 21:20:35
ans=iはans=1の写し間違いだとesp
491電通女 ◆v1Uy5WkQ7k :2007/07/20(金) 21:38:53
おお、なるほど。
492デフォルトの名無しさん:2007/07/20(金) 21:44:31
コピペに移し間違いなんt
493デフォルトの名無しさん:2007/07/20(金) 22:48:16
>>479
C言語にprintf関数やputs関数など、多数の関数群(標準ライブラリ関数)があるように

よく読んだか?
494デフォルトの名無しさん:2007/07/20(金) 22:49:58
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
次のようにプログラムを作成せよ。以下のプログラムのmainとnumber大域変数は変更しないで、
intのスタックを2つ作る(大域変数)。1つのスタックは数値をいれる。もう1つには演算子を表す数をいれる

#include<stdio.h>
#include<ctype.h>
char *p;char c[100];
int expression(void);
int term(void);
int number(void);
main(){
int ans;
while(1){
printf("Enter expression : ");
fgets(c,90,stdin);
p=&c;

if(*p == '\n')
{break;}
ans=expression();
printf("Answer:%d\n" , ans);
}
}
495デフォルトの名無しさん:2007/07/20(金) 22:50:48
int expression(){
int ans;
ans = term();
while(1){
if(*p == '+'){
*p++;
ans = ans + term();
}
else if(*p == '-'){
*p++;
ans = ans - term();
}
else
break;
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:2007年07月21日
[5] その他の制限:特になし
496デフォルトの名無しさん:2007/07/20(金) 22:55:05
>>494
翻訳ソフトにかけた日本語みたいだな。さっぱりわからん。
497デフォルトの名無しさん:2007/07/20(金) 22:56:27
>>494
こんな問題出す糞教官は死んだ方がいいな
498デフォルトの名無しさん:2007/07/20(金) 22:58:10
>>493
読み飛ばして勘違いしていました
すみません

>>470は標準ライブラリではなく
C++標準ライブラリです
499デフォルトの名無しさん:2007/07/20(金) 23:01:05
>>494
問題文は?
500デフォルトの名無しさん:2007/07/20(金) 23:02:02
>>498
std::coutとかも標準ライブラリじゃねぇの?
501デフォルトの名無しさん:2007/07/20(金) 23:23:13
必要なものはアセンブラで組めと
502デフォルトの名無しさん:2007/07/20(金) 23:24:09
>>494です
書いたプログラムのmainとnumber大域変数は変更しないで、
intが2つのに変えます。1つにはスタックは数値をいれて、もう1つには演算子を表す数をいれます。
それで、+−*/を出来るようにします。
例えば
+の時は0
-の時は1
*の時は2
/の時は3 を入れるそうです。
503デフォルトの名無しさん:2007/07/20(金) 23:24:54
日本語でおk
504デフォルトの名無しさん:2007/07/20(金) 23:29:52
>>1
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

ってあるから標準ライブラリ使うなって言うトチ狂った事が多発するんじゃね?
ここで
[5] その他の制限: (どこまで習っているか、ある特定の標準ライブラリ関数は使ってはいけない等々)

って書いとけばちょっとはマシになるのでは?
505デフォルトの名無しさん:2007/07/20(金) 23:30:58
別にどうでも良い。
スルーするなり、非標準の関数を用いるなり、好きにすれば良いじゃん。
506デフォルトの名無しさん:2007/07/20(金) 23:31:08
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4691.txt
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限: 7/23
[5] その他の制限: 特になし

よろしくお願いします
507デフォルトの名無しさん:2007/07/20(金) 23:34:06
[5] その他の制限:(#include<stdio.h>は使ってはいけない等々)
[6] どこまで習っているか (for文を習いました等々)

もっと具体的に、そして分けたほうがいいんじゃないか?
508デフォルトの名無しさん:2007/07/20(金) 23:39:25
>>494
括弧は使うの?
509デフォルトの名無しさん:2007/07/20(金) 23:41:46
>>507
んなコマいこと言ってたらキリが無い
510デフォルトの名無しさん:2007/07/20(金) 23:44:49
>>508
括弧はどこの括弧ですか?大域変数なら、その大域変数を用いて
プログラムを作成するみたいです
511デフォルトの名無しさん:2007/07/20(金) 23:45:05
>>506
再帰

int fib(int n) {
if (n == 0) return 0;
else if (n == 1) return 1;
else return fib(n-1) + fib(n-2);
}

非再帰

int fib(int n) {
int a = 0;
int b = 1;
while (n > 0) {
int t = a+b;
a = b;
b = t;
n = n-1;
}
return a;
}
512508:2007/07/20(金) 23:48:54
>>494, 510
入力する式で括弧を使うかってこと
513デフォルトの名無しさん:2007/07/20(金) 23:52:35
>>506
そのフィボナッチ数列あってる?
初項と第2項は共に1じゃなかったっけ?
514デフォルトの名無しさん:2007/07/20(金) 23:55:37
>>513
fib(1)とfib(2)を1にしたいんじゃないかな
そうすっと、fib(0)を0にしてfib(1)を1にするとちょうどよくなる
515デフォルトの名無しさん:2007/07/21(土) 00:03:37
>>512
括弧は使っても使わなくても大丈夫です。
とにかく、問題文の内容を使い動けばいいみたいです
516デフォルトの名無しさん:2007/07/21(土) 00:04:58
>>506

#include <stdio.h>
int fib1(int n) { //再帰
if (n == 0) return 0;
else if (n == 1) return 1;
else return fib1(n-1) + fib1(n-2);
}
int fib2(int n) { //非再帰
int a = 0;
int b = 1;
while (n > 0) {
int t = a+b;
a = b;
b = t;
n = n-1;
}
return a;
}
int main(void) {
int n[] = {10, 20, 30, 40, 45};
int i;
for (i=0;i<5;i++) printf("%d ", fib1(n[i]));
putchar('\n');
for (i=0;i<5;i++) printf("%d ", fib2(n[i]));
putchar('\n');
return 0;
}
517デフォルトの名無しさん:2007/07/21(土) 00:20:07
>>515
>以下のプログラムのmainとnumber大域変数
mainとnumberは大域変数なのか?

>とにかく、問題文の内容を使い動けばいいみたいです
前スレで回答があったんだがな。気がつかなかった?
518デフォルトの名無しさん:2007/07/21(土) 00:51:20
>>511 >>516
ありがとうございました
参考にさせてもらいます
519デフォルトの名無しさん:2007/07/21(土) 02:36:41

3目並べのプログラムです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4692.c

何度も対戦できるようにするために列の判定の配列を初期化するようにしたらコンパイルエラーが出るようになってしまいました。
頭の中がぐちゃぐちゃになってきたので、アドバイス等いただければと思います。

正常にプログラムを実行したとき、先攻or後攻を決めることになりますが
また実装はしていませんのでお飾り状態です。
520デフォルトの名無しさん:2007/07/21(土) 02:39:33
>>517
以下のプログラムのmainとnumber大域変数は変更しないで、
1つのスタックは数値ともう1つには演算子を表す数を大域変数にすればいいと
思います

521デフォルトの名無しさん:2007/07/21(土) 02:50:35
>>520
mainは大域変数なのか?
522デフォルトの名無しさん:2007/07/21(土) 02:58:09
>>519
酔っぱらっているので、ロジックはチェックできないがw

まず、変数と関数に同じcheckを割り当てることを止めろ。
配列={0}とできるのは、配列変数の宣言をする時。
それ以外の箇所で初期化したいなら、
ループで各要素に0を代入するか、
>memset(area,sizeof(area),0);
とかするといいぞ。
523デフォルトの名無しさん:2007/07/21(土) 03:18:49
>>520
宿題の回答を依頼したいなら、
使う用語は理解してからにしてくれ。

大域をpublicと言う意味で使うにしても、
mainやnumberは変数ではないよ。
スタックと言う言葉の意味は分かっているのか?
依頼したい内容が、そもそも通じてないから、
回答が無いのじゃないかな?
524デフォルトの名無しさん:2007/07/21(土) 03:27:57
>>521>>523
あやふやな言い方ですいません。mainとnumber大域変数は変更しないで、
intのスタックを2つ作りたいです。
1つのスタックは数値をいれる。
もう1つには演算子を表す数をいれる。です。

よろしくお願いします
525デフォルトの名無しさん:2007/07/21(土) 03:36:44
>>519
battle→put→battleって流れがあるからずっと対戦続けてるとばぐるよ。
int check[8]がグローバルである必要が無い。check関数内のみでOK。
もちろん名前は>522の言うように別でw

あと、do-whileですっきりしそうなところがいっぱいある。
別に直さなくても動くから無視してくれていいけど。
526デフォルトの名無しさん:2007/07/21(土) 03:36:51
だから、そもそもmainは変数じゃないって。
変数じゃない物を、変更できる訳はないよ。
あなたが言う「スタック」とは何なのか
説明してくれないと、意味が分からない。
527526:2007/07/21(土) 03:39:36
振り先は>>524です。orz
528デフォルトの名無しさん:2007/07/21(土) 03:41:46
>>524
あやふやな言い方を直したつもりなのか同じことを繰り返しているぞw
元のプログラムに「number大域変数」というものが存在しない。
よって変更するしないとかいう意味がわからない。
提示したプログラムだが途中までしかコピペしていないんじゃないか?
break;なんかで終わってるしterm関数が見当たらない。
529デフォルトの名無しさん:2007/07/21(土) 03:44:40
>>526
スタックはおそらくそのままスタックでいいかと。
2つってのが引っかかるが演算子と数値で2つ作るんだろう。
「1+2-3」って入力ならスタックA「1 2 3」スタックB「+ -」になって
popA popB popAの演算をスタックがなくなるまで行う。
って感じでエスパーしてみた。

乗除に対応しようとした時点で破綻する設計だなw
530526:2007/07/21(土) 03:54:08
この問題、奇特な人が回答しているんだが。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4615.c
依頼者はこれが気に入らないのかな。
もちろん、この時の依頼者は別人かも試練。
だが、「スタックで実装しろ」の言う意味は
理解してからにして欲しい。
531519:2007/07/21(土) 03:55:30
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4693.c

checkをローカルに戻してareaの再初期化をforに変更しました。
プログラムを実行すると、途中でうまく配置できていない感じになってしまいます。

先攻後攻は先ほどと同じく未実装です。
532デフォルトの名無しさん:2007/07/21(土) 03:57:18
すいませんでした。
プログラムが途中でした。
}
return(ans);
}
int number(void){ //数値データ
int i=0;
while (isdigit(*p)){
i = i*10+(*p++)-48;
}
return(i);
}
533デフォルトの名無しさん:2007/07/21(土) 03:58:33
とりあいずmainとnumberは変更しないで、
intのスタックを2つ作る。
1つのスタックは数値をいれる。
もう1つには演算子を表す数をいれる。です。
534デフォルトの名無しさん:2007/07/21(土) 04:00:58
>>530さん
書き込みが食い違いになってしまいすいません。
535526:2007/07/21(土) 04:02:18
だから、スタックって何?
536デフォルトの名無しさん:2007/07/21(土) 04:05:17
whileをintだけで書けってことをいいたいのか?
537526:2007/07/21(土) 04:07:07
>>533
「演算子を表す数」を定義してくれ
538デフォルトの名無しさん:2007/07/21(土) 04:07:33
あれか?それともint使ってとにかく数値をいれるのと
演算子を表す数のを作ればいいのか?
539526:2007/07/21(土) 04:13:19
要件定義ができないなら、それでも良いが、
どういう物を作って欲しいのか、理解可能な表現にして下さい。
少なくとも宿題をそのまんま書いてくれないと、espの領域になる。
540デフォルトの名無しさん:2007/07/21(土) 04:17:12
演算子を表す数ですか?
一応黒板に書いてあったのを書き込みました
541デフォルトの名無しさん:2007/07/21(土) 04:19:48
確か+が一番弱く/が一番強くなるように作ると言っていました
542デフォルトの名無しさん:2007/07/21(土) 04:20:14
>>531
print関数がおかしい。
ループ部分を以下みたいにしてみ。
for(i=0;i<9;i++){
if(area[i] == 0)
printf(" ");
else if(area[i] == 1)
printf("○");
else if(area[i] == 4)
printf("×");
else
printf("as");
printf("|");
if ( i % 3 == 2 )
printf("\n");
}
とりあえずは動くよ。
543526:2007/07/21(土) 04:21:36
>>531で示した回答にどういう不満があるのか、
せめてそれだけども答えてくれ。

>演算子を表す数ですか?
>一応黒板に書いてあったのを書き込みました
見落としたかも知れないから、
演算子と定数の対応表を再掲してくれ。
544526:2007/07/21(土) 04:23:51
スタックの定義も提示してくれ。
545519:2007/07/21(土) 04:31:10
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4694.c

>>542
挙動は正常になったようなのですが
2度目以降の対戦がうまく動作しません・・・(´・ω・`)
area[]の初期化は出来ていると思うのですが・・・


>>543
レスアン間違ってないですか?
546519:2007/07/21(土) 04:33:00
初期化できてなかったですね・・・^^;
すいません、みすってました
547526:2007/07/21(土) 04:35:27
>>541
宿題の意味が分からないなら、>>531で宿題の回答にしたらいい。
この回答に不満があるなら、
この回答のどこが設問と違うか、提示すればいいだけだと思うが。
548519:2007/07/21(土) 04:41:21
526さんは何を言ってるんでしょうか?

私ともう一人質問をされてる方がいるんだとおもんですが・・・?

私は3目並べの話をしてるんですが?
549526:2007/07/21(土) 04:46:50
>>548 気にしないで下さい。あなたの推察通りです。

済まん、酔っぱらいだ
>>547で書いた>>541>>540の間違いだ。訂正する。
550519:2007/07/21(土) 05:08:59
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4695.c

先攻or後攻も考慮してみました。

課題の指示としては
1,二人対戦・com対戦可能
2,毎回com/man対戦・終了を選ぶ

というものです。

このプログラムでみたせてるでしょうか?

私の中ではOKだとは思うのですが

できてねーぞごるぁ! とかあればおねがいします
551デフォルトの名無しさん:2007/07/21(土) 05:14:31
【即会い!!】

私自身が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。
↓↓↓
【ブログ 〜即出会えるサイト】http://deaigets.blog97.fc2.com/
552519:2007/07/21(土) 05:18:33

もう一つ指示があったのを忘れていました。

・戦歴の表示

というのがあったので、追加しました
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4695.c

評価お願いします。
553519:2007/07/21(土) 05:22:51
何度もすみません、凡ミスがあったので修正しました。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4696.c
554デフォルトの名無しさん:2007/07/21(土) 07:22:22
とても丁寧な読みやすいコーディングだね。
ソース流し読みしただけだけど敢えて問題があるとするなら
ループでscanfを使ってるくらい?
555デフォルトの名無しさん:2007/07/21(土) 09:35:31
>>519
良くできてると思いますよ。
556519:2007/07/21(土) 10:06:42
ありがとうございました。
557 ◆yb5ufjhaCo :2007/07/21(土) 11:21:02
すいません、あんまりわからないので、教えてください。
ほんとに初歩の質問ですいません

1] 授業単元: プログラミング基礎
[2] 問題文(含コード&リンク):
<次のプログラムの断片は誤りを含んでいるところがある。
その誤りの理由を述べ、正しい動作をするようにその箇所を修正した
プログラム断片全てを書け。ただし無関係のところまで変えないこと。

[3] 環境
 [3.1] OS: Linuxです
 [3.2] コンパイラ名とバージョン: gcc です
 [3.3] 言語: Cでお願いします。
[4] 期限: 25日いっぱいまでです。
558 ◆yb5ufjhaCo :2007/07/21(土) 11:22:35
すいません。問題忘れてました…
(1)
if(c = '\0')
n++;

(2)
while(c = getchar() !=EOF)
putchar(c);

(3)
for(i = 0; i < 10; j++){
total += i;
}

(4)
switch(c){
case 'y':
state = 1;
case 'n':
state = 0;
default:
state = -1;
}

お願いします…
559 ◆yb5ufjhaCo :2007/07/21(土) 11:23:13
(5)
if(k = 0)
1++;
else
1--;


(6)
for (i = 0; i < 8; j++){
b[i] -= a[i+j];
}

(7)
switch(c){
case 'y':
count--;
case 'n':
count++;
default:
break;
}
560デフォルトの名無しさん:2007/07/21(土) 11:28:31
1:=
2:(c=getchar())
3:無限るーっぷって怖くね?
4:break;
5:=, 1++, 1--
6:3に同じ
7:break;

違うかも
561519:2007/07/21(土) 13:07:12
comが1Pのリーチを阻止できるようにしたいのですが、
どういうコードを書けばいいでしょうか?
562 ◆M2clACoxQA :2007/07/21(土) 13:28:04
[1] 授業単元: プログラミング 基礎
[2] 問題文(含コード&リンク):
#include <stdio.h>

int main(void)
{
int i = 1;
int j = 0;

do{
j = j + i;
i += 2;
}while(i<=99);

printf("1から99までの奇数の総数は%dです。\n", j);

return 0;
}

以上の「奇数の総和」を求めるプログラムを関数化して作成しなさい。
開始値と終了値を引数として使用し、main関数で確認する。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: visual studio2005
 [3.3] 言語: C言語
[4] 期限: 2007年7月21日15:00まで
[5] その他の制限:
習ったのは、if-else文 do-while文 for文。
sum関数を使うと言っていました。
まだ習いたてなので、あまり難しいのはわかりません。
よろしくお願いします・・・
563デフォルトの名無しさん:2007/07/21(土) 13:32:20
>>562
お前さんのところで作ったsum関数とやらは知らんがそれ見ながらdo{}whileの処理を
sum関数の要領でmain文の外に追い出せばいいだけ。
564 ◆M2clACoxQA :2007/07/21(土) 13:40:18
>>563
なるほど・・・そういうことだったんですね。
変に難しいことを考えてしまいました^^;
親切に教えてくださり、ありがとう御座いました!!
565デフォルトの名無しさん:2007/07/21(土) 14:13:55
>>547
エラーで書けなくなった為遅くなりました。
checkはまだ習っていません。何通りかやり方があると
言っていたので他にも実行するプログラムはありますか?
何度もあやふやな言い方だと迷惑だと思うので、友達に確認してから
もう一度書き込みします。
よろしくお願いします
566デフォルトの名無しさん:2007/07/21(土) 14:31:37
習ってないも糞もおまいさんの作った関数だろうから習ってないとか意味不明。
授業中に提示された関数をただ使ってるだけだならちゃんと話聞いとけ馬鹿で終了だし。

他に実行できるプログラムはあると言えるけど、
>>519の要件満たせばいいだけならプログラマの数だけやり方はあると言えるから、
質問自体の意味がない。

何がしたいのかはっきりすればどうすればいいのか言えるけど、
何がしたいのかを言わないようじゃエスパーに頼るしかないし。
567519:2007/07/21(土) 14:37:48
>>566

私は565じゃないですよ!!!!!
568デフォルトの名無しさん:2007/07/21(土) 14:42:14
>>565
お前さんが>>494なら、>>547>>594にあるとおり、ただの勘違いのようだから
スルー汁
>>530のレスは読んだのか?
569568:2007/07/21(土) 14:43:13
×>>547>>594にあるとおり
>>547>>549にあるとおり
570デフォルトの名無しさん:2007/07/21(土) 14:48:50
なんかここんとこgdgd説教したりそんなんじゃ相手に伝わらないよ俺はわからんよって
だったらgdgdレスしてないで答えなきゃ良いじょのいこっ(えなり君風に)
571デフォルトの名無しさん:2007/07/21(土) 15:04:37
>>568
>>530は読みました。>>530自体が問題のプログラムで。

問題は、/*-+の順に計算できるようにする。そのためにint2つ作る。
1つは数字、1つは記号(/*-+)
572デフォルトの名無しさん:2007/07/21(土) 15:11:11
>>420をお願いします
573519:2007/07/21(土) 15:17:54
私が質問している3目並べは
>>561をおねがいします!
574デフォルトの名無しさん:2007/07/21(土) 15:48:08
>>573
check関数内で、check変数の値が2になっているラインに置けばいい。
ってか、checkの名前がかぶってるのをやめたほうがいいって言われてなかった?
575デフォルトの名無しさん:2007/07/21(土) 16:01:30
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
整数n、rを入力し全組み合わせを配列に配置するプログラムを作成しなさい。
例えばn=4,r=2の場合
{{1,2},{1,3},{1,4},{2,3},{2,4},{3,4}}
となる。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 7/25
[5] その他の制限: 特に無し

画面に出力するだけなら何とかなりそうなんですが配列に入れるとなると
もう何がなんだか…
576デフォルトの名無しさん:2007/07/21(土) 16:06:56
>>575
配列なんて出てくるか?
2重ループで一発だと思うんだが?違う?
577デフォルトの名無しさん:2007/07/21(土) 16:08:30
お前は何を言ってるんだ
578デフォルトの名無しさん:2007/07/21(土) 16:16:34
適当に大きめの2次配列に入れるなり、
動的確保するなりして入れればいいだけじゃないか。
表示できるなら配置もできるだろ。
579デフォルトの名無しさん:2007/07/21(土) 16:20:31
【即会い!!】

私自身が使用してみて、即出会えた出会い系サイトを紹介するブログ始めました。
2chと併用して使える良質な即日系サイトのみを厳選して薦めております。

フリメ登録OKなサイトを拡充しました!
↓↓↓
【ブログ 〜即出会えるサイト】http://deaigets.blog97.fc2.com/
580デフォルトの名無しさん:2007/07/21(土) 16:34:05
>>494
最小限の実装.変な式を入れたときにどうなるかは知らない.
<変更点>
・以下のグローバル変数を追加
int ops[100], vals[100], optop, valtop;

・term()は使わないので消していい

・expression() の内容を以下に変更
int expression() {
valtop = optop = -1;
vals[++valtop] = number();
while (1) {
int opcode;
if (*p == '+') opcode = 1;
else if (*p == '-') opcode = 2;
else if (*p == '*') opcode = 3;
else if (*p == '/') opcode = 4;
else opcode = 0;
while (optop >= 0 && ops[optop] >= opcode) {
if (ops[optop] == 1) vals[valtop-1] += vals[valtop];
if (ops[optop] == 2) vals[valtop-1] -= vals[valtop];
if (ops[optop] == 3) vals[valtop-1] *= vals[valtop];
if (ops[optop] == 4) vals[valtop-1] /= vals[valtop];
valtop--; optop--;}
if (opcode == 0) break;
ops[++optop] = opcode;
*p++;
vals[++valtop] = number();}
if (valtop != 0) printf("some error\n");
return vals[0];}
581デフォルトの名無しさん:2007/07/21(土) 16:40:46
>>578
なんで2次配列なのか小一時間問い詰めたい
582デフォルトの名無しさん:2007/07/21(土) 16:44:54
>>576
なんで2重ループなのか小一時間問い詰めたい
583デフォルトの名無しさん:2007/07/21(土) 16:55:27
>>578
表示できるといっても再帰で表示させてるんで
うまいこと添字があわなくて…
配列に配置させるのに利用できないんです
584デフォルトの名無しさん:2007/07/21(土) 17:16:20
>>453 俺もやってみた。クソースだがw
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4698.c
585519:2007/07/21(土) 17:31:19
>>574
名前が被ってるというと?
586デフォルトの名無しさん:2007/07/21(土) 17:43:21
>>575
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4699.txt
2次元配列ではなくポインタ配列だが。
587デフォルトの名無しさん:2007/07/21(土) 17:44:29
>>585
関数と変数が同じ名前ってこと。
問題ないけどソース読みづらい。
588デフォルトの名無しさん:2007/07/21(土) 18:28:35
[1] 授業単元: C言語入門
[2] 問題文(含コード&リンク):
ゼータ関数は次式で定義される。

   ζ(s) = (1/n^s)

s=6のとき、π^6/945に収束する。これを確認するプログラムを作製せよ。
ただし、級数の和を無限個とるのではなく、有限の範囲内で(n=100)で計算せよ。

条件1:倍精度型で計算し、6パターン以上は比較できるようにすること。
条件2:二重ループを使うこと。そのため、外側ループでは初期値をmとして,
nまでm刻みで値を変更し、内側ループでは該当する値に応じたゼータ関数値を算定できるようにコーティングせよ。(例えば、n=1000と、m=100に設定した場合、nの値を10パターン変化させることができる。)

[3] 環境
 [3.1] OS:MAC OS X
 [3.2] コンパイラ名 gcc
 [3.3] 言語:C
[4] 期限:来週の月曜日まで
[5] その他の制限: とくに無し

条件が多いですが、よろしくお願いします。

589デフォルトの名無しさん:2007/07/21(土) 18:43:31
それ7/18までじゃなかったっけ?
590デフォルトの名無しさん:2007/07/21(土) 19:03:58
>>587
同じ名前で変数と関数があったら、
普通、再定義エラーにならないか?
591デフォルトの名無しさん:2007/07/21(土) 19:14:43
グローバルとローカルの違いってCの基礎じゃないの?
592デフォルトの名無しさん:2007/07/21(土) 19:20:33
グローバル変数と関数が同じ名前だったんだが。
593デフォルトの名無しさん:2007/07/21(土) 19:22:03
ローカルでも普通にエラーでるんじゃね?
594デフォルトの名無しさん:2007/07/21(土) 19:23:01
っていうか>>519の最新が553?
595593:2007/07/21(土) 19:25:33
さっき>>553で名前被りエラー出なかったからあのレス忘れてくれ。
596デフォルトの名無しさん:2007/07/21(土) 19:29:31
最新にしてはエラーや警告出まくるんだけどw
で、comに考える力を与えてみた。

int com_put(){

int input;

do{
input = rand()%9;
}while(area[input] != 0);

if (area[0] + area[1] + area[2] == 8) input = (area[0] == 0)*0 + (area[1] == 0)*1 + (area[2] == 0)*2;
else if(area[3] + area[4] + area[5] == 8) input = (area[3] == 0)*3 + (area[4] == 0)*4 + (area[5] == 0)*5;
else if(area[6] + area[7] + area[8] == 8) input = (area[6] == 0)*6 + (area[7] == 0)*7 + (area[8] == 0)*8;
else if(area[0] + area[3] + area[6] == 8) input = (area[0] == 0)*0 + (area[3] == 0)*3 + (area[6] == 0)*6;
else if(area[1] + area[4] + area[7] == 8) input = (area[1] == 0)*1 + (area[4] == 0)*4 + (area[7] == 0)*7;
else if(area[2] + area[5] + area[8] == 8) input = (area[2] == 0)*2 + (area[5] == 0)*5 + (area[8] == 0)*8;
else if(area[0] + area[4] + area[8] == 8) input = (area[0] == 0)*0 + (area[4] == 0)*4 + (area[8] == 0)*8;
else if(area[2] + area[4] + area[6] == 8) input = (area[2] == 0)*2 + (area[4] == 0)*4 + (area[6] == 0)*6;
else if(area[0] + area[1] + area[2] == 2) input = (area[0] == 0)*0 + (area[1] == 0)*1 + (area[2] == 0)*2;
else if(area[3] + area[4] + area[5] == 2) input = (area[3] == 0)*3 + (area[4] == 0)*4 + (area[5] == 0)*5;
else if(area[6] + area[7] + area[8] == 2) input = (area[6] == 0)*6 + (area[7] == 0)*7 + (area[8] == 0)*8;
else if(area[0] + area[3] + area[6] == 2) input = (area[0] == 0)*0 + (area[3] == 0)*3 + (area[6] == 0)*6;
else if(area[1] + area[4] + area[7] == 2) input = (area[1] == 0)*1 + (area[4] == 0)*4 + (area[7] == 0)*7;
else if(area[2] + area[5] + area[8] == 2) input = (area[2] == 0)*2 + (area[5] == 0)*5 + (area[8] == 0)*8;
else if(area[0] + area[4] + area[8] == 2) input = (area[0] == 0)*0 + (area[4] == 0)*4 + (area[8] == 0)*8;
else if(area[2] + area[4] + area[6] == 2) input = (area[2] == 0)*2 + (area[4] == 0)*4 + (area[6] == 0)*6;

area[input] = 4;

}
597デフォルトの名無しさん:2007/07/21(土) 21:56:05
>>586
どうもありがとうございます。
なんか今更情報科にきたことを後悔…
複雑になると頭がこんがらがる
598デフォルトの名無しさん:2007/07/21(土) 22:32:47
[1]単元:プログラミング
[2]問題:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4700.txt
[3]環境
  OS:リナックス
  コンパイラ:gcc
言語:C
[4]7月23日
 よろしくお願いします。
599デフォルトの名無しさん:2007/07/21(土) 22:41:33
>>588 MinGWで。Macで動くか知りません
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
int i, j, s = 6, n = 100, m = 10;
double d = 0;
for(i = m; i <= n; i += m) {
for(j = i-m+1; j < i; j++) d += 1/pow(j,s);
printf("n = %i\t:\t%.15f\n", i, d);
}
printf("π^6/945:\t%.15f\n", pow(M_PI,s)/945);
return 0;
}
600デフォルトの名無しさん:2007/07/21(土) 22:55:00
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):以下のプログラムのmainとnumberは変更しないで、
intのスタックを2つ作る。1つは数値をいれる。もう1つには演算子を表す数をいれる
#include <stdio.h> #include <stdlib.h> #include <ctype.h>
char *p; char c[100]; int expression(void);int term(void);
int number(void);main(){ int ans;while(1){
printf("Enter expression : ");fgets(c,90,stdin);
p=c;if(*p == '\n') break;ans = expression();
printf("Answer:%d\n", ans);}}int expression(){
int ans;ans = term();while(1){if(*p == '+'){
p++;ans = ans + term();}else if(*p == '-'){
p++;ans = ans - term();}else break;}
return(ans);}int term(){int ans,x;ans = number();
while(1){if(*p == '*'){p++;ans = ans * number();}
else if(*p == '/'){p++;x = number();
if(x == 0){printf("Division by 0\n");
exit(1);}ans = ans / x;}
else break;}return(ans);}
int number(){int i=0;while (isdigit(*p)){i=i*10+(*p++)-48;}
return(i);}
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 年07月23日
[5] その他の制限: 特になし
601デフォルトの名無しさん:2007/07/21(土) 23:04:37
いい加減にしろよカス
602デフォルトの名無しさん:2007/07/21(土) 23:09:04
>>600
インクルードくらいは改行しなよ、ナス!
603デフォルトの名無しさん:2007/07/21(土) 23:26:13
>>602
600です。すいません。改行が多いと言われてしまったので。
確かに読みずらいですよね。でも、お願いします。
604デフォルトの名無しさん:2007/07/21(土) 23:27:08
>>603
上のほう見ろ、答えあるから
605デフォルトの名無しさん:2007/07/21(土) 23:33:42
>>603
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
606519:2007/07/21(土) 23:34:53
>>553で、私の環境では特にエラー出ませんでした^^;

>>596さんのやつはどういう挙動になるんですか?
607デフォルトの名無しさん:2007/07/21(土) 23:38:59
608デフォルトの名無しさん:2007/07/21(土) 23:42:11
>>606
エラーはカンマとピリオドを打ち間違ってるところ、
警告は戻り地が無い関数なのにintで宣言してるところ。
609デフォルトの名無しさん:2007/07/21(土) 23:47:36
>>604>>605
同じ書き込みがあったんですね。
ありがとうございます
610デフォルトの名無しさん:2007/07/21(土) 23:54:29
>>606
あれで動くってどんな環境だよwww
611デフォルトの名無しさん:2007/07/22(日) 00:02:17
>>607
助かりました☆
612デフォルトの名無しさん:2007/07/22(日) 00:02:55
>>607
ここ> animal=(animal+direction+road_size)%road_size;
と、ここ> fp=fileopen("data");
仕様と違うと思う
613デフォルトの名無しさん:2007/07/22(日) 00:06:51
>>598
道の右端と左端はつながってないの?

>>612
ファイル名の data1.txt data2.txt data3.txt ... になるんだけどどの辺が違う?
614デフォルトの名無しさん:2007/07/22(日) 00:19:46
>>612 プログラムの冒頭に「系列ファイル文字列」をキーボードから入力するってあるので

同じだけど一応オレも。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4702.c
615デフォルトの名無しさん:2007/07/22(日) 00:28:05
>>614
thx
見落としてた

>>598
>>607 はキーボードからの入力になってないので >>614 をどうぞ
616デフォルトの名無しさん:2007/07/22(日) 00:33:28
>>607 は他にも間違いがある…orz

関数 fileopen 中の
fclose(fp);

else fclose(fp);
617デフォルトの名無しさん:2007/07/22(日) 00:49:50
UPする前に質問します
C言語の筆記問題はスレ違いになるのでしょうか?
618デフォルトの名無しさん:2007/07/22(日) 00:50:34
スレ違いではないとおもうけど、食指が動かない
619デフォルトの名無しさん:2007/07/22(日) 00:51:12
別にいいんでね?質問する前にUPして欲しい。
すれ違いなら優しいおじさんが誘導してくれるかもしれない。
620617:2007/07/22(日) 00:58:38
レスありがとうございます
食指は動かないかもしれませんが、後でUPしてみます
621デフォルトの名無しさん:2007/07/22(日) 01:10:02
後でって、さっさとうpしろよw
みんな寝ちゃうぞ
622デフォルトの名無しさん:2007/07/22(日) 01:23:50
2 4 6 30 32 34 36 40 42 44 46 50 52 54 56 60 62 64 66

この数列の、20項以降を表示させる関数を作れといわれたのですが
分かりませんでした
623デフォルトの名無しさん:2007/07/22(日) 01:28:07
>>622
0は入らないのか?10台、20台は入らないのか?
数列の並びがよくわからん。
624617:2007/07/22(日) 01:30:15
筆記問題なので、注意してくださいませ

[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク):
http://www-2ch.net:8080/up/download/1185034647068718.NcCDgq
※jpegファイルが6つ入ってます(No1〜No6)
 No3〜No6までが、今回やってもらいたいファイルです
 No1とNo2は自分でも問題無かったので入れる必要は無かったのですが
 テスト形式なので(100点満点)、中途半端に抜かすのもどうかと思い入れました
 
[3] 環境
 [3.1] OS:windowsXP
 [3.2] コンパイラ名とバージョン:Visual studio.2005
 [3.3] 言語:C言語
[4] 期限:23日のAM1時くらいまでが好ましいですが、25日くらいまで大丈夫です
[5] その他の制限:
625デフォルトの名無しさん:2007/07/22(日) 01:56:58
>>622
それ英語のなぞなぞ (答えTwo thousands)
626デフォルトの名無しさん:2007/07/22(日) 02:06:35
1時なんかもう過ぎてるだろボケ
・・・ボケは私です。
4-1 for(i=0;i<N;i++)b[i]=a[i]; 4-2 1
5-1 t1.a+t1.b; 5-2 5
6-1 4 6-2 7
7-1 return y; 7-2 (a)5 (b)20
8-1 (a) i=0; (b) (i<10) (c) += 8-2 84 8-3 6.800000 + 11.200000 i
8-4 (a) NULL (b)cellp->next 8-5 (a) b==0 (b) gcd( b, a%b )
9-1 変数 9-2 型 9-3 typedef 9-4 定義 9-5 桁オチ 9-6 情報欠落

かなりテキトー。特に用語のあたりとか。
627デフォルトの名無しさん:2007/07/22(日) 02:10:56
>>622
答えは >>625 の言葉でググったら出てきたけど
プログラムで書こうとすると難しいよ
628デフォルトの名無しさん:2007/07/22(日) 02:16:26
>>624
No.3
[4]
(1) : (a) 0 (b) N (c) b[i] = a[i]
(2) : (a) 1
[5]
(a) t1.a + t1.b (b) 5
[6]
(a) 4 (b) 7
[7]
・・・・・・・もうめんどくせ
629デフォルトの名無しさん:2007/07/22(日) 03:17:14
>>622
#include <stdio.h>
int main(){int *a,*b,*c,*d,i=0,val;
int n[]={0,2,4,6,-1};int m[]={0,3,4,5,6,-1};
for(a=m;*a>=0;a++)for(b=n;*b>=0;b++)
for(c=m;*c>=0;c++)for(d=n;*d>=0;d++){
val=((*a*10+*b)*100+*c)*10+*d;i++;
if((i>20)&&(i<=320)) printf("%d\n", val);}return 0;}
630デフォルトの名無しさん:2007/07/22(日) 04:37:34
設問者がなぞなぞ好きならそれはそれで良いのかもしれないが。
それで単位を取れるかどうかとなると、学生がちょと河合祖。
631519:2007/07/22(日) 11:12:25
戻り値が無い関数はvoidがいいんですか?
632デフォルトの名無しさん:2007/07/22(日) 11:16:21
そうだよ☆
でもmainだけは戻り値がいらなくてもintにするのが習慣みたいね
633デフォルトの名無しさん:2007/07/22(日) 11:19:41
>なぞなぞ
また1つ賢くなった、ありがとう
634デフォルトの名無しさん:2007/07/22(日) 11:23:57
>>632
お前は要らないかもしれないけど、システムにとって必要だよ。
635519:2007/07/22(日) 11:35:30
あと . と , は直してアップしたつもりでした
636デフォルトの名無しさん:2007/07/22(日) 11:37:10
>>622
#include <stdio.h>

int main(void)
{
    int i;
    for(i = 1; i < 100; i++)
        printf("%ld\t", i%4*2 + i/4*10 + (i < 4 ? 0 : 20));
    return 0;
}

英語のなぞなぞって何?
637617:2007/07/22(日) 13:34:20
解答ありがとうございました
参考にさせていただきます!
638デフォルトの名無しさん:2007/07/22(日) 15:14:48
>>632
習慣じゃなく規格で決まっている。
639デフォルトの名無しさん:2007/07/22(日) 15:50:54
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
行列のサイズ n, m, l と,それに応じた n×m, m×l の行列が記録されたファイルを食べて,結果を別のファイルに書き出そう.

%cat testfile

3
2
3

3.2 4.8
8.2 6.5
4.3 -2.2

-5.0 6.2 8.9
3.5 -0.2 -5.8

であるとする.3×2, 2×3の行列の積をとり,3×3の行列を得る事になる.そこでプログラムを開発して、

% ./prog0 testfile ANSWER

とすれば,積が ANSWER というファイルに書き込まれるようにせよ.argv[], argc, fscanf(), fprintf() を総動員する.
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7/25まで

よろしくおねがいしますm(_ _)m
640デフォルトの名無しさん:2007/07/22(日) 15:51:45
argv[], argc, fscanf(), fprintf() を総動員する.
ワロタ
641デフォルトの名無しさん:2007/07/22(日) 16:07:42
>>639
もうマジで日本語でおk
642デフォルトの名無しさん:2007/07/22(日) 16:11:50
入力テキストは
n
m
l

行列1

行列2
って形式なんだろう
643デフォルトの名無しさん:2007/07/22(日) 16:31:25
>結果を別のファイルに書き出そう.

>そこでプログラムを開発して、

出題者はどういうノリなんだ。
644デフォルトの名無しさん:2007/07/22(日) 16:35:10
>>639
#include <stdio.h>
#define N 128
int main(int argc, char *argv[])
{
    FILE *fpin, *fpout;
    int n, m, l, i, j, k;
    double mat1[N][N], mat2[N][N], mat3[N][N];
   
    if(argc < 3 || (fpin = fopen(argv[1], "r")) == NULL || (fpout = fopen(argv[2], "w")) == NULL) return 1;
   
    fscanf(fpin, "%d%d%d", &n, &m, &l);
    for(i = 0; i < n; i++)
        for(j = 0; j < m; j++)
            fscanf(fpin, "%lf", &mat1[i][j]);
    for(i = 0; i < m; i++)
        for(j = 0; j < l; j++)
            fscanf(fpin, "%lf", &mat2[i][j]);
   
    for(i = 0; i < n; i++){
        for(j = 0; j < l; j++){
            mat3[i][j] = 0;
            for(k = 0, mat3[i][j] = 0; k < m; k++)
                mat3[i][j] += mat1[i][k]*mat2[k][j];
            fprintf(fpout, "%f ", mat3[i][j]);
        }
        fprintf(fpout, "\n");
    }
   
    fclose(fpin), fclose(fpout);
    return 0;
}
645デフォルトの名無しさん:2007/07/22(日) 16:36:27
学校行けよ
646デフォルトの名無しさん:2007/07/22(日) 16:45:22
今時期は夏休み返上で赤点補習かな
647デフォルトの名無しさん:2007/07/22(日) 16:53:38
>>644
出来ました。ありがとうございますm(_ _)m
648デフォルトの名無しさん:2007/07/22(日) 17:39:10
はしかのせいで補習のやつが多そうだな
649デフォルトの名無しさん:2007/07/22(日) 17:46:05
なるほど、失速しないのはその影響か。
650デフォルトの名無しさん:2007/07/22(日) 18:52:14
行列matの転置行列を求めて次のように出力するプログラムを完成させよ。

| 1 6 11 16 21 |
| 2 7 12 17 22 |
| 3 8 13 18 23 |
| 4 9 14 19 24 |
| 5 10 15 20 25 |
651デフォルトの名無しさん:2007/07/22(日) 18:52:45
#include <stdio.h>
#define MSIZE 5
void swap(int *a, int *b) {
int c;
(a) = *a;
*a = *b;
*b = (a) ;
}
void main(void) {
int i, j, mat[MSIZE][MSIZE] = { { 1, 2, 3, 4, 5},
{ 6, 7, 8, 9,10},
{11,12,13,14,15},
{16,17,18,19,20},
{21,22,23,24,25} };
for(i = 0; i < MSIZE - 1; i++) {
for(j = (b) ; j < (c) ; j ++) {
swap( (d) , (e) );
}
}
for(i = 0; i < MSIZE; i ++) {
printf("|");/25小計
for(j = 0; j < MSIZE; j ++) {
printf("%3d ", mat[i][j]);
}
printf(" |\n");
}
}

さっぱりわかりません
よろしくお願いします
652デフォルトの名無しさん:2007/07/22(日) 18:53:43
あるカップラーメンの値段を店ごとに調べた.それを配列に
入れて,下の出力のように10円刻みに分布をとることを考える.
そのためのプログラムを下に示す.空白を補え.

80- 89円: 2
90- 99円: 2
100-109円: 1
110-119円: 2
120-129円: 1
130-139円: 2
653デフォルトの名無しさん:2007/07/22(日) 18:55:33
#include <stdio.h>
#define C_NUM 6

void makedist(int a[10], int b[C_NUM]) {
int i;

for(i = 0; i < 10; i ++) {
b[ (a) ] += 1;
}
}

void main(void) {
int price[10] = {80, 120, 111, 130, 139, 95, 98, 89, 105, 119};
int dist[C_NUM], i;

for(i = 0; i < C_NUM; i++) {
dist[i] = (b) ;
}
makedist( (c) , dist);
for(i = 0; i < C_NUM; i++) {
printf("%3d-%3d円: %3d\n", (d) ,
(e) , dist[i]);
}
}

これもさっぱりです・・・
教えてください
654デフォルトの名無しさん:2007/07/22(日) 18:58:12
>653
(a)a[i]/10-8
(b)0
(c)price
(d)80 + i * 10
(e)89 + i * 10
655デフォルトの名無しさん:2007/07/22(日) 19:08:49
>>650-651
a:c
b:0
c:i
d:mat[i][j]
e:mat[j][i]
656655:2007/07/22(日) 19:10:03
訂正
d:mat[i][j]→&mat[i][j]
e:mat[j][i]→&mat[j][i]
657655:2007/07/22(日) 19:20:36
何度も済まん…

>>650-651
a:c
b:0
c:i+1
d:&mat[i+1][j]
d:&mat[j][i+1]
658デフォルトの名無しさん:2007/07/22(日) 19:23:54
ありがとうございます!!
659デフォルトの名無しさん:2007/07/22(日) 19:29:39
与えられた正数aの逆数1/aを,除算を用いずに求めるアルゴリズムを
ニュートン法によって作りたい.
ただし,初期値x0は十分に解に近いところから出発するものとする.
次の[1]から[4]の空欄(a)から(f)を埋めよ.

[1]
ニュートン法でaの逆数1/aを求めるためには
f(x)=(a)のゼロ点を求めればよい.

[2]
[1]の式に対して,ニュートン法による第n+1回目の反復による値Xn+1は,
第n回目の反復による値Xnを用いて
Xn+1=(b)と表される.

660デフォルトの名無しさん:2007/07/22(日) 19:30:11
[3]
[2]で示した反復によるアルゴリズムを実現すると次のようになる.
#include <stdio.h>

void main(void) {
double u, v;
int i;
printf("正数を入力して下さい.\n");
scanf( (c) );
printf("逆数に十分近い初期値を入力して下さい.\n");
scanf( (d) );
for(i = 0; i < 3; i ++) {
u = (e) ;
printf("%5.3f\n", u);
}
}

[4]
[3]で作ったプログラムを実行し,「3」,「0.5」の順に入力した際に
for文の中のprintf関数による出力結果をすべて示すと次のようになる.

(f)

661デフォルトの名無しさん:2007/07/22(日) 20:37:35
>>659
(a) 1/x - a {x = 1/a → 0 = 1/x - a だから}
(b) Xn*(2-a*Xn) {Xn-f(Xn)/f'(Xn) →Xn-(1/Xn-a)/(1/(-Xn*Xn))だから}
(c) "%lf",&v (d) "%lf",&u (e) u*(2-v*u)
(f)
0.5
0.250
0.332
662デフォルトの名無しさん:2007/07/22(日) 20:37:52
関数myreplaceを使って実際に文字列を変換させるプログラムを作成したところ,
出力結果(1)は「tuat」となった.
空欄(a)〜(f)を埋めて次のプログラムを完成させ,
出力結果(2)を空欄(g)に記入せよ.

663デフォルトの名無しさん:2007/07/22(日) 20:39:44
#include <stdio.h>
(a) ;

void main(void) {
char code[16] = "GHIGFACDFDBA";
char ret[16] = "";
myreplace(" (b) ", ret);
printf("%s\n", ret); ・・・出力結果(1)
myreplace(code, ret);
printf("%s\n", &ret[5]); ・・・出力結果(2)
}
void myreplace(char org[ ], char ret[ ]) {
char string1[16] = (c) ;
char string2[16] = "v)(^e_tua";
int i, j;
for(i = 0; org[i] != (d) ; i ++) {
for(j = 0; string1[j] != (d) ; j ++) {
if(org[i] == string1[j]) {
(e)
}
}
}
(f) /* 終端記号 */
}

出力結果
(g)


664デフォルトの名無しさん:2007/07/22(日) 20:42:23
>>659 訂正
(f)
0.250
0.313
0.332
665デフォルトの名無しさん:2007/07/22(日) 21:04:07
[1] 授業単元:
[2] 問題文(含コード&リンク):
2 つのchar 型配列x[],y[] に格納された文字列を入れ替えるプログラムを作成せよ.
ただし入替え処理には,関数swap array(char *,char *) を作成して用いること.
% ./test
入替前のx: "abcdefgh"
入替前のy: "ABC"
関数swap_array() を呼び出しました
入替前のx: "ABC"
入替前のy: "abcdefgh"
%
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)
[4] 期限: (07月23日00:00まで)
[5] その他の制限:ポインタまで習ってます
よろしくおねがします
666デフォルトの名無しさん:2007/07/22(日) 21:05:33
>>650マルチ必死だな(´,_ゝ`)プッ
667デフォルトの名無しさん:2007/07/22(日) 21:39:34
>>662 なんかヤな問題だな。回答は複数あるけどたぶん↓
(a) void myreplace(char org[], char ret[]); (b) GHIG (c) "ABCDEFGHI"
(d) '\0' (e) ret[i] = string2[j]; (f) ret[i] = '\0'; (g) v(^_^)v
668デフォルトの名無しさん:2007/07/22(日) 22:05:25
[1] 授業単元:
[2] 問題文(含コード&リンク):
1start で示されるアドレスからlength バイト分だけの領域に関して,
値val で埋める関数cmemset(char*start, int value, int length) を作成せよ.
さらに,malloc() 関数を用いてchar 型配列のメモリ領域を確保し,
cmemset() が正確に動作することを確認
(メモリ領域の内容を整数値として表示)するプログラムを作成せよ.
%./kadai
4 -89 0 1 5 43 ... 112 ← cmemset 使用前
0 0 0 0 0 0... 0 ← 0 で埋めたとき
88 88 88 88 88 88 ... 88 ← 88 で埋めたとき
%
2src で示されるアドレスからlength バイト分だけの領域を,dest で示される領域へコピーする関数
cmemmove(char *dest, char *src, size t length) を作れ.なお,送り元の領域と送り先の領
域がオーバーラップしていても,正しくコピーできる仕様にせよ.さらに,malloc() 関数を用いて
char 型配列のメモリ領域を確保し,cmemmove() が正確に動作することを確認(メモリ領域の内容を
整数値として表示)するプログラムを作成せよ.
% ./kadai
1 2 3 4 5 0 0 0 0 0 0 0 0 0 0 0 0 0 ← cmemmove 実行前
1 2 3 4 5 0 0 0 0 0 1 2 3 4 5 0 0 0 ← 0 番目から5 個を10 番目へ
1 2 3 1 2 3 4 5 0 0 1 2 3 4 5 0 0 0 ← 0 番目から5 個を3 番目へ
%���
[3] 環境
 [3.1] OS: (Linux3.2)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)
[4] 期限: (07月23日まで)
[5] その他の制限:おねがいします
669デフォルトの名無しさん:2007/07/22(日) 22:24:59
char配列埋めるのにvalueはintかよ
670デフォルトの名無しさん:2007/07/22(日) 22:27:26
標準のmemset()もそうでしょ
671デフォルトの名無しさん:2007/07/22(日) 22:41:46
わかる方でいいのでおねがいします
672デフォルトの名無しさん:2007/07/22(日) 22:43:25
何を?
673デフォルトの名無しさん:2007/07/22(日) 22:43:59
どれを?
674671:2007/07/22(日) 22:45:03
すみません全部忘れてました
村上ファンド事件についてインサイダー取引という単語を用いて100字以内にまとめよ
です
675デフォルトの名無しさん:2007/07/22(日) 22:47:02
he is very very bad
676デフォルトの名無しさん:2007/07/22(日) 22:51:21
665と668です
677671:2007/07/22(日) 23:03:48
本当に誰か答えてください><
678デフォルトの名無しさん:2007/07/22(日) 23:11:30
>>665
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4711.c
ココの人、みんな"わかる方"だからさ。そういう言い方なんか違うと思うよ。
679デフォルトの名無しさん:2007/07/22(日) 23:16:22
Linux3.2 うひょ
680デフォルトの名無しさん:2007/07/22(日) 23:31:17
char *cmemset(char *start, int value, int length)
{
const unsigned char ch = value;
while(num--)
*ptr++ = ch;
return start;
}
char *cmemmove(char *dest, char *src, size t length)
{
while(length--)
*(dest+length) = *src;
return dest;
}
681デフォルトの名無しさん:2007/07/22(日) 23:34:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4712.zip
[3] 環境
 [3.1] OS: (Mac)
 [3.2] コンパイラ名とバージョン: (gcc 3.4)
 [3.3] 言語: (C)
[4] 期限: ([2007年7月23日9:00まで] )
[5] その他の制限:問題文、プログラム内で使うデータファイル、自分で作ったソースをzipにしました
            何故動かないのかわからないのでご教授下さいませ
682デフォルトの名無しさん:2007/07/22(日) 23:35:25
メモリコピーはアドレスの大小関係で
昇順、降順を切り替えないとおかしなことになるよ
683デフォルトの名無しさん:2007/07/22(日) 23:45:59
>>681
その汚いソースをなんとか動くようにしてくださいっていうなら絶望的だな
どっかしらでsegmentation faultが起きてるから頑張って探しな
684デフォルトの名無しさん:2007/07/22(日) 23:52:08
>>679
大分未来からお越しのようですね
685デフォルトの名無しさん:2007/07/23(月) 00:14:45
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):整数集合 { 1, 2, 3, 4, 5 } と { 2, 4, 6 } の 共通集合を求め、表示するプログラム
集合をリストを用いて実現し、emptySet, inSet, addElem, intersection, printSet, freeSet を リストを用いた集合操作に変更しなさい。

コード:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4713.c
[3] 環境
 [3.1] OS: Linux
 [3.2] gcc
 [3.3] 言語: C
[4] 期限: 2007/7/25 15:00

プログラムのコード自体はやってる最中なのでめちゃくちゃですが気にしないでください。
コンパイルは特にエラーもなく通ります。
実行したあと

  %./a.out

と出るだけでそこから何も起きません。
無限ループに陥ってる可能性を考えてmain関数内にprintfを設置しました。
コードを見てもらえばわかるのですが、main関数内の2行目に配置したprintfすら実行されません(1行目はint型の変数宣言)。
これはmain関数が実行されていないということでしょうか?
原因解明お願いします。
686デフォルトの名無しさん:2007/07/23(月) 00:16:28
>>681
enter と enter2 で xtopx->child1 や xtopx->child2 が使われているけど
xtopx 自体が初期化されていない気がする
687デフォルトの名無しさん:2007/07/23(月) 00:17:31
>>680もう少しヒントをください
688685:2007/07/23(月) 00:19:53
すいません。捕捉です。
このプログラムは、元は配列を用いて集合を実現してました。これをリスト構造に改編しろ。
という問題です。
689686:2007/07/23(月) 00:27:52
>>681
あとグローバルでstruct member **result; が宣言されているのに
search および search2 で ローカルで struct member **result; が宣言されている
ローカル側のresult;に代入しているから 
result=(struct member **)malloc(sizeof(struct member *)*(MEMBER_MAX+1));
で確保した領域が保存されていない.returnで戻しているけどmain でその戻り値保存していないし

というかこのresultのポインタリストはどこで使われているのだろうか?
690デフォルトの名無しさん:2007/07/23(月) 00:32:12
最近のCって型定義に変数宣言しても通るの?
691デフォルトの名無しさん:2007/07/23(月) 00:34:02
間違えた

×型定義に
○型定義前に

普通は構造体定義してから変数宣言だよね?
692686:2007/07/23(月) 00:35:39
>>681がすでにいない気もするけど

>>681
Top1 と Top2 は 0 か NULL で初期化されていないので
enter と enter2 の if(!Top1){ } が実行されずに
top=Top1; while(top){ } で失敗する可能性がある


(HDDから怪しい音が・・・こわい)
693デフォルトの名無しさん:2007/07/23(月) 00:42:08
>>685
int inSet(ElementP s,int v){/*変更可*/
while(s->next!=NULL){
if(s->data==v){
return 1;
}
}
return 0;
}
ここで無限ループしてる
694デフォルトの名無しさん:2007/07/23(月) 00:46:51
>>680もう少し補足していただくと・・・
695685:2007/07/23(月) 00:46:57
>693
指摘ありがとうございます。
しかし、修正してみたものの症状変わらず・・・。
696681:2007/07/23(月) 00:47:46
>>692
すいません、プログラムと睨めっこしてました

ちょっといじってみます、また何かあったらご教授いただけると幸いです
697デフォルトの名無しさん:2007/07/23(月) 00:48:48
while(p->next!=NULL)
{
if(p->data < val->data)
val=p;
p=p->next;


}

ここでも無限ループしてる
698デフォルトの名無しさん:2007/07/23(月) 01:04:24
>>685
流し読みだけど、ElementP emptySet(){ return NULL; }で。
やり方は他にもあるけど、少なくとも次がない=空じゃないです。そうすると
mallocは、s==NULLのとき、addElemでして、return sってことになるかと。
void addElem(ElementP s,int v) → ElementP addElem(ElementP s,int v)
ですね。あと、freeSetが最初しか開放してないから再帰でnextたどってく感じで。
699デフォルトの名無しさん:2007/07/23(月) 01:17:33
>>680 int main()内が分かりません
助けてください><
700685:2007/07/23(月) 01:31:09
>697
すいません、どこで無限ループなのかわからないです。

>698
その方法もやってみます。
freeSetの件も修正してみます。
701685:2007/07/23(月) 02:00:10
どうやら環境の差のようです。Windowsで実行したところ正常に動きました。
いろいろとありがとうございました。
702681:2007/07/23(月) 02:01:28
>>681ですが、アドバイスをいただいて直してみましたがうまくいきません
アップしたソースの不都合な所はばっさり変更しても良いので、
なんとか動くように訂正お願いします
703デフォルトの名無しさん:2007/07/23(月) 02:04:14
環境の差なわけねえwww
704デフォルトの名無しさん:2007/07/23(月) 02:18:42
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
 [プログラム説明]
2桁の16進数('41'〜'49'、 '50'〜'59')を入力すると対応する文字を表示する。
ただし、%xは使用しないこと。なお、入力に間違いはないものとする。(ヒン
ト:入力は一つの数値か、二つの文字か?)

実行結果
2桁の16進数('41'〜'49'、 '50'〜'59')を入力してください:53
文字コード「53」文字は「S」です。

[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: VC
 [3.3] 言語: C++
[4] 期限: ([明日の朝まで] または [無期限] のいずれか)
[5] その他の制限: printf() scanf()を最近習いました
705デフォルトの名無しさん:2007/07/23(月) 02:27:40
>>704

#include <stdio.h>
int scan_ascii(){
int c1,c2;
printf("2桁の16進数('41'〜'49'、 '50'〜'59')を入力してください:");
scanf("%c%c", &c1, &c2);
return (c1<<4 + c2);
}
int print_ascii(int c){
printf("文字コード「%d」文字は「%c」です。\n", c, c);
}
int main(){
print_ascii(scan_ascii());
return 0;
}
706デフォルトの名無しさん:2007/07/23(月) 02:34:50
すいません、returnとasciiは習ってないです・・・
でもありがとうございます!1原型ができました
707デフォルトの名無しさん:2007/07/23(月) 02:40:08
708707:2007/07/23(月) 02:42:00
アンカー間違えた
>>702 じゃなくて >>701 だった
709デフォルトの名無しさん:2007/07/23(月) 03:09:46
>>420
まだ全然わからないんでお願いします
710デフォルトの名無しさん:2007/07/23(月) 03:28:43
\n    n番目に表れた\(...\)の中の文字列にマッチ (nは1から9の整数)

が意味わからね
方針として入力文字列を"トークン"列に変換してから置換処理がクレバーじゃね?
struct toknの設計がつぼおおおぉおおおおぉおぉおぉおおおおおおおおおおおあおあさだおssd
711デフォルトの名無しさん:2007/07/23(月) 03:44:20
\nの前の正規表現を\( \)で囲っておくとあとで呼び出せるってやつです
http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE

\([asdf]\)\(fty\)\([frty]\)\(t\)\3

aftytterをチェックした場合
\3はtと同じです

system()からsed呼び出して同じ動作するものは作れたんですけど、それだと題意にあわないんで・・・
712デフォルトの名無しさん:2007/07/23(月) 10:36:35
>>530
返事が遅くなってすいません。>>530に書いてあるものを使ってpop,pushを使い
たいです。+-*/は数字の大きさで表したいです
713デフォルトの名無しさん:2007/07/23(月) 11:05:05
[1]授業単元:プログラミング技術III
[2]問題文:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4718.txt
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ: gcc
 [3.3] 言語: C
[4] 期限:7/24まで
[5]その他の制限:特になし

よろしくお願いします
714デフォルトの名無しさん:2007/07/23(月) 11:12:26
>>712は、自分が書いた文を自分で理解できるのか?
715デフォルトの名無しさん:2007/07/23(月) 11:51:28
\(\(c\)b\)d\) の場合"2"番目は何を意味する?
\([ab]\)\1の場合
aa と bb にはマッチするが ab にはマッチしないと理解して良いのか?
(否なら単に[ab][ab]と記述すればいいしなクソ)


それとこれ本当に宿題か?
\nさえなけりゃ理論的な意味の正規表現についての良問だと思うが
\nの性で劇的に難しくなってね?
お前何科の何年生?
あるいは問題間違ってねえ?
716デフォルトの名無しさん:2007/07/23(月) 12:02:40
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4719.txt
プログラム問題文に沿って作ったものと、それに2つの要素を追加修正した
2つのプログラムの作成をお願いします。

[3] 環境
 [3.1] OS: windows XP
 [3.2] visual studio 2005
 [3.3] 言語: C++
[4] 期限: 2007/07/26 13:00まで
[5] その他の制限: 特に無し

よろしくお願いします
717デフォルトの名無しさん:2007/07/23(月) 12:18:51
\(\)って入れ子にはしないんじゃないか
718デフォルトの名無しさん:2007/07/23(月) 12:25:06
[1] 授業単元:C
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4721.txt
[3] 環境
 [3.1] OS: windows XP
 [3.2] bcc32
 [3.3] 言語: C
[4] 期限: 2007/07/23 13:00まで
[5] その他の制限: 特に無し
719デフォルトの名無しさん:2007/07/23(月) 13:06:20
>>715
問題文には正規表現の各表現の説明があった後に
. * [abc…]、\が使えるようなプログラムを実装せよとかかれてました
ちなみに2回のC初心者向けの演習です
期末レポートなんですが、人によって問題が違って明らかにはずれくじをひいたっぽいですorz
720デフォルトの名無しさん:2007/07/23(月) 13:08:52
あと、正規表現では括弧の入れ子は外から順に数えていくはずです
721デフォルトの名無しさん:2007/07/23(月) 13:54:35
二回で正規表現の実装かよ
Perlとかでならまだしも・・・
722デフォルトの名無しさん:2007/07/23(月) 14:02:30
ほかの人の課題は1時間とかで終わるのもあるんで、\n入れると難易度極端に変わるなら、実はそれ無しかもしれないです
723デフォルトの名無しさん:2007/07/23(月) 14:06:51
出題者は、正規表現の複雑な仕様を完全に実装しろと言っている訳ではないよね。
単純なパターンチェックと置換を実装すればいいんじゃないの?
724デフォルトの名無しさん:2007/07/23(月) 14:09:17
[1] 授業単元:C++
[2] 問題文(含コード&リンク):
 クラスcomplexのメンバ関数で、複素数の絶対値を与える関数を新たに作成せよ。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: CC
 [3.3] 言語: C++
[4] 期限: [無期限]
[5] その他の制限: 特になし
 
よろしくおねがいします。
725デフォルトの名無しさん:2007/07/23(月) 14:15:43
726デフォルトの名無しさん:2007/07/23(月) 14:16:34
(含コード&リンク):
のくせになんにも貼られてないってどうよ
727デフォルトの名無しさん:2007/07/23(月) 14:26:47
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):正の整数を入力し1からその数までの間に素数がいくつあるのか数えるプログラムを作れ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C++
[4] 期限:7月中
[5] その他の制限:特にないです。
よろしくお願いします。
728デフォルトの名無しさん:2007/07/23(月) 14:30:37
[1] 授業単元:C言語
[2] 問題文(含コード&リンク): nを入力してs=1/1-1/3 + 1/5-1/7 + 1/9....+(-1)^n-1/(2n-1)
の和を求めるプログラムを作れ。nが大きくなるにつれてs*4がどうなるか
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:VC
 [3.3] 言語:C++
[4] 期限:7月中
[5] その他の制限:特にないです。

問題が難しくて困っています。
お願いいたします。
729デフォルトの名無しさん:2007/07/23(月) 14:35:16
double s;
int i,n,j;
printf("n: ");
scanf("%d", &n);
j = 1;
for(i = 0; i < n; i++) {
s += j/(2n-1);
j = -j;
}
printf("s = %lg\n", s);
730デフォルトの名無しさん:2007/07/23(月) 14:57:03
これはひどい
731デフォルトの名無しさん:2007/07/23(月) 14:58:48
#include<stdio.h>
int main(){
double s=0;
int i,n,j=1;
printf("n: ");
scanf("%d", &n);
for(i = 1; i <= n; i++) {
s += (double)j/(2*i-1);
j = -j;
}
printf("s = %lg\n", s*4);
return 0;
}
732デフォルトの名無しさん:2007/07/23(月) 15:33:33
設問的にはcout/cinじゃまいか
733デフォルトの名無しさん:2007/07/23(月) 15:41:51
>>727
おまいのレベルに合わせてコーディングした

#include<stdio.h>
int main(){
while(1){
int i,j,n,c=0;
printf("正数 = ");
scanf("%d",&n);
for(i=2;i<=n;c++,i++)
for(j=2;j<=i/2;j++)
if(i%j==0){
c--;
break;
}
printf("素数 = %d 個\n",c);
}
return 0;
}
734デフォルトの名無しさん:2007/07/23(月) 15:52:57
正規表現のアルゴリズムとか考えたこともなかったな
一度単純な実装見てみたい
735デフォルトの名無しさん:2007/07/23(月) 16:27:02
>>728
#include <iostream>
#include <iomanip>
#include <cmath>

int main()
{
    double s = 0;
    int i, n;
   
    std::cin >> n;
    for(i = 1; i <= n; i++){
        s += pow(-1, i - 1)*1/(2*i - 1);
        std::cout << std::setw(10) << i << " : " << s*4 << std::endl;
    }
   
    return 0;
}
736デフォルトの名無しさん:2007/07/23(月) 17:23:18
>>714
出来ます。+-*/の順に1234とつけて行き大きい数字から(/から)優先
で計算するようにしたいんです。
737デフォルトの名無しさん:2007/07/23(月) 17:53:38
>>736
スタックを2つ作り、数字と演算子を別々に積み上げておいて、演算子はどの数字を計算対象にしたら良いか、分かるのか?
738デフォルトの名無しさん:2007/07/23(月) 18:05:53
>>736
もうちょいで自分でできるぞ
なんかね、道間違えている気がする
739デフォルトの名無しさん:2007/07/23(月) 18:22:04
>>734
ttp://www2.starcat.ne.jp/~fussy/algo/index.htm
に単純な実装があるよ。
740デフォルトの名無しさん:2007/07/23(月) 19:12:04
>>725
Test operator = (const Test& t) とかを
Test& operator = (const Test& t) にしないと
return *this が Test(const Test& t) を呼んじまうぜよ
741ゆみ:2007/07/23(月) 19:24:32
超初心者です。制限時間45分で出題されましたが、解答できなかった為持ち帰りになりました(>_<)
どうか御教授お願いします。

・char 型の配列aに"HellowWorld"の文字列を格納すること。
・配列aからchar 型の配列bにデータをコピーすること。
 ※標準関数(memcpy,strcpy等)を使用しないこと。
・配列bからchar 型の配列cにデータをコピーすること。
 ※但し、"w"、"W"は"*"にデータをすりかえてデータをコピーすること。
  →配列cには文字列"Hello**orld"を格納すること。
・printf()で表示する際は、配列cのデータを一文字づつ表示すること。
 ※"o"を表示する際は、"o"を表示する代わりに"O"を5つ表示すること。
・VCのプロジェクト名は"ckadai3"とすること。
742デフォルトの名無しさん:2007/07/23(月) 19:27:52
>>741
ESPの俺が応える
お前男なのにキモイ
743デフォルトの名無しさん:2007/07/23(月) 19:30:51
>>741-742
ESPってなに?
744デフォルトの名無しさん:2007/07/23(月) 19:31:32
>>742
知り合いみたいだからよろしく
745デフォルトの名無しさん:2007/07/23(月) 19:31:36
ESPなら、カキコを阻止してくれよ
746デフォルトの名無しさん:2007/07/23(月) 19:49:57
>>744
マジ?
747デフォルトの名無しさん:2007/07/23(月) 20:06:13
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4727.txt
[3] 環境
 [3.1] OS:linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限:2007/07/24
[5] その他の制限:なるべく問題文の指定以外の変更はしないで頂きたいです。どうか宜しくお願いします。
748デフォルトの名無しさん:2007/07/23(月) 20:29:41
749741:2007/07/23(月) 20:57:04
741です。どなたかお願いします。For文もif文もままならないレベルなので、自力で解くのは厳しいです。また30分後にきます(´〜`;)
750デフォルトの名無しさん:2007/07/23(月) 20:58:46
うざ
751デフォルトの名無しさん:2007/07/23(月) 21:06:14
質問テンプレを利用しましょう。
752デフォルトの名無しさん:2007/07/23(月) 21:08:29
向こうで回答されてなかったっけ
753デフォルトの名無しさん:2007/07/23(月) 21:15:49
>>420
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4728.c
どう考えても2回の宿題のレベルじゃなくね?
一日かかっちまったわ
完全じゃねえけどな
\(\)は無理,ってか>>719の言い方じゃイラネエじゃんクソ

つーかなに?ほんとはライブラリとか使えんじゃねーのか???
>>420が問題の趣旨を理解していない気が激しくするぞコラ

まあ俺は勉強になったがなクソ
754デフォルトの名無しさん:2007/07/23(月) 21:17:13
#include <stdio.h>

int main(void)
{
char a[11]="HellowWorld", b[11], c[11];
int i;

for(i=0 ; i<11 ; i++){
b[i] = a[i];

if(b[i]=='W' || b[i]=='w') c[i] = '*';
else c[i] = b[i];

if(c[i] == 'o') printf("OOOOO");
else printf("%c", c[i]);
}

printf("\n");

return(0);
}
755ゆみ:2007/07/23(月) 21:30:16
>754
ありがとうございます。
助かりました。
756デフォルトの名無しさん:2007/07/23(月) 21:35:04
>>754
ウホッこれはいい再提出
757デフォルトの名無しさん:2007/07/23(月) 21:44:36
別に文字列コピーした後に表示とか書いてないからおkじゃね?
出題者の意図とは違うと思うけど
758デフォルトの名無しさん:2007/07/23(月) 21:46:38
printf("\n");

return(0);

これはないだろ
759デフォルトの名無しさん:2007/07/23(月) 21:52:07
>>757
よく見れば大丈夫そうだな
760デフォルトの名無しさん:2007/07/23(月) 22:33:47
下記の仕様と条件を満たすプログラムを作成しなさい。

●仕様
・"Hello"、"World"、"kadai"を指定された順番で表示すること。
 ※初期の順番は、"Hello"、"World"、"kadai"とする。
 ※順番はテーブル固定とし、変更毎にビルドを行うこととする。

●条件
・char 型index(1Byte)とchar型の配列hako[6](6Byte)をメンバとする構造体STRINDEX_TBLを作成すること。
・STRINDEX_TBL型の配列tableに、"Hello"、"World"、"kadai"の3つの文字列と表示順番indexを格納すること。
・文字列を表示の際は、printf()を使用し1文字("%c")づつではなく、文字列指定("%s")で指定すること。
・VCのプロジェクト名は"ckadai6"とすること。

●制限時間
・30分
761デフォルトの名無しさん:2007/07/23(月) 22:40:25
これほどまで見下してる出題者は初めてだな
762デフォルトの名無しさん:2007/07/23(月) 22:42:31
今年の4月から、去年質問した初心者が回答者側に回ったのか知らんが
gdgd質問者に注文つけたりうるせーよ、答える気がないなら黙ってスルーしろ。
っつかお前みたいな奴はこのスレには必要ないから、とっとと就職して
安月給プログラマーでもやってろ。
763デフォルトの名無しさん:2007/07/23(月) 22:45:32
スルーできないお前もだろ
まあ俺もだが
764デフォルトの名無しさん:2007/07/23(月) 22:47:22
>>761 = >>763 さすがに痛いわ、こいつ。自覚ありか。うぜぇ。失せろ。
お前みたいな奴に回答なんて求めてねーんだよ、他の回答者も。
765デフォルトの名無しさん:2007/07/23(月) 22:47:51
#include <stdio.h>

typedef struct {
char index;
char hako[6];
} STRINDEX_TBL;

int main(void)
{
STRINDEX_TBL st[] = {{0, "Hello"}, {1, "World"}, {2, "kadai"}};
int i, j;
const int num = sizeof(st)/sizeof(st[0]);
for(i=0; i<num; i++)
for(j=0; j<num; j++)
if(st[j].index == (char)i){printf("%s\n", st[j].hako);break;}
return 0;
}

やっつけ
766デフォルトの名無しさん:2007/07/23(月) 22:53:43
>>761-764
何方もどっちだな
767デフォルトの名無しさん:2007/07/23(月) 22:54:36
>>737>>738
スタックを2つ作り、数字と演算子を別々に積み上げておいて、演算子はどの数字を計算対象にしたら良いか、分かるのか? は、
数字が1234で演算子は+-*/です。これを1は激弱、2は弱、3は強、4は激強
にして指定した数が大きいほど優先順位が高い。
/→*→-→+の順で計算する。
768デフォルトの名無しさん:2007/07/23(月) 22:56:35
>>767
> これを1は激弱、2は弱、3は強、4は激強
4は激強
4は激強
4は激強
4は激強
4は激強

げきつよ?
げききょう
769デフォルトの名無しさん:2007/07/23(月) 23:00:43
770デフォルトの名無しさん:2007/07/23(月) 23:07:29
>>769
逆によくそんな前からレス探してくるなと感心。
まぁ質問者も丸投げするのは構わないんだけど
催促レスしまくってくるのと問題に最低限の必要事項が
無いのは止めて欲しいかなぁ。
771デフォルトの名無しさん:2007/07/23(月) 23:11:27
>>770 = 去年は質問者だったが、質問の仕方が悪くて散々叩かれた挙句に
答えてもらえなかった腹いせにこのスレで今年の質問者をねちねち詰り弄ることが
今の趣味になってしまった可愛そうな就職浪人。
772デフォルトの名無しさん:2007/07/23(月) 23:11:58
>>770
問題に最低限の事と言われても言われたのはこれくらいです。
使うプログラムも乗せてありますし。
773デフォルトの名無しさん:2007/07/23(月) 23:14:04
>>771
まぁ落ち着け、そう噛み付くな。
自分は基本的にこのスレに住みついてなくて
暇な時に見て解いてるだけで普段はレスもしてないから。
774デフォルトの名無しさん:2007/07/23(月) 23:15:35
>>772
誰もyouにレスしてないyo!
775デフォルトの名無しさん:2007/07/23(月) 23:16:51
やべぇ、ネチネチ質問者を弄っている奴らが簡単に釣れちゃったぜ。
これだから釣りは面白くて止められないぜ。
776デフォルトの名無しさん:2007/07/23(月) 23:16:52
>>774
勝手に勘違いしてすいません
777デフォルトの名無しさん:2007/07/23(月) 23:18:12
ほんとにバカばっかりだな
778デフォルトの名無しさん:2007/07/23(月) 23:19:33
ほんとだね
779デフォルトの名無しさん:2007/07/23(月) 23:19:57
釣れたってww勝手に一人でファビョってただけじゃねぇかwww
780デフォルトの名無しさん:2007/07/23(月) 23:21:33
俺「釣り」とか「釣り師」っていうのは、

 釣り師 ↓     
.            /| ←竿
     ○  /  |
.    (Vヽ/    |
    <>     |
゙'゙":"''"''':'';;':,':;.:.,.,__|_________
             |
  餌(疑似餌)→.§ >゚++< 〜
                 の組み合わせだと思ってたんだけど、

最近自称釣り師がダイレクトで自分の本音を攻撃されて「釣れた!」とか
言ってるの多いよね。
 これは、どっちかというと、



          ,〜〜〜〜〜〜 、
|\     ( 釣れたよ〜・・・)
|  \    `〜〜〜v〜〜〜´
し   \
゙'゙":"''"''':'';;':,':;.:.,.,  ヽ○ノ
          ~~~~~|~~~~~~~ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                 ト>゚++<
              ノ)

かと思うんだけど、どうよ?
781デフォルトの名無しさん:2007/07/23(月) 23:21:38
やべぇ、今度は自分がファビョってますって公言する必死な奴も釣れちゃったYO!
あのなぁ、こっちは質問者を弄っている奴をピンポイントで指して指摘しているんじゃなくて
そういう奴がうぜぇと言っているだけで、それに 反応 しちゃっている奴がわざわざ
エサに食いついちゃっていることに気づかないから笑えるんだよw
782デフォルトの名無しさん:2007/07/23(月) 23:22:47
バカって自分で書いたことと他人が書いたことを見間違えちゃうって本当だったんだ・・・
かわいそう
783デフォルトの名無しさん:2007/07/23(月) 23:23:01
こんなスレあったのか
楽しいwwwwwwwww
784デフォルトの名無しさん:2007/07/23(月) 23:24:33
>>767
素直に釣られましたが教えてください
785デフォルトの名無しさん:2007/07/23(月) 23:26:52
演算子に割り当てた数字と、計算対象としての数字がゴッチャになっている。
優先順位の高さが、何を指しているのか分かっているのか?
何でも良いから加減乗除を使っている計算式を書いて、
それぞれのスタックとやらに計算対象の数字と演算子に割り当てた数字が
どのように積まれていくのか書いてみろ。
786デフォルトの名無しさん:2007/07/23(月) 23:27:01
>>762=>>764=>>769=>>771=>>775=>>781
はいはいクマクマ…はぁ。
787デフォルトの名無しさん:2007/07/23(月) 23:30:47
>>785
わかりません。わからないから来ています
788デフォルトの名無しさん:2007/07/23(月) 23:34:25
即答せず、少しは考えろよ。
式を書いてみろ。
小学生でも理解できる事だ。
789デフォルトの名無しさん:2007/07/23(月) 23:34:41
>>753
おまいのソース見て、俺も書きたくなってきた。
でも、正規表現アルゴリズムって何? というレベル。
790デフォルトの名無しさん:2007/07/23(月) 23:34:53
鳥でもコテ半でもいいからつけてくれんとはぁ〜さっぱりさっぱりだわw
791デフォルトの名無しさん:2007/07/23(月) 23:38:15
1+1=2
792デフォルトの名無しさん:2007/07/23(月) 23:41:31
>>753
授業2回でこんな問題解けるような生徒がいるなら職業プログラマいらないよなw
みんなバイトでいいやってなっちまうわ。
俺もやってみたいけど1時間やそこらじゃ絶対終わらないな・・・
ってか、講師はちゃんとテスト、レビューするのかな?
793デフォルトの名無しさん:2007/07/23(月) 23:41:50
>>788
式ですか?
794デフォルトの名無しさん:2007/07/23(月) 23:49:22
なんかしつこいからさっさと教えたら?
795デフォルトの名無しさん:2007/07/23(月) 23:55:05
>>788
俺も同じ問題がわからない。
教えてくれないか?
796デフォルトの名無しさん:2007/07/23(月) 23:58:10
mainの中の
p=&c;
間違いだって誰か言ってる?
797デフォルトの名無しさん:2007/07/23(月) 23:59:36
>>796
間違えなんですか?
798デフォルトの名無しさん:2007/07/24(火) 00:04:53
>>797
だって洗剤はP&Gだろ?

配列なんだから&はいらんよ。
p=cでpにアドレスがコピーされる。
799デフォルトの名無しさん:2007/07/24(火) 00:04:57
間違えという言葉が間違っていると揚げ足取り。
800デフォルトの名無しさん:2007/07/24(火) 00:07:06
p=cでもp=&c; でもいいと言われました
801デフォルトの名無しさん:2007/07/24(火) 00:10:29
確かに言ってた
802デフォルトの名無しさん:2007/07/24(火) 00:22:13
>>580じゃダメなん?
803デフォルトの名無しさん:2007/07/24(火) 00:22:26
>>747
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4729.c
一応580でも答えたんだけどスルーされてしまったらしい.
完成したソースでないと受理されないのか.
いずれにしても出題の仕方がひどい.p=cでもp=&cでもいいとかどこの講師だよ.
804デフォルトの名無しさん:2007/07/24(火) 00:26:09
>>803
ありがとうございます
805デフォルトの名無しさん:2007/07/24(火) 00:33:56
何だ、回答が出ているんだ。これだけ聞いていれば答えてくれているよね。
悪いが、作業は中止する。
提示された回答をチェックしてみて下さい。要求通りだと思うよ。
気になったのがあるんだが。
number()で数値と演算子に空白がある時と無い時で動きは違わないか?
806デフォルトの名無しさん:2007/07/24(火) 00:35:47
×数値と演算子に空白
○数値と演算子の間に空白
807803:2007/07/24(火) 00:41:03
スタック回りに微妙なバグがありそうだけど,いい加減に書いたから適当な修正方法が見当たらない.
とりあえずの応急処置ってことで,expression()内の最後のreturn ans;の直前に
op_stack = val_stack = NULL;
の一行を追加しといて.
808デフォルトの名無しさん:2007/07/24(火) 01:02:26
expressionの初っ端の処理がヤバイっぽい
809デフォルトの名無しさん:2007/07/24(火) 01:05:50
>>805
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4730.c
しかし作っちまったので俺は投稿する
因みに
struct stack *op_stack, *val_stack;

struct stack *op_stack=NULL, *val_stack=NULL;
なんだとおもふ
810デフォルトの名無しさん:2007/07/24(火) 01:41:49
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク): 二分探索木の拡張
詳細はうpしました。元になるプログラムも入っています。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4731.zip
[3] 環境
 [3.1] OS: (Windows/Linux/等々) windows
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) VC6.0
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7/27まで
[5] その他の制限:

どなたかご教授よろしくお願いします。
811 ◆DpMW3bRjps :2007/07/24(火) 07:34:56
1] 授業単元:プログラミング実習
[2] 問題文(含コード&リンク):任意の文字列を入力し、その文字列の中に任意の文字が何個入っているかを出力する
               プログラムのソースコードを提出しなさい。
                
              実行例)
              文字列を入力してください
              yamamotoyama
              さがす文字を入力してください
              y
              入力された文字列の中に指定された文字は2個あります


[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年07月25日まで
[5] その他の制限:>>452で教えてもらい、その後少し訂正したんですがダメでした。
しつこいですがもう1回お願いします。。
812デフォルトの名無しさん:2007/07/24(火) 07:55:11
>>452で全く問題なくコンパイル通るが
813デフォルトの名無しさん:2007/07/24(火) 07:58:32
>>811
#include<stdio.h>
int main( void ){
char c, string[100], *pstr;
int count;

printf( "文字列を入力してください\n" );
scanf( "%s%*c", string );
printf( "さがす文字を入力してください\n" );
scanf( "%c%*c", &c );
pstr = string;
count = 0;
while ( *pstr != '\0' ) {
if ( *pstr == c ) {
count++;
}
pstr++;
}
printf( "入力された文字列の中に指定された文字は%d個あります\n", count );
return 0;
}
814813:2007/07/24(火) 08:01:47
その他制限に全く目を通していなかったorz
朝っぱらかやろうとするとすぐこれだ・・・
815デフォルトの名無しさん:2007/07/24(火) 11:16:18

[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):括弧が使用可能な四則演算の電卓プログラムを作成せよ。文字入力で、入力時の関数はgetsを使用する事。
[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc3.4
 [3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限:自作関数は不可、スキルは初心者用の参考書一冊を一通り読んだくらいです。

よろしくお願いします。
816デフォルトの名無しさん:2007/07/24(火) 11:37:51
自作関数は不可って?
817デフォルトの名無しさん:2007/07/24(火) 11:45:17
ごめんなさい、そこは無視して大丈夫ですorz
818 ◆MmITqPYxy6 :2007/07/24(火) 13:42:22
[1] 授業単元: IT入門B1 C言語
[2] 問題文(含コード&リンク): 1辺10の立方体内部に含まれる四面体をN個発生し、
               体積の分布(区間数は20程度)を表示するプログラムを
               以下の要求に従って作成し、実行しなさい。
1,四面体を表す構造体(4つの3次元位置ベクトルをメンバーとする) を Tetra という名前で定義する.
typedef struct {. . .} Tetra;

2,構造体 Tetra を返却する,すなわち四面体を生成する以下の名前の関数を作成する.
Tetra mk_tetra(void)

3,四面体の体積を返す次の名前の関数を定義する.
double vol_tetra(Tetra t)

4,Nの値は実行時にキー入力するように設計しなさい.
          
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 3.4
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月25日迄
[5] その他の制限:
ヒントとして 1、講義で用いた"vector.h" を必ずincludeして使いなさい。
       2、四面体の1つの頂点を原点にして、他の3つの位置を表すベクトルを r1,r2,r3とすると、四面体の体積Vは以下のように与えられる
          V=1/6|(r1×r2)・r3|
がありました。
vector.h はこれです http://www-it.sci.waseda.ac.jp/teachers/w405201/ITB1/Sources/vector.h
819 ◆MmITqPYxy6 :2007/07/24(火) 13:46:23
よろしくお願い致します。
820デフォルトの名無しさん:2007/07/24(火) 14:20:45
>>811
>[5] その他の制限:>>452で教えてもらい、その後少し訂正したんですがダメでした。
もしかして、gets()をfgets()に修正したと言うことですか?
それ以外にも変更していますか?
fgets()だけなら、引数を変更するだけで良いんじゃないでしょうか。
821デフォルトの名無しさん:2007/07/24(火) 14:50:12
>452はgets()の使い方が阿呆過ぎる。
それはさておき、>811はなんで自分がどう修正してダメだったかも書かないんだ?
822デフォルトの名無しさん:2007/07/24(火) 14:59:12
>>821
gets()の使い方なんか可愛いもんだ。突っ込みどころ満載で目も当てられない。
823デフォルトの名無しさん:2007/07/24(火) 15:09:24
取り敢えず書いてみた。
#include <stdio.h>
int main()
{
puts("文字列を入力してください");
char buf[200];
if (fgets(buf, sizeof(buf), stdin) == NULL) return 1;
puts("さがす文字を入力してください");
char key;
if (scanf("%c", & key) != 1) return 1;
unsigned count = 0;
for (unsigned ic = 0; buf[ic] != '\0'; ++ic) if (buf[ic] == key) ++count;
printf("入力された文字列の中に指定された文字は%d個あります\n", count);
return 0;
}
824デフォルトの名無しさん:2007/07/24(火) 16:33:28
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4151.txt


このデータをファイルから読み込み

挿入ソート
基数ソート
ヒープソート
クイックソート
マージソート

によってソートできるよう各プログラムを作成せよ

データ数が100,000個のときでも対応できるようメモリを確保しておいてください。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 7月28日
[5] その他の制限:出来る限り単純なアルゴリズムで作ってください。合計5つのプログラムを作成してください。

大変な問題で申し訳ありませんがどなたか詳しい方よろしくお願いいたします
825デフォルトの名無しさん:2007/07/24(火) 16:43:08
>>824
なんで露骨にマルチするわけ?
専用ブラウザ使ってる連中の多くが両方とも見ているから、逆効果にしかならないのだが。
#それともネタか? ネタにマジレスしちゃったか?w
826デフォルトの名無しさん:2007/07/24(火) 17:58:03
だから答える気がない奴はいちいちうぜーレスするなよ、邪魔。お前みたいな奴いらねーって
行頭 # 野郎w
827デフォルトの名無しさん:2007/07/24(火) 18:03:33
>>826
お前も、なぁ…?
828デフォルトの名無しさん:2007/07/24(火) 18:07:01
>>826
こいつ、他のスレにも潜んでるよな
IDが出ないのをいいことに好き勝手やってやがる
829デフォルトの名無しさん:2007/07/24(火) 18:08:26
>>828
あ〜はいはい、去年質問したけど質問の仕方が悪くて
今年は自分が質問者を弄るようになった基地外えせ回答者さん乙でありますw
うぜぇから他の回答者の迷惑になるから、文句を言うだけのレスはするなや、答える気も
答える能力もないくせに、うざすぎ
830デフォルトの名無しさん:2007/07/24(火) 18:10:00
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):
二つの任意の正の整数の乗算(*)を、シフト演算の組合わせと除算(/)と
加算(+)のみで解くプログラムを作成しなさい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 7月25日まで
[5] その他の制限: ビット演算まで習っています。

お願いします。
831デフォルトの名無しさん:2007/07/24(火) 18:11:10
>>828
まぁ、アレだからスルーしてあげてくれ。
832デフォルトの名無しさん:2007/07/24(火) 18:11:43
答える気も能力もないクズらが質問者を叩くだけで自己満足か、必死だな
833デフォルトの名無しさん:2007/07/24(火) 18:17:21
何だ、本当に答える気がなくて質問者をスレのルールに則って詰るだけの低レベルか。
相手にするだけ無駄だ、お前ら俺がいる限り、もうこのスレには来なくて良いから。
邪魔だから失せろ。
834デフォルトの名無しさん:2007/07/24(火) 18:19:16
>>827
質問者に対して、回答ではなく叩きでレスしているって意味だと思うんだが。
頭大丈夫か?
835デフォルトの名無しさん:2007/07/24(火) 18:20:30
ここは馬鹿がアホをたたくスレですか?
836デフォルトの名無しさん:2007/07/24(火) 18:21:31
>>834
お前こそ頭大丈夫か?文盲?
837デフォルトの名無しさん:2007/07/24(火) 18:21:38
>>833
勝手にすればwww
838デフォルトの名無しさん:2007/07/24(火) 18:22:39
>>834
>いちいちうぜーレスするなよ、邪魔。お前みたいな奴いらねーって
これに対してオマエモナーだろ。
839デフォルトの名無しさん:2007/07/24(火) 18:24:38
>>838
いや、オマエモナーは>>827=>>838さんの専売特許ですから
840デフォルトの名無しさん:2007/07/24(火) 18:27:21
なんか話が通じてないぞ。
841にゃ〜:2007/07/24(火) 18:31:53
f(x)=sin(x)をテイラー展開すると

   ∞
f(x)=(-1)^(k-1)*{x^(2k-1)/(2k-1)!}
   k=1

となる.これを利用してsin(x)の値を多項式近似する関数double mysin(double x)を定義し,この関数を利用して,読み込んだ実数xのsin(x)を計算して出力するプログラム(sin.c)を書け.
また,数学関数sin(x)と自分で作ったsin(x)を比較せよ.

という問題なのですがどうしてもわからないんです。
今日中にできる方いらっしゃいますか??  
理解したいので、コメント付きでどうかお願いします。
842デフォルトの名無しさん:2007/07/24(火) 18:36:48
ループで適当なとこまで足してきゃいいだけだろ。
843デフォルトの名無しさん:2007/07/24(火) 18:39:32
>>841
どの辺が分からない?式の意味は分かるよね?
844デフォルトの名無しさん:2007/07/24(火) 18:58:17
>>841
#include <stdio.h>
#include <math.h>

double mysin(double x) {
double sub = 1.0;
int last = 1001; /* 奇数 */
while (last > 1) {
sub = 1 - (x*x / ((last-1)*last)) * sub;
last -= 2;
}
return x * sub;
}
int main(int argc, char *argv[]) {
while (1) {
double x;
scanf("%lf", &x);
printf("mysin(x) = %lf\t(sin(x) = %lf)\n", mysin(x), sin(x));
}
}
/* コメント:原点から遠ざかると近似が効かなくなるのはマクローリンの宿命だな */
845デフォルトの名無しさん:2007/07/24(火) 20:27:21
マクローリン云々よりも漸化式の形で解くのに疑問を持つ
1001もマジックでエロい人だなぁ
846デフォルトの名無しさん:2007/07/24(火) 21:42:25
>>841
クソわかりやすいつもり。わからないなら数学やりなおせ
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4737.c
847デフォルトの名無しさん:2007/07/24(火) 21:55:07
>>753
ありがとうございますー
最長一致するようにして使わせてもらいます

>\(\)は無理,ってか>>719の言い方じゃイラネエじゃんクソ
勘違いしてたみたいですね
すいません

>つーかなに?ほんとはライブラリとか使えんじゃねーのか???
>>>420が問題の趣旨を理解していない気が激しくするぞコラ
授業ではプリプロセッサにまったく触れてないんでそれはないです
848デフォルトの名無しさん:2007/07/24(火) 22:22:39
さんざん考えたけど難しかったです。
よろしくお願いします。
[1] 授業単元: アルゴリズム
[2] 問題文(含コード&リンク):
2つの複素数z=a+bi、w=c+di(ただしiは虚数単位)を読み込み、足し算とかけ算を計算して表示するプログラムを作成せよ。
但し、以下の仕様を満足するように作成すること。
・複素数の実部と虚部を示す実数型変数をメンバとする構造体COMPLEXを構造体で定義する。
・足し算の関数:COMP_ADD(z、w)とかけ算の関数:COMP_MULT(z、w)を作成し、main関数ではこれらの関数を呼び出す。
(実行例)
1つ目の複素数(実部):2
1つ目の複素数(虚部):3
2つ目の複素数(実部):4
2つ目の複素数(虚部):-2
足し算:(6)+(1)i
かけ算:(14)+(8)i
(ヒント)
複素数を扱う構造体(メンバで実数部、虚数部を2つの数値で格納)を宣言し、各変数を格納、演算を行う。
複素数同士の足し算、かけ算は普通に行う。
(a+bi)+(c+di) (a+bi)×(c+di)
を展開して虚数の2乗は-1という知識があれば解ける。
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin gcc
 [3.3] 言語: C言語
[4] 期限:7/26(木)12:00まで
849にゃ〜:2007/07/24(火) 22:46:34
いろいろやってみたところ自己解決しました
載せてくれた人もいるみたいですが
いちおう礼をいっておきます
850デフォルトの名無しさん:2007/07/24(火) 23:00:02
>構造体COMPLEXを構造体で定義する。
構造体を構造体以外でどうやって定義するんだよw
851デフォルトの名無しさん:2007/07/25(水) 00:00:30
>>848 ほい。名前が適当だから、そこだけ自分で修正して。

#include <stdio.h>
typedef struct{
double r;
double i;
} comp;

comp add_comp(comp c1,comp c2){
comp tmp;
tmp.r=c1.r+c2.r;
tmp.i=c1.i+c2.i;
return tmp;
}

comp mul_comp(comp c1,comp c2){
comp tmp;
tmp.r=c1.r*c2.r-c1.i*c2.i;
tmp.i=c1.r*c2.i+c1.i*c2.r;
return tmp;
}
852デフォルトの名無しさん:2007/07/25(水) 00:01:35
>>851の続き

int main(){
comp c1={2.0,3.0};
comp c2={4.0,-2.0};
comp result;
printf("1つ目の複素数(実部):%lf\n",c1.r);
printf("1つ目の複素数(虚部):%lf\n",c1.i);
printf("2つ目の複素数(実部):%lf\n",c2.r);
printf("2つ目の複素数(虚部):%lf\n",c2.i);

result=add_comp(c1,c2);
printf("足し算:(%lf)+(%lf)i\n",result.r,result.i);
result=mul_comp(c1,c2);
printf("かけ算:(%lf)+(%lf)i\n",result.r,result.i);

return 0;
}
853デフォルトの名無しさん:2007/07/25(水) 00:24:02
[1] 授業単元:c言語
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4739.txt
[3] 環境
 [3.1] OS:windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語: C
[4] 期限: 7月26日まで
[5] その他の制限:ファイルを読込んだり、書込んだりするところを習いました。
854デフォルトの名無しさん:2007/07/25(水) 00:29:39
>>853
例をみると、改行も区切りと見なしてるが、それでいいのか?
855デフォルトの名無しさん:2007/07/25(水) 00:32:04
>>854
はい
856にゃ〜:2007/07/25(水) 00:37:12
>>844
わかりやすいっす!!
ありがとうございます。勉強しなおします
857デフォルトの名無しさん:2007/07/25(水) 00:39:18
858デフォルトの名無しさん:2007/07/25(水) 00:52:03
859デフォルトの名無しさん:2007/07/25(水) 00:54:40
860853:2007/07/25(水) 00:57:53
すいません。
補足で
入力ファイルを読込モードでオープン
出力ファイルを書出モードでオープン
while ( 1 ) {
入力ファイルから書式付で字句を読込
ファイル終端なら脱出
出力ファイルに書式付で番号を付けて書込
}
入力ファイルをクローズ
出力ファイルをクローズ
と言う形で作れと書いていました。
861デフォルトの名無しさん:2007/07/25(水) 01:02:14
>>860
後だしイクナイ
862デフォルトの名無しさん:2007/07/25(水) 01:03:16
863デフォルトの名無しさん:2007/07/25(水) 01:04:32
>>862の#include <ctype.h>は不要だから消しておいて
864853:2007/07/25(水) 01:15:02
ありがとうございました。
865デフォルトの名無しさん:2007/07/25(水) 10:02:24
>>851 >>852
ありがとうございます。
ソースも分かりやすく書いてくれたみたいで、参考になります。
866デフォルトの名無しさん:2007/07/25(水) 10:02:24
パワプロ14でオールAを作るプログラムを作れ
867デフォルトの名無しさん:2007/07/25(水) 10:48:35
すごい宿題だな
868デフォルトの名無しさん:2007/07/25(水) 11:20:58
>>866
攻略本が必要だ。
でも宿題の内容熱いな。
869デフォルトの名無しさん:2007/07/25(水) 11:44:08
探索とその評価の方法をパワプロを通して学ぶわけだな
870 ◆6MtsdamhF6 :2007/07/25(水) 11:45:35
すいません、まだ初心者であんまりわかりません。
締切が近いのでどうかお願いします

【質問テンプレ】
[1] 授業単元:プログラミングC言語
[2] 問題文(含コード&リンク):
次の違いに注意しながら、forの変わりにwhileを使うものにそれぞれ
書き換えなさい。ただし書き換えは最低限にすること
(1)
#include<stdio.h>
main(){
int nc, c;
for(nc = 0; (c= getchar()) != EOF; nc++)
printf("%c", c);
printf("\nTatal=%d\n", nc);
}

A#include<stdio.h>
main(){
int nc, c;
for(nc = 0; (c= getchar()) != EOF; nc++)
putchar(c);
printf("\n%d\n", nc);
}
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限:今日の14時までなんです。
どうかおねがいします。
871デフォルトの名無しさん:2007/07/25(水) 14:19:36
#include<stdio.h>
main(){
int nc=0, c;
while((c= getchar()) != EOF) {
printf("%c", c);
nc++;
}
printf("\nTatal=%d\n", nc);
}

#include<stdio.h>
main(){
int nc=0, c;
while((c= getchar()) != EOF) {
putchar(c);
n++;
}
printf("\n%d\n", nc);
}

期限切れだが
872デフォルトの名無しさん:2007/07/25(水) 14:22:21
Aのn++はnc++の間違い
873デフォルトの名無しさん:2007/07/25(水) 15:46:14
今、>>841をやってみた。最初は簡単かと思ったけど、
そのまま階乗つかうとオーバーフローするから面倒なのね。
>>844ほど華麗ではないけど、x/n * ...x/3 * x/2 * x/1の和で計算した。
874デフォルトの名無しさん:2007/07/25(水) 15:55:45
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
以下のように、2桁以下の正整数が1行に3つずつ書かれたファイルを input.txt とする。
ただし、ファイルの末尾には、終了を表す番兵0がある。
1 45 90
2 7 41
13 67 60
0
入力リダイレクトで input.txt を読み込み、出力リダイレクトで、以下のような形式で output.txt に保存するプログラムを作れ。
番号 数学 英語 合計
01 45 90 135
02 7 41 48
13 67 60 127
[3] 環境
 [3.1] OS: windows
 [3.2] コンパイラ名とバージョン:bcc32
 [3.3] 言語: C
[4] 期限:7/27
反復構文を使うっぽいです。
875デフォルトの名無しさん:2007/07/25(水) 16:42:24
[1] 授業単元:情報基礎
[2] 問題文:次の仕様を満たすプログラムを作成せよ
(1)入力は2以上の整数n
出力はnのすべての正の約数
(2)入力は2以上の整数n
出力はnの正の約数の個数
(3)入力は2以上の整数n
出力はnが素数ならば"n is prime",
合成数ならば"n is not prime"
(nの部分には、入力した整数が表示されるようにすること)
3つのプログラムは1つにまとめてもよい。その場合には、ど
れが約数でどれが約数の個数を表しているかが分かるようにす
ること。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:c
[4] 期限:7月27日(金)提出は20:45までです
876デフォルトの名無しさん:2007/07/25(水) 16:43:30
>>874
#include <stdio.h>
void main(){
int buf = 0;
int count = 0;
int total = 0;
printf("番号 数学 英語 合計\n");
while(scanf("%d",&buf)) {
if(buf == 0)
break;
count++;
printf("%d ", buf);
total += buf;
if(!(count%3)){
printf("%d\n", total);
total = 0;
}
}
}
なんにもエラー処理してないけどこんなんでいいかな・・・
877デフォルトの名無しさん:2007/07/25(水) 16:58:51
>>875
#include<stdio.h>
int main(){
int n,c=0,i;
printf("n=");
scanf("%d",&n);
for(i=2;i<=n;i++)
if(n%i==0)
c++,printf("%d ",i);
printf("\n%d\nn is ",c);
if(c!=1)
printf("not ");
printf("prime.\n");
return 0;
}
878デフォルトの名無しさん:2007/07/25(水) 17:01:34
間違えた・・
#include<stdio.h>
int main(){
int n,c=0,i;
printf("n=");
scanf("%d",&n);
for(i=2;i<=n;i++)
if(n%i==0)
c++,printf("%d ",i);
printf("\n%d\n%d is ",c,n); //修正
if(c!=1)
printf("not ");
printf("prime.\n");
return 0;
}
879デフォルトの名無しさん:2007/07/25(水) 17:03:43
学校の先生はこのスレにかかれているままのコードで
宿題をだしている生徒がいたら、減点すればいいわけだなwwww
880デフォルトの名無しさん:2007/07/25(水) 17:17:55
教官、見てるなら指摘された問題の間違い位直せよ。
881デフォルトの名無しさん:2007/07/25(水) 17:31:47
そこまで良心的な教師いないよ
882デフォルトの名無しさん:2007/07/25(水) 17:55:14
[1] 授業単元: IT入門B1 C言語
[2] 問題文(含コード&リンク): 1辺10の立方体内部に含まれる四面体をN個発生し、
               体積の分布(区間数は20程度)を表示するプログラムを
               以下の要求に従って作成し、実行しなさい。
1,四面体を表す構造体(4つの3次元位置ベクトルをメンバーとする) を Tetra という名前で定義する.
typedef struct {. . .} Tetra;

2,構造体 Tetra を返却する,すなわち四面体を生成する以下の名前の関数を作成する.
Tetra mk_tetra(void)

3,四面体の体積を返す次の名前の関数を定義する.
double vol_tetra(Tetra t)

4,Nの値は実行時にキー入力するように設計しなさい.
          
[3] 環境
 [3.1] OS: (Windows/Linux/等々) Linux
 [3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) gcc 3.4
 [3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 7月25日20時迄
[5] その他の制限:
ヒントとして 1、講義で用いた"vector.h" を必ずincludeして使いなさい。
       2、四面体の1つの頂点を原点にして、他の3つの位置を表すベクトルを r1,r2,r3とすると、四面体の体積Vは以下のように与えられる
          V=1/6|(r1×r2)・r3|

vector.h はこれです http://www-it.sci.waseda.ac.jp/teachers/w405201/ITB1/Sources/vector.h

今日が期限なんですが、全然わからないんです。
よろしくお願い致します
883デフォルトの名無しさん:2007/07/25(水) 18:01:02
>>882
結果表示のイメージが分からない。グラフにするのかな?合計数値?
884 ◆TDJK/P.926 :2007/07/25(水) 18:16:42
【質問テンプレ】
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク)
講義中の題材として扱っていた電卓を、以下の点について改良せよ。
(1)変数に文字列を代入できるようにする。たとえば
   s1="Programing"
word="apple"
 のような代入が可能になる。

(2)文字を扱う関数を取り扱えるようにする。たとえば
 s1="Programing"
s2="Language"
s3=concatenate(s1,s2) 上で代入されたs1とs2を連結したものをs3に代入する。
s3
=ProgramingLanguage

(5)次のようなif文を使えるようにする。→if(条件式) 実行文
例: if(a+b>10) a=a-1
条件式には、>または<が使用できるものとする。条件式が成立していたときには、実行文(複文も可)を実行する。

(6)その他、この電卓に追加するとよいと思う昨日を考え、実現してみよ。

[3] 環境
 [3.1] OS:WindowsXP 上でのUNIX
 [3.2] コンパイラ名とバージョン: gcc (※yaccとlexのプログラミングです。
 [3.3] 言語:C言語
[4] 期限: (2007年07月27日20:00まで]
[5] その他の制限:講義中の題材のソースはすぐアップします。
885 ◆TDJK/P.926 :2007/07/25(水) 18:19:36
>>884のソースです。

※ヘッダファイル:ch3-05.h
#define NSYMS 20 /* maximum number of symbols */
struct symtab {
char *name;
double (*funcptr)();
double value;
} symtab[NSYMS];
struct symtab *symlook();
886 ◆TDJK/P.926 :2007/07/25(水) 18:20:42
>>885 続き

※lexファイル:ch3-05.l
%{
#include "y.tab.h"
#include "ch3-05.h"
#include <math.h>
%}
%%
([0-9]+|([0-9]*\.[0-9]+)([eE][-+]?[0-9]+)?) {
yylval.dval = atof(yytext);
return NUMBER; }
[ \t] ; /* ignore white space */
[A-Za-z][A-Za-z0-9]* { /* return symbol pointer */
struct symtab *sp = symlook(yytext);
yylval.symp = sp;
return NAME;
}
"$" { return 0; /* end of input */ }
\n |
. return yytext[0];
%%
yyerror(char *errmsg)
{
fprintf(stderr,"ERROR: %s at %s\n", errmsg, yytext);
}
yywrap(){}
887デフォルトの名無しさん:2007/07/25(水) 18:20:50
説明不足でした。申し訳ありません

N = 10000000
0.0 - 16.7: 0.699031
16.7 - 33.3: 0.206966
33.3 - 50.0: 0.065772
50.0 - 66.7: 0.020377
66.7 - 83.3: 0.005860
83.3 - 100.0: 0.001542
100.0 - 116.7: 0.000351
…中略…
316.7 - 333.3: 0.000000

が実行例としてありました。それぞれ体積の範囲ごとに
どれくらい分布しているかを箇条書きみたいに出すみたいです。
888 ◆TDJK/P.926 :2007/07/25(水) 18:23:05
>>886続き

※yaccファイル:ch3-05.y
%{
#include "ch3-05.h"
#include <string.h>
#include <math.h>
%}
%union {
double dval;
struct symtab *symp;
}
%token <symp> NAME
%token <dval> NUMBER
%left '+' '-'
%left '*' '/'
%nonassoc UMINUS
%type <dval> expression
%%
statement_list: statement '\n'
| statement_list statement '\n'
;
statement: NAME '=' expression { $1->value = $3; }
| expression { printf("= %g\n", $1); }
;
889 ◆TDJK/P.926 :2007/07/25(水) 18:25:09
>>888 yaccの続き。次で最後です。
expression: expression '+' expression { $$ = $1 + $3; }
| expression '-' expression { $$ = $1 - $3; }
| expression '*' expression { $$ = $1 * $3; }
| expression '/' expression { if($3==0.0) yyerror("Divide by Zero");
else $$ = $1 / $3; }
| '-' expression %prec UMINUS { $$ = -$2; }
| '(' expression ')' { $$ = $2; }
| NUMBER { $$ = $1; }
| NAME { $$ = $1->value; }
| NAME '(' expression ')' { if( $1->funcptr ) $$ = ($1->funcptr)($3);
else {printf("%s not a function.\n", $1->name);
}
}
;
%%
/* look up a symbol table entry, add if not present */
struct symtab *symlook(char *s)
{
char *p;
struct symtab *sp;
for(sp=symtab; sp<&symtab[NSYMS]; sp++) {
/* is it already here? */
if( sp->name && !strcmp(sp->name, s) ) return sp;
/* is it free */
if( !sp->name ) { sp->name = strdup(s);
           return sp;}
/* otherwise continue to next */
}
yyerror("Too many symbols");
exit(1); /* cannot continue */
} /* end of symlook */
890 ◆TDJK/P.926 :2007/07/25(水) 18:35:56
>>889 これで最後です。
void addfunc(char *name, double (*func)())
{
struct symtab *sp = symlook(name);
sp->funcptr = func;
}
int main()
{
extern double sqrt(), exp(), log(), sin(), cos();
addfunc("sqrt", sqrt);
addfunc("exp", exp);
addfunc("log", log);
addfunc("sin", sin);
addfunc("cos", cos);
yyparse();
return 0;
}
891デフォルトの名無しさん:2007/07/25(水) 18:44:24
>>1にもある様に長文はロダ使おうぜ
その方が回答者にとってはやりやすい

って書くといつもの基地外に噛み付かれるのかなぁ?
892デフォルトの名無しさん:2007/07/25(水) 18:47:19
◆TDJK テンプレ嫁
893デフォルトの名無しさん:2007/07/25(水) 18:47:47
>>891
ガブ
894 ◆TDJK/P.926 :2007/07/25(水) 18:47:51
>>891
うpロダには学校からアクセスしてるので規制されててアクセスできないんですよ(汗)申し訳ないです。
895デフォルトの名無しさん:2007/07/25(水) 18:50:20
2chはおkなのに?おかしな話だ
896 ◆TDJK/P.926 :2007/07/25(水) 18:54:39
>>895
2ch自体にはアクセスできますがPink板など18禁系には規制かかります。
うpロダもそれで規制かかったので。
897デフォルトの名無しさん:2007/07/25(水) 19:05:05
いくらでもあるのに規制って(´,_ゝ`)プッ
宿題まるなげするやつのいいそうなことだ。(´,_ゝ`)プッ
898デフォルトの名無しさん:2007/07/25(水) 19:10:14
899デフォルトの名無しさん:2007/07/25(水) 19:11:16
説明不足でした。申し訳ありません。

N = 10000000
0.0 - 16.7: 0.699031
16.7 - 33.3: 0.206966
33.3 - 50.0: 0.065772
50.0 - 66.7: 0.020377
66.7 - 83.3: 0.005860
83.3 - 100.0: 0.001542
100.0 - 116.7: 0.000351
…中略…
316.7 - 333.3: 0.000000

が実行例としてありました。それぞれ体積の範囲ごとに
どれくらい分布しているかを箇条書きみたいに出すようです。
よろしくお願いします。

900デフォルトの名無しさん:2007/07/25(水) 19:12:19
>>898こてはずして必死だなwww
901デフォルトの名無しさん:2007/07/25(水) 19:54:06
902デフォルトの名無しさん:2007/07/25(水) 19:58:05
903デフォルトの名無しさん:2007/07/25(水) 19:58:54
age
904デフォルトの名無しさん:2007/07/25(水) 20:01:53
スマン影響ないけど if(j > 30) j = 30; → if(j > 29) j = 29;
905デフォルトの名無しさん:2007/07/25(水) 20:04:49
[1] プログラミング
[2]
キーボードから入力された1行を読み込み,そのアルファベットを全て大文字に
変換して表示するプログラムを作成しなさい。なお,以下に与えられるメイン関数を必ず使用し,
文字列を大文字の文字列に変換する関数str_capを作成することで完成させなさい。

ヒント:小文字とは「'a'以上 かつ 'z'以下」の文字であるので,条件式が成立した場合に
小文字→大文字変換を行う。それ以外の文字はそのままにする。 Program: pt3-3.c の一部
#include <stdio.h>
#define MAXLINE 1024
void str_cap(char src[], char dst[]);

int main(void) {
char line[MAXLINE], conv[MAXLINE];

printf("Input a line ->");
gets(line);
str_cap(line, conv);
printf("Original : %s\n", line);
printf("Converted: %s\n", conv);
return 0;
}

実行結果

$ ./pt3-3
Input a line -> hiroshima city
Original : hiroshima city
Converted: HIROSHIMA CITY
$
906デフォルトの名無しさん:2007/07/25(水) 20:05:46

[3] 環境
 [3.1] Linux
 [3.2] gcc 3.4
 [3.3] C
[4] [無期限]
[5] 関数部分をifを使って組む、toupperは使ってはいけない

お願いします
907デフォルトの名無しさん:2007/07/25(水) 20:26:03
どなたか>>810
分かりませんか?

offspringを使って左右に潜っていくんだろうけど
最終的にどうなれば求める値なのかさっぱりわからん・・・・
908デフォルトの名無しさん:2007/07/25(水) 20:29:28
>>905 mainより上にコピーして
void str_cap(char str1[], char str2[]) {
int i;
for(i = 0; str1[i] != '\0'; i++) {
if(('a'<=str1[i]) && (str1[i]<='z')) str2[i]=str1[i]-'a'+'A';
else str2[i]=str1[i];
}
str2[i]='\0';
}
909デフォルトの名無しさん:2007/07/25(水) 20:34:48
>>908 ごめん、str1 -> src、str2 -> dst、ってことで。
910デフォルトの名無しさん:2007/07/25(水) 20:38:18
>>905
ヒントは無視してるがやってみた
#include<stdio.h>
int main(void){
char lower[]="abcdefghijklmnopqrstuvwxyz";
char upper[]="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int i;
printf("void str_cap(const char *src, char *dest){\n");
printf("\tdo{\n");
printf("\t\t*dest=*src;\n");
for(i=0;i<26;i++) printf("\t\tif(*src=='%c') *dest='%c';\n", lower[i], upper[i]);
printf("\t\tsrc++;\n");
printf("\t\tdest++;\n");
printf("\t}while(*src);\n");
printf("}\n");
return 0;
}
911デフォルトの名無しさん:2007/07/25(水) 20:38:39
>>905
それvipでみたな
ヒントもらえたのに解決しなかったのか?
912デフォルトの名無しさん:2007/07/25(水) 20:38:40
4文字の文字列を入力してF,R,E,Eの4文字で構成されていたらOK
それ以外なら入力しなおす。

ERFEやEERFもOK。この4文字で構成(F,RとEが2回で
913デフォルトの名無しさん:2007/07/25(水) 20:40:28
DEAD BEEF
BAD FACE
914デフォルトの名無しさん:2007/07/25(水) 20:42:48
>>910 は '\0' 入れ忘れてる orz

printf("}\n");

printf("\t*dest='\0';\n}\n");
915デフォルトの名無しさん:2007/07/25(水) 20:56:53
>>902
ありがとうございます。ギリギリ間に合いました。
お手数かけてすみませんでした。
916デフォルトの名無しさん:2007/07/25(水) 21:04:05
>>912
宿題なら >>1 を読んで書きなおし
917デフォルトの名無しさん:2007/07/25(水) 21:10:39
>>908
>>910
ありがとうございました。
918デフォルトの名無しさん:2007/07/25(水) 21:22:18
>>908のように打ち込んだのですが、gets以外でfunction mainでエラーが発生し
printf("Converted: %s\n", conv);のconvの部分が出力されません
http://newjizou.s6.xrea.com/cgi-bin/source/up0098.c
919デフォルトの名無しさん:2007/07/25(水) 21:27:47
>>918
これじゃコンパイルできんだろ?
920デフォルトの名無しさん:2007/07/25(水) 21:29:33
>>919
コンパイルはできたのですが、その部分が出力されないのです。
921デフォルトの名無しさん:2007/07/25(水) 21:30:11
>>909の通りに置換されきれてない上に置換された文字が間違ってる
置換すらまともにできないのかYO
922デフォルトの名無しさん:2007/07/25(水) 21:36:52
>>902
度々すみません。コンパイルがうまくできてないようなんですが
どこが間違っているのかわからないのですが。
お教え願いないでしょうか?
923デフォルトの名無しさん:2007/07/25(水) 21:43:05
int main(int argc, char *argv[]) → int main(void)

にするといいかもNE!
924デフォルトの名無しさん:2007/07/25(水) 21:43:11
>>921
コンパイルはできたのはこっちでした
http://newjizou.s6.xrea.com/cgi-bin/source/up0099.c
925デフォルトの名無しさん:2007/07/25(水) 21:49:44
だからね・・・
置換された文字が間違ってるからダメなんだ
926デフォルトの名無しさん:2007/07/25(水) 21:53:32
>>925
落ち着いて見てみると修正した部分以外にも違っていた
すみません、本当に自分が馬鹿でした・・・
927デフォルトの名無しさん:2007/07/25(水) 21:57:13
>>924
折角変換処理を通した後で '\0' で上書きするということは
memset(dest, '\0', strlen(str));
と等しい。
928デフォルトの名無しさん:2007/07/25(水) 22:04:12
>>927
>>908のstc[i]='\0';の部分を修正したところ、正常に動作しました
ありがとうございました、お世話かけました。
929デフォルトの名無しさん:2007/07/25(水) 22:08:37
[1] 授業単元:OS概論
[2] 問題文(含コード&リンク):
Linuxでは、mmap()システムコールを使うと、
複数のプロセス間で仮想アドレス空間の一部を共有することができる。
このようなプログラムを作成し、
実際に仮想アドレス空間の一部が共有されていることを確認しなさい。

[3] 環境
 [3.1] OS: LINUX
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年7月26日まで

さっぱり見えてきません。
何卒宜しくお願い致します。
930デフォルトの名無しさん:2007/07/25(水) 22:20:51
[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
正の整数nを入力して、1からnまでの積(階乗)を求めるプログラムを
作成さいなさい
[3] 環境
 [3.1] OS: Windows
 [3.2] 言語: C言語
[4] 期限: 2時間以内
よろしくお願いします
931デフォルトの名無しさん:2007/07/25(水) 22:34:26
#include <stdio.h>
int main(void)
{
unsigned int n, val = 1;

scanf("%d", &n);
while (n > 0) {
val *= n--;
}
printf("%d\n", val);
return 0;
}

こんなんでいいの?
unsigned intを超える値を表示させろというなら面倒だな。
932デフォルトの名無しさん:2007/07/25(水) 22:39:03
>>930
#include <stdio.h>
int main(void) {
int n,i,r;
printf("n = ");
scanf("%d",&n);

for(i=1,r=1; i<=n; i++)
printf("%d! = %d\n",i,r*=i);
return 0;
}
933デフォルトの名無しさん:2007/07/25(水) 23:10:40
>>930 ちょっと変わったところで、こんなのはどう?
>>931の言うように、任意のnには無理だけど。
#include <stdio.h>

int fact(int n){
return n>1?n*fact(n-1):1;
}

int main(){
int n;
printf("n = ");
scanf("%d",&n);
printf("%d\n",fact(n));
return 0;
}
934プログラミング初心者:2007/07/25(水) 23:23:39
[1]授業単元:c言語

[2]問題文(含コード&リンク): 2つの符号なし整数a,b(ただし、a>bとする)を
キーボードから読み込み
@a,bを2進表示し、配列の中にビットを格納しなさい
Aa,bの四則演算
c=a+b
d=a-b
e=a*b
f=a/b(商f1と余りf2)を計算しその結果を出力しなさい

[3]環境
 [3.1] OS: Windows
 [3.2] 言語: C言語

[4]期限:2007年7月28日まで
全然見えてきません。
よろしくお願いします。
935デフォルトの名無しさん:2007/07/25(水) 23:34:59
[1] 授業単元: C言語演習
[2] 問題文:
自分で作成したデータファイルを読み込みんで以下のような出力が出るようにする。
abc efg abc hijkl efg xxxxxxxxx これを
abc, 3 efg, 3 hijkl, 5 xxxxxxxxx, 9 のようにする。
同じ文字は二度も表示させない。それぞれの文字数をカウントする。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C++
[4] 期限:7月30日まで

よろしくお願いします。
936デフォルトの名無しさん:2007/07/25(水) 23:54:44
>>934
こんなんでいいかい?

#include <stdio.h>
void dtob(unsigned int n, char *s) {
unsigned int i = 32;
s[i] = '\0';
for (i = 31; i >= 0; i--) {
s[i] = (((n >> (31 - i)) & 1) + '0');
}
}

int main(void) {
unsigned int a, b;
char buf[33]; /* for 32bit */

scanf("%d %d", &a, &b);
dtob(a, buf);
printf("%s\n", buf);
dtob(b, buf);
printf("%s\n", buf);
printf("%d + %d = %d\n", a, b, a+b);
printf("%d - %d = %d\n", a, b, a-b);
printf("%d * %d = %d\n", a, b, a*b);
b && printf("%d / %d = %d(%d)\n", a, b, a/b, a%b);
return 0;
}
937デフォルトの名無しさん:2007/07/26(木) 00:17:33
>>929 やっつけなので、かなりアレだかけど、一応、課題は満たせると思う。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4748.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4749.c
使い方
1:4748と4749を同じディレクトリ内でコンパイルする。
さらに、同じディレクトリ内に、hogeという名前のファイルを作る。
2:端末を二つ立ち上げ、片方で4748を、もう片方で4749を実行する。
3:4748で2,3文字入力してエンターしたあと、4749で'x'以外で何か一文字入力してエンター
4:すると、4748で入力した文字列が4749のプログラムに出力される。
938デフォルトの名無しさん:2007/07/26(木) 00:18:31
どなたか>>929を御願いします…
939938:2007/07/26(木) 00:20:49
リロードし忘れorz
>>937のを試してみます
ありがとうございました
940686:2007/07/26(木) 00:26:12
>>702
http://sa-wiki.com/upload/src/up0151.txt

>期限: ([2007年7月23日9:00まで] )
もうとっくに切れているし、必要ないかもしれませんが、一応作ったので
極力ソースの変更はしないようにしたつもりです
コメントは入れてませんし、メモリの開放が失敗しているかもしれません
問題の「その後、木のノードからつながる住所データを表示する。」の意味が分からなかったので手を付けていません
素人(自分)がやったのできれいではありません
941デフォルトの名無しさん:2007/07/26(木) 00:26:38
>>935
「同じ文字は二度も表示させない」ってのは何のこと?
「同じ単語は…」のことか?
942デフォルトの名無しさん:2007/07/26(木) 00:41:47
>>810
dataType* f(nodeType *p,int k) {
int n=k;
if(k<1)return NULL;
if(p->left!=sentry)n-=(p->left->offspring+1);
if(n==1)return &(p->data);
if(n<1)return f(p->left,k);
if(p->right!=sentry)return f(p->right,n-1);
return NULL;
}
dataType* RBSTfindKth(int k){
return f(head,k);
} 該当箇所にコピー,ヘッダにf()の宣言追加,
メニュー文字列に5:find追加でおk
943デフォルトの名無しさん:2007/07/26(木) 01:39:43
[1] 授業単元:プログラミング演習I
[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4751.txt
[3] 環境
 [3.1] Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7/31まで
[5] その他の制限:特になし


締め切り間近です。
どうか皆さんの力を貸してください。
944デフォルトの名無しさん:2007/07/26(木) 01:45:29
[1] 授業単元: プログラミング言語論
[2] 問題文:
読み込んだ分数を連分数として出力せよ。全ての分子が1になったときに連分数にする計算はとめればよい。
[3] 環境
 [3.1] OS: Windows
 [3.3] 言語: C++
[4] 期限:明日(正確には今日)まで・・・

お願いします。
945デフォルトの名無しさん:2007/07/26(木) 02:18:38
>>944
まず
> 読み込んだ分数
っていう前提条件をよこせ
946944:2007/07/26(木) 02:21:10
問題があやふやですいません。

float a, b, c;
std::cin >> a;
std::cin >> b;

c = a/b;

上記でいうcが読み込んだ分数です。
よろしくお願いします。
947デフォルトの名無しさん:2007/07/26(木) 02:26:58
>>943
なんとなく lexico だけ
#define lwstr(x) (isupper(x)?tolower(x):(x))
int lexico(char *a,char *b){
int i=0;
while(*a && *b)
i=lwstr(*a)-lwstr(*b),a++,b++;
return i;
}
948デフォルトの名無しさん:2007/07/26(木) 02:33:59
>>943
ヒント・参考のとおりに書いたつもり
くそーすだが
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4752.c
949デフォルトの名無しさん:2007/07/26(木) 02:35:07
>>944
よりによってfloatか.微妙な誤差が出るかも
記法はwikiにならった
#include <iostream>
using namespace std;
int main() {
float A, B;
cout << "input numerator (A in A/B)" << endl;
cin >> A;
cout << "input denominator (B in A/B)" << endl;
cin >> B;
if (A == 0) {
cout << 0 << endl;
} else if (B == 0) {
cout << "error" << endl;
} else {
cout << "[" << (int)(A/B) << "; ";
A = A-(int)(A/B)*B;
while (A != 1) {
if (B-(int)(B/A)*A == 0) { B /= A; break; }
cout << (int)(B/A) << ", ";
float w = A; A = B-(int)(B/A)*A; B = w; }
cout << (int)B << "]" << endl; } }
950944:2007/07/26(木) 02:46:42
>>949

ありがとうございます!このアルゴリズムを理解して寝ますwww
本当に助かりました☆
951948:2007/07/26(木) 02:53:49
lexico関数の中の int k はいらないから消しといて><
952デフォルトの名無しさん:2007/07/26(木) 05:58:29
クソースってのは俺が最初に使った言葉だ、一回使うたびに¢10徴収するニダ
953デフォルトの名無しさん:2007/07/26(木) 06:38:34
どう考えてもブルドックソースのほうが先
954デフォルトの名無しさん:2007/07/26(木) 09:04:59
んじゃブルドックソースに一部を納めるから、クソースを使うたびに¢50徴収する二ダ
955デフォルトの名無しさん:2007/07/26(木) 09:10:02
だれかクイックソートのフローチャートを図付きで詳しく説明してください
俺の頭じゃわかりません><
956デフォルトの名無しさん:2007/07/26(木) 09:10:39
>>955 ¢50払え
957デフォルトの名無しさん:2007/07/26(木) 09:11:48
958デフォルトの名無しさん:2007/07/26(木) 09:21:14
ググってもわかりやすいフローチャートが出ないんだ(´・ω・`)
959デフォルトの名無しさん:2007/07/26(木) 09:23:06
あれで理解できないなら諦めろ。所詮、才能の無い奴、理解力の無い奴は
一応学校の規定で単位はもらえるが、適切に行動が起こせないから困る。
今はなんだかんだ言ってもバカでも金で学歴が買える時代だしな。
960デフォルトの名無しさん:2007/07/26(木) 13:40:50
>>955
要は再帰呼び出しが理解できないでハマってるんだろうけど
フローチャートで書いてもそこんところは分かりやすくならんのよ
961デフォルトの名無しさん:2007/07/26(木) 13:44:20
寧ろ、フローチャートなんか使うから余計に理解しにくくなると思うんだが。
962デフォルトの名無しさん:2007/07/26(木) 13:56:20
トランプかなんかで、試してみれ
963デフォルトの名無しさん:2007/07/26(木) 13:57:03
[1] 授業単元: C言語
[2] 問題文(含コード&リンク): ttp://s-io.mydns.jp/up/1/_/jump/1185417223.c/attatch PASS:c
四則演算のプログラムとして提出したのですがgets関数を使って書き換えろといわれ返されてしまいました
上のプログラムを元にして文字入力(取得)にgets関数を使った物を作ってください。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語:C言語
[4] 期限: 7月27日
[5] その他の制限: gets関数をつかっていればそれ以外には特に指定なし

よろしくお願いします。
964デフォルトの名無しさん:2007/07/26(木) 14:02:17
教育目的とはいえ今時gets使えとかどこのアホ教授だ
965デフォルトの名無しさん:2007/07/26(木) 14:36:12
>>963
void readch(void) /* 1文字を読む、空白は読み飛ばす */
{
#if 0
do {
if ((ch = getchar()) == EOF) return;
} while (ch == ' ' || ch == '\t');
#else
static char buf[1000];
static int index;
if (index == 0) gets(buf);
do {
if ((ch = buf[index++]) == '\0') {
ch = '\n';
return;
}
} while (ch == ' ' || ch == '\t');
#endif
}
966デフォルトの名無しさん:2007/07/26(木) 14:41:22
>>965
改悪にしかなってないのがwarosu

教官どんだけアホなのかと
967デフォルトの名無しさん:2007/07/26(木) 14:45:15
>>965
ありがとうございます。
やっぱり無理に書き換えても無駄が増えるだけですよね・・・
最初から新しく書き直したほうがいいんでしょうか?
968デフォルトの名無しさん:2007/07/26(木) 14:47:15
板谷だろ
969デフォルトの名無しさん:2007/07/26(木) 14:52:53
>>967
どう書き直そうがgets()を使う限り改悪にしかならんから諦めろ
(というかこのコードなら、例えfgets()であろうと同じことが言える)
970デフォルトの名無しさん:2007/07/26(木) 15:26:16
[1] 授業単元:C++実習
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4720.txt
プログラム問題文に沿って作ったものと、それに2つの要素を追加修正した
2つのプログラムの作成をお願いします。

[3] 環境
 [3.1] OS: windows XP
 [3.2] visual studio 2005
 [3.3] 言語: C++
[4] 期限: 2007/07/26 13:00まで
[5] その他の制限: 特に無し

よろしくお願いします
971デフォルトの名無しさん:2007/07/26(木) 16:12:59
投稿時すでに期限切れなのか
972デフォルトの名無しさん:2007/07/26(木) 16:15:21
ほんとだwこれは新しいww
973デフォルトの名無しさん:2007/07/26(木) 16:27:04
ごめんなさい、ごめんなさい。
>>970 の期限は
[4] 期限: 2007/07/30 13:00まで です。
先生方、お願いしまつ。
974デフォルトの名無しさん:2007/07/26(木) 17:32:00
[1] 授業単元:C言語
[2] 問題文

文字列が回文かどうか判定をするプログラムを作成せよ

実行例

文字列を入力してください。
abcdcba(Return)
abcdcbaは回文です。

文字列を入力してください。
unko6yy6oknu(Return)
unko6yy6oknuは回文です。

文字列を入力してください。
abcdefg(Return)
abcdefgは回文ではありません。

[3] 環境
 [3.1] Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 7/30まで
[5] その他の制限:特になし

ポインタを使わなければいけないみたいですがさっぱり分かりません。
先生方、もしよろしければお助けください。お願いします。
975デフォルトの名無しさん:2007/07/26(木) 17:58:32
976デフォルトの名無しさん:2007/07/26(木) 18:12:28
>>974
釣りはとっとけこのクソッタレ野郎
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4758.c
977デフォルトの名無しさん:2007/07/26(木) 18:15:23
ワザとやってんのかな
978デフォルトの名無しさん:2007/07/26(木) 18:17:28
// >>974
#include <stdio.h>
#include <string.h>
#include <stdbool.h>

bool isPalindrome(const char * word)
{
unsigned len = strlen(word);
if (len == 0) return false;
for (unsigned ic = 0; ic < len / 2; ++ic) {
if (word[ic] != word[len - 1 - ic]) return false;
}
return true;
}

int main()
{
char buf[200];
scanf("%199[^\n]", buf);
printf("%s is%s palindrome.\n", buf, isPalindrome(buf) ? "" : " not");
return 0;
}
979974:2007/07/26(木) 19:52:31
>>975
>>976
>>978
ありがとうございました
980943:2007/07/26(木) 20:05:11
>>947
>>948

返事遅れてすいませんでした
明日実行してみます
ありがとうございました
981デフォルトの名無しさん:2007/07/26(木) 20:21:04
>>970
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4759.zip
問題文に沿って作ったものと、2つの各要素を個別に追加したもの計3ファイル
2つの要素を両方追加したファイルが必要なら自分で作ってくろ。
982デフォルトの名無しさん:2007/07/26(木) 21:28:47 BE:94671252-2BP(12)
次スレ立てました
C/C++の宿題を片付けます 94代目
http://pc11.2ch.net/test/read.cgi/tech/1185452895/
983プログラミング初心者:2007/07/26(木) 22:18:40
>>936
ありがとうございます。
一度やってみましたがデバッグ後に何すればいいのかわかりません
984デフォルトの名無しさん:2007/07/26(木) 22:27:32
とりあえず、分かるところまででいいから解読しようとしようよ。
985デフォルトの名無しさん:2007/07/26(木) 23:11:17
>>935 同じディレクトリのwc_test.txtを読み込んで、単語数を数えて出力する。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4760.c
986デフォルトの名無しさん:2007/07/27(金) 00:04:02
[1] 授業単元: プログラミング演習
[2] 問題文(含コード&リンク):
以下の円周率を求めるプログラムに、
ニュートン法を適用し、加減乗算のみに書き換えなさい。

http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4761.txt
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: 特になし
 [3.3] 言語: C
[4] 期限: 2007年7月27日23:00まで
[5] その他の制限: よろしくお願いします。
987デフォルトの名無しさん:2007/07/27(金) 00:33:50
[1] 授業単元: プログラム言語
[2] 問題文:
再帰関数を用いて以下のような三角形を印字せよ。
入力:3

**
***
*の個数も印字せよ。
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン: gcc 3.4
 [3.3] 言語: C
[4] 期限: 2007年7月23日22:00まで
[5] その他の制限:
forで以下のように作ったのですが、再帰の場合の書き方がわかりません。以下を再帰に書き換えるような形で作っていただけると、大変有り難いです。
よろしくお願い致します。

#include<stdio.h>
int kazu(int n);
main()
{ int a,b;
scanf("%d",&a);
b=kazu(a); }
int kazu(int n)
{ int i,j;
for(i=1;i<=n;i=i+1)
{ for(j=0;j<i;j=j+1)
{ printf("*"); }
printf("\n"); }
}
988デフォルトの名無しさん:2007/07/27(金) 00:42:55
>>815
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4762.c
凝りに凝りまくったぜぇ
誰かに丸投げしたのが一目瞭然なほどにな
本当に丸投げスレは地獄だぜフウハァハー
989デフォルトの名無しさん:2007/07/27(金) 00:47:56
>>987
#include<stdio.h>
int kazu(int n);
main()
{ int a,b;
scanf("%d",&a);
b=kazu(a);
printf("%d\n",b);}
int kazu(int n)
{ int i,j;
if(n<1)return 0;
j=kazu(n-1);
for(i=0;i<n;i=i+1)
{ printf("*"); }
printf("\n");
return j+n;}
990デフォルトの名無しさん:2007/07/27(金) 00:58:54
>989さん
どうもありがとうございます。
本当に助かりました。
991デフォルトの名無しさん:2007/07/27(金) 01:07:29
おねがいします
[1] 授業単元:プログラミング基礎
[2] 問題文(含コード&リンク):
空白または改行で区切られている単語だけからなる文章があるとする。
これを列は15文字以内(全角を1文字、半角は0.5文字とする)
にして、最小の行に納めるようにせよ。
注意:単語の途中で改行をはさむことはできない。
(例)
123456789012345<-15文字分はここまで
--------ここから-----------------
日本 中国 アメリカ インド
フランス イタリア スペイン
メキシコ ドイツ カナダ イギリス スイス
サウジアラビア 南アフリカ共和国 ブラジル
--------ここまで----------------
(実行結果)
日本 中国 アメリカ インド
フランス イタリア スペイン
メキシコ ドイツ カナダ イギリス
スイス サウジアラビア
南アフリカ共和国 ブラジル

[3] 環境
 [3.1] OS: linux
 [3.2] コンパイラ名とバージョン: gcc2.95-3
 [3.3] 言語: C
[4] 期限: 8月1日
[5] その他の制限:
無制限(授業でならっていないものでも、自分で勉強して理解したのなら何をつかってもいい)
992デフォルトの名無しさん:2007/07/27(金) 01:10:50
丸投げってことは何も使っちゃ駄目ってことか・・・
993デフォルトの名無しさん:2007/07/27(金) 01:24:04
>>991
面白そうな問題だ。ちょっと時間がないんで解けないが・・・
これってナップサック問題っていうんだっけ?
あれみたいな感じで、入力内容によっては全パターン検索
しようとしたら膨大な時間になりそうな風に感じるんだが。
そういうの詳しい人いない?
994デフォルトの名無しさん:2007/07/27(金) 01:33:03
ナップサックというより組み合わせ計画問題。
グリーディ法でいけそうな問題だね。めんどくさそうだけど
995デフォルトの名無しさん:2007/07/27(金) 03:03:10
>>935
#include<iostream>
#include<string>
#include<vector>

using namespace std;

int main(void){
    vector<string> v;
    string word;
    int i;

    while(1){
        cin >> word;
        if(cin.eof() || cin.fail()) break;
        for(i=0;i<v.size();i++){
            if(v[i]==word) break;
        }
        if(i>=v.size()) v.push_back(word);
    }
    for(i=0;i<v.size();i++){
        cout << v[i] << "," << v[i].size() << " ";
    }
    cout << endl;

    return 0;
}
996デフォルトの名無しさん:2007/07/27(金) 04:18:53
#include <iostream>
#include <set>
#include <string>

int main( int argc, char ** argv ) {
typedef std::set< std::string > dict_t;
dict_t wc;
while ( 1 ) {
std::string word;
std::cin >> word;
if ( std::cin.eof() || std::cin.fail() ) break;
wc.insert( word );
}
for ( dict_t::iterator it = wc.begin(); it != wc.end(); it++ ) std::cout << *it << ", " << it->length() << " ";
std::cout << std::endl;
return 0;
}
set<> なり,map<> なりじゃなきゃ遅くてどうしようもないだろうに
997デフォルトの名無しさん:2007/07/27(金) 08:13:33
>>988
指定にgets使わないといけないとか言ってクレームした出題者がいるから
それもgets使わないといけないと思われ。
998デフォルトの名無しさん:2007/07/27(金) 08:51:42
>>991
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4773.c
全角半角の判定のために非標準の関数wcwidthを使った。
999998:2007/07/27(金) 08:54:04
>if(feof(stdin) || ferror(stdin))
>  break;
これは消し忘れ。
1000 ◆mM9WALL8Ws :2007/07/27(金) 08:54:13
1000GET
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。