C/C++の宿題を片付けます 93代目at TECH
C/C++の宿題を片付けます 93代目 - 暇つぶし2ch2:デフォルトの名無しさん
07/07/15 23:25:54
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: (Linux)
 [3.2] コンパイラ名とバージョン: (gcc 3.4 )
 [3.3] 言語: (C)
[4] 期限: (7月18日まで)
[5] その他の制限: (基本はすべて習いました)

よろしくお願いします

3:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 00:08:17
初心者で悪いんだが
>>2
のマージソートは再帰するからいいんじゃないの?

5:デフォルトの名無しさん
07/07/16 00:23:23
再帰を使わずに、でお願いします

6:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 01:02:37
>>6
ニュートン法になってないだろ

8:デフォルトの名無しさん
07/07/16 01:06:00
>>6
ありがとうございます。
とても初歩的な質問なんですが、
2行目のdouble sqr(double c);にはどんな意味があるんですか?
doubleが倍精度って…言葉だけは知ってるのですが。

9:デフォルトの名無しさん
07/07/16 01:08:47
何を言っているんだ

10:デフォルトの名無しさん
07/07/16 01:10:17
このスレで聞くより、まず参考書読んだほうが良い。
それでわからないことがあったらスレで聞く。

11:6
07/07/16 01:10:23
>>7
えっそうなの?
ずっとこれがニュートン法だと・・・・

12:デフォルトの名無しさん
07/07/16 01:12:36
>>7
そうなんですか?
ニュートン法で√2を求める場合、
f(x)=x^2-2=0として解けばいいんですよね。
どうプログラムすればいいんですかね?

13:デフォルトの名無しさん
07/07/16 01:17:46
7じゃないが、最後のforループはどういう意味?

14:6
07/07/16 01:29:38
交点の座標を詳しく求めてる

俺工房だから間違えてるのかもしれない

15:デフォルトの名無しさん
07/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である。
②数字によって構成される文字列をchar型配列へ読み込み、それをint型のデータに変換する関数toatoi()を作れ。
ただし、文字列中に数字以外の文字がある場合は戻り値を-1として返すように設定せよ。
さらに、toatoi()を利用して標準入力から与える文字列を数値とし、printfの%dを用いて表示するプログラムを作成せよ。
③最大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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 02:23:11
>>15

#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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 08:54:14
[1] 授業単元:OS
[2] 問題文(含コード&リンク):
セマフォを使い親子プロセス間でのメッセージ通信を実現させよ。
親プロセスでメッセージを入力すると子プロセスで表示され、
子プロセスでメッセージを入力すると親プロセスで表示されるものとする。

[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語: C
[4] 期限: 今日
[5] その他:前スレで助けてもらい、それにいろいろ付け加えたらコンパイルエラーはなくなり、
       以下のようなプログラムになりました
       URLリンク(kansai2channeler.hp.infoseek.co.jp)
       しかし、これだと親プロセス内だけでの通信となってしまいます。
       どなたかお力を貸してください!
       よろしくお願いします

22:デフォルトの名無しさん
07/07/16 09:05:21
名前:デフォルトの名無しさん[sage] 投稿日:2007/07/15(日) 09:55:51
[1] 授業単元: C言語 基礎&応用
[2] 問題文(含コード&リンク): 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
ソース:URLリンク(kansai2channeler.hp.infoseek.co.jp)

[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
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 11:12:42
>>22
課題と関係なしに趣味で組んでるが、駄目だよなw

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

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

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

URLリンク(kansai2channeler.hp.infoseek.co.jp)

26:デフォルトの名無しさん
07/07/16 12:41:25
>>24勝手に訂正

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


27:デフォルトの名無しさん
07/07/16 15:34:01
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):”rand1000.dat”というデータの個数nとその個数分の整数データが保存されているファイルがある
URLリンク(kansai2channeler.hp.infoseek.co.jp)
次の手順で動作するプログラムmergesort.cを作成し,その動作を確認せよ.

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

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

解いてください。お願いします。

28:デフォルトの名無しさん
07/07/16 15:39:45
[1] 授業単元: プログラミング技術Ⅱ
[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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 15:56:31
>>28
URLリンク(oshiete1.goo.ne.jp)

31:デフォルトの名無しさん
07/07/16 16:05:03
[1] 授業単元:プログラミングⅡ演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 2007年07月17日08:20まで
[5] その他の制限: 無し

よろしくお願いします。


32:デフォルトの名無しさん
07/07/16 16:21:27
>>31
そんなんで分かる訳無いだろ

33:デフォルトの名無しさん
07/07/16 16:24:10
C言語苦手だああああ


34:デフォルトの名無しさん
07/07/16 16:26:17
>>31
こんな幹事会。ちなみに中身はtgz。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

35:デフォルトの名無しさん
07/07/16 16:26:54
>>30
すいません、2次元配列さっぱり分からないもので、参考のページで
論議されている内容もさっぱり分かりません。

36:デフォルトの名無しさん
07/07/16 16:33:04
遅れましたが、前スレの748です
前スレ750さん、ありがとうございました
ただ、使い方が良くわからないのでできればご指導願います

37:デフォルトの名無しさん
07/07/16 16:39:19
>>34
queue.h の中の
static int qfirst = 0, qlast = 0, qcount = 0;
の行は queue.c に移動したほうがいいんじゃね?

38:デフォルトの名無しさん
07/07/16 16:42:35
>>37
そういやそうだね。あとmakefileも微妙だったりゴミが混じってたりするけど気にしないでくれ。

39:デフォルトの名無しさん
07/07/16 16:47:16
というか、このくらいの問題に手も足もでない、自力でできないくらいじゃ
単位やらなくてもいいんじゃない?と俺は思うよ。

40:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 17:04:25
このスレは宿題を淡々を片付けるスレだから
レベルが低かろうが高かろうがどうでもいいと思うぜ


42:デフォルトの名無しさん
07/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] その他:参考プログラム(URLリンク(www-it.sci.waseda.ac.jp))を使ってください

43:デフォルトの名無しさん
07/07/16 17:15:08
>>40
ありがとうございます。
提出期限と同じ木曜日に出題されて今日まで連休中考えていたけど
配列はどうしても苦手で参考サイトを回ってみたけど、さっぱりでした。

>>39
それでも単位は欲しいのが大学生です。

44:42
07/07/16 17:15:52
URLリンク(www-it.sci.waseda.ac.jp)
もう一度リンクしておきます

45:デフォルトの名無しさん
07/07/16 17:32:14
どうでもいいけど直リンだと2chでお願いしてるのがバレバレだよ。

46:デフォルトの名無しさん
07/07/16 17:33:19
どうせ誰がコピッたかなんて分かるわけが…
ソース見りゃ分かるか。

47:デフォルトの名無しさん
07/07/16 17:39:27
>>29
ソース自体は書いたんだが、ポインタのポインタを有効に使う方法が思いつかないなぁ・・・。

48:47
07/07/16 17:50:22
>>29
URLリンク(kansai2channeler.hp.infoseek.co.jp)
とりあえずupしといたんで、ポインタのポインタ使用版に改良できる人いたらお願い。

49:デフォルトの名無しさん
07/07/16 17:56:33
gets使うなよ。

50:デフォルトの名無しさん
07/07/16 18:06:10
そういう事は言ってやるなよ。
宿題丸投げする奴への餞別のつもりだろ。

51:デフォルトの名無しさん
07/07/16 18:12:33
申し訳ありません。宜しくお願いします

【質問テンプレ】
[1] アプリ開発
[2] OS内にあるサウンド出力プログラム作成
[3.1] Windows
[3.2]eclipse バージョンは分かりません
[3.3] どちらでもイイらしいです
[4] 7/18(水)
[5] スタイルシートを自ら作りSQLで模擬エクセル作成、バックトラック法、動的計算法はやりました

52:デフォルトの名無しさん
07/07/16 18:16:04
>>51 
接続部位のデバイス設定をやりたいのか
WAVとかmp3とかの出力ファイルを作りたいのか
メディアプレイヤーとかのアプリを作りたいのかはっきりしろw
意味が中途半端で分からんw

53:デフォルトの名無しさん
07/07/16 18:17:54
ecliってCコンパイラあったのか?
ちょっとしか触った事ないけどJava用IDEってイメージだった

54:デフォルトの名無しさん
07/07/16 18:18:36
>>51 eclipseならbccだろ?ちゃんと書いたほうがいいよ

55:36
07/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:デフォルトの名無しさん
07/07/16 18:18:59
>>27
URLリンク(kansai2channeler.hp.infoseek.co.jp)

2重ポインタ版。
縦に表示なんて面倒な指定さえなければもっとメモリ節約できるけど。

57:56
07/07/16 18:19:44
安価ミス
>>27×
>>29

58:デフォルトの名無しさん
07/07/16 18:23:31
>>55
「main」関数に「引数」があるわけだな
ぐぐってみろ
ぐぐってまったく意味不明だったら答えてやる


59:デフォルトの名無しさん
07/07/16 18:24:45
>>51 ちょwwwそれ宿題ってレベルじゃねーぞw どこの学校だよw

60:56
07/07/16 18:25:29
訂正、下の方の
putchar(str[j][i]);
の行を
if(str[j][i]!='\0')putchar(str[j][i]);
にしといて。

61:デフォルトの名無しさん
07/07/16 18:25:54
>>55
問題文もくれなきゃ何がしたいのかわからん。
ソース見る限り単一換字暗号?

62:デフォルトの名無しさん
07/07/16 18:27:31
>>42
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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


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

という文章でお願いしたところ、>>55のような回答をいただきましたが、使い方がわかりませんでした
よろしくお願いします

65:51
07/07/16 18:37:46
すいません 組み込み系です。

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

>>63すいません OS無しで作る方法を・・・・・

66:デフォルトの名無しさん
07/07/16 18:39:58
OS無しとは、一気に難易度が上がったな。

67:デフォルトの名無しさん
07/07/16 18:40:10
>>51
UNIX板行った方がいいと思うよ あっちは組み込み系だから・・・・・・

68:デフォルトの名無しさん
07/07/16 18:41:40
その誘導のしかたもどうかと思う。

69:デフォルトの名無しさん
07/07/16 18:41:54
>>56
スベース文字のスキップがない

70:デフォルトの名無しさん
07/07/16 18:42:24
>>51 ちょwwどこの学校だ・・・・・今後の参考に教えてくれないか?

71:デフォルトの名無しさん
07/07/16 18:46:30
>>51 マジレス:卒業したら年収700万で雇うから来てくれ 
housurejiak2245589761045@hotmell~

72:デフォルトの名無しさん
07/07/16 18:47:12
>>51 の学校で他人のソースコピペ無しで卒業なら、めちゃめちゃ優秀なマだな

73:デフォルトの名無しさん
07/07/16 18:52:43
>>51 君の学校は新しいOSを開発しているのか?

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



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

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



75:デフォルトの名無しさん
07/07/16 19:02:39
>>51
サウンドデバイスの IO の定義が無いとどうにもならない
最低限でも
1.音量設定の方法
2.周波数設定の方法
3.サウンドバッファへの書き込み&失敗検出の方法
くらいは必要だと思うよ

76:55
07/07/16 19:05:29
>>58
ぐぐってみましたが意味不明でした…
すいません、教えていただけますか?

77:デフォルトの名無しさん
07/07/16 19:06:56
>>63 が駄目ならこれも駄目ってことか
OS無しって難しすぎだろ
PlaySound("c:\\windows\\media\\chimes.wav", NULL, SND_SYNC | SND_FILENAME);

78:デフォルトの名無しさん
07/07/16 19:08:20
>>76
./a.out 変換元ファイル 変換後ファイル名

79:デフォルトの名無しさん
07/07/16 19:10:28
>>64
出てきたバイナリのコマンドラインに対象テキストファイル名と出力先ファイル名を追記。
例えばコンパイルして出てきたプログラムがa.exe、暗号化するテキストがbefore.txt、
出力先をafter.txtとするなら
a.exe before.txt after.txt
でafter.txtに暗号化済みのファイルが出力される。
逆操作は不可。そういう意味では>>55は要件を満たしていないね。

こんなとこに丸投げする人にいう事じゃないと思うけど
こんくらいのソース読めないでこれからやっていけると思ってる?

80:51
07/07/16 19:12:04
すいません
やっぱり 自分でやってみます

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

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

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

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






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

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




82:デフォルトの名無しさん
07/07/16 19:16:44
擁護するわけじゃないけど、コマンドライン引数の実際の使い方は教本によっちゃ物凄い投げやりだからな。
こんなんで分かればエスパーだろってぐらい。
で、分からんから後まわしにして課題出てくると四苦八苦するんだよな。

83:デフォルトの名無しさん
07/07/16 19:16:53
>>80
ここの方達が手上げてるのを完成させるの難しくない?
>>67の行ってるUNIX板行った方がよくない?

84:デフォルトの名無しさん
07/07/16 19:18:28
>>81
前スレに同じのがあったから見てくるといいと思うよ。

85:デフォルトの名無しさん
07/07/16 19:20:27
LL構文解析懐かしすぎる

86:デフォルトの名無しさん
07/07/16 19:27:12
>>29
だれかお願いします。
>>47,48ががんばってくれたけど「ポインタのポインタ」使用版でないと
駄目な課題なので分かる方お願いします。

>>47,48
ありがとうございます。

87:56=57=60
07/07/16 19:29:07
orz

88:51
07/07/16 19:32:53

自分も投げ出してたから人のこと言えないけど
時間かかってでも自分で考えて解決した方がいいと思う

89:デフォルトの名無しさん
07/07/16 19:34:51
>>88
秀同って事でスレ終了 乙です

90:デフォルトの名無しさん
07/07/16 19:45:35
>>78
その通りやっても出来ない・・・なぜでしょうか

91:デフォルトの名無しさん
07/07/16 19:57:19
>>90
次の一連のコマンドを打ち込んだ結果を晒してみて
echo hello>a.txt
./a.out a.txt b.txt
echo $?
cat b.txt

92:91
07/07/16 19:59:42
最後に追加
ls -l a.out a.txt b.txt

93:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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

追加の分はこうなりました
コマンドプロンプトで実行しました

95:91
07/07/16 20:05:31
>>93
linux じゃなかったのかよ!

echo hello>a.txt
.\a.exe a.txt b.txt
type b.txt
dir

96:デフォルトの名無しさん
07/07/16 20:08:41
笑った。
どうみてもコマンドプロンプトかcygwinとかだね。

97:デフォルトの名無しさん
07/07/16 20:21:17
>>86
皆さんの回答を参考にして作ってみた。これでどうかな。
URLリンク(kansai2channeler.hp.infoseek.co.jp)


98:デフォルトの名無しさん
07/07/16 20:31:46
よく見てないけど。
if(buf[strlen(buf)-1] == '\n')
buf[strlen(buf)-1] = 0;
↑ifで判定する必要ない。

99:デフォルトの名無しさん
07/07/16 20:41:55
>>42
URLリンク(kansai2channeler.hp.infoseek.co.jp)
参考コードは一部使用していない

100:99
07/07/16 20:52:38
>>42
URLリンク(kansai2channeler.hp.infoseek.co.jp)
一部訂正

101:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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] その他の制限: これといって無し
リンク先に手順の例とかがあります
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

あと最後らへんのprintf文の、&nの&は無かったことに(´;ω;`)

103:デフォルトの名無しさん
07/07/16 21:05:06
>>97
ぜんぜん良いと思います。
ありがとうございます。
ポインタのポインタを使っていてちゃんと動作するものなら問題ないので。

104:デフォルトの名無しさん
07/07/16 21:09:42
[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Windows
 [3.2] コンパイラ名とバージョン: cygwin
 [3.3] 言語: C
[4] 期限: 7/17午前中
[5] その他の制限: なし

105:デフォルトの名無しさん
07/07/16 21:19:06
>>103
ベースは>>56さんのなので、よろ

106:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 22:14:38
>>106さん、ありがとうございます。工夫すればかなり短くなるんですね・・・

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

というのはどうすれば出来るでしょうか?よろしければご教授お願いします

108:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 22:29:18
一つでまとめますかw
あんたすごいよ。

110:21
07/07/16 22:30:37
どなたか>>21お願いします!

111:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 22:48:53
>>111さん
素早い回答ありがとうございました。おかげで次の宿題は出せそうです。ありがとうございました。

114:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 22:50:12
あちゃー手遅れだったか

116:スモーク
07/07/16 22:50:23
多分岐型
整数型の変数a・b と、文字型の変数e を用意し、
キーボードから2つの数値と1つの演算子を入力し
、その計算結果cを出力するプログラムを作成しなさい。

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

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

まだcaseになれていないのだろうか・・・。
教えてください。

117:スモーク
07/07/16 22:51:41
他にも。
多分岐型(2)
次の説明は冬季オリンピックの開催年についての説明である。

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

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



118:デフォルトの名無しさん
07/07/16 22:55:35
>>117
説明がneeeeeeeeeeeee

119:107
07/07/16 22:56:05
>>114さん、わざわざ丁寧にありがとうございます!(´;ω;`)ブワッ

120:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 22:58:12
まぁ、感謝されたって力つかなきゃ意味無いし、暇つぶしの種にされてるだけだから考え物だけどな。

122:デフォルトの名無しさん
07/07/16 23:05:22
>>110
あれでできてるんじゃねえのか?
scanfの前に"c2p Message:","p2c Message:"とか
printfをいれて挙動をチェックしろ

123:デフォルトの名無しさん
07/07/16 23:11:52
[1] 授業単元:データ構造とアルゴリズム
[2] 問題文:
URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

どうかよろしくお願いします。

124:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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;
}

127:126
07/07/16 23:21:41
あ。
#include <stdlib.h>
#include <string.h>
もしといて。スマソ。

128:デフォルトの名無しさん
07/07/16 23:28:07
>>125
ありがとうございます。かなりきれいにできていますね。
自分もstrstr ()を使ったのですが、途中でつまってしまいました。

129:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 23:31:06
>>126
すごいですね。こんなやりかたもあったのですか。

131:デフォルトの名無しさん
07/07/16 23:38:44
>>129
検索単語がみつかったら単語の文字の数だけ前に進めてstrcpy()をつかうのですね。
それも考えていたのですが、できそうでできませんでした。
みなさん、ありがとうございました。

132:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/16 23:52:56
昔のスレに同じ質問あった気がするな

134:22
07/07/16 23:54:32
>>25
ありがとうございます。
なんですが、元々のソースを追記修正して今まできたので
一応そのような形でって事になってます。
制限なしと書いていましたが、現在のソースを
やっと作れるか作れないかぐらいのレベルなので
>>25さんのだとまだちょっとわからないことがいろいろとあります。
勉強してみます。ありがとうございました。



135:デフォルトの名無しさん
07/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;
}

136:135
07/07/17 00:11:09
あ、コメント間違ってら
sqrt(987654321) = 31426.96...
ね、正しくは。

137:デフォルトの名無しさん
07/07/17 00:18:27
>>136
わざわざありがとうございます!
今できる環境にないので明日大学で試してみます

138:デフォルトの名無しさん
07/07/17 01:10:25
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Windows
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:本日(17日)まで
[5] その他の制限:無し

よろしくお願いします。

139:デフォルトの名無しさん
07/07/17 01:50:51
>>108
ありがとうございます。
終了条件の部分大変参考になりました。

140:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/17 03:38:42
続きです
出力結果
**********
*G+++* * *
****+* *
* *++*** *
* *+** *
* ++* ***
**+** * *
* ++* * **
* *+++++S*
**********
[3] 環境
 [3.1] OS:Mac
 [3.2] コンパイラ名とバージョン:gcc
 [3.3] 言語:C
[4] 期限:本日(17日)まで
[5] その他の制限:無し

現在奮闘中ですがなかなかできませんorz
よろしくお願いします。

142:デフォルトの名無しさん
07/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; }


143:142
07/07/17 04:30:54
安価ミスた.orz

144:デフォルトの名無しさん
07/07/17 04:46:27
URLリンク(ja.wikipedia.org)

145:デフォルトの名無しさん
07/07/17 08:50:03
>>138
URLリンク(kansai2channeler.hp.infoseek.co.jp)

146:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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] その他の制限: 特になし
参考プログラムです→URLリンク(www-it.sci.waseda.ac.jp)

よろしくお願いします。



148:デフォルトの名無しさん
07/07/17 11:38:25
>>147
検索して死ね

149:デフォルトの名無しさん
07/07/17 11:39:39
[1]授業単元:プログラミング技術III
[2]問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ: gcc
 [3.3] 言語: C
[4] 期限:7/18まで
[5] その他の制限:特になし

よろしくお願いします

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

宜しくお願いします


151:デフォルトの名無しさん
07/07/17 13:22:11
>>150
URLリンク(www.techfinesse.com)
こんなのがあるようだぞ
その制限には引っかかるようだがなw

152:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/17 13:33:01
>>149
URLリンク(kansai2channeler.hp.infoseek.co.jp)

154: ◆Il0WZuGYWw
07/07/17 14:47:00
>>150
bsdのportsの中に入ってるお

155:デフォルトの名無しさん
07/07/17 15:36:03
>>150
何の工夫も無い力技だが一応やってみた。
出回っているソースは確実にこれよりはマシだろう。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

156:デフォルトの名無しさん
07/07/17 16:23:42
あ、あ、ぼるじょあのほうにカキコしてしまった……
こっちのほうがいいのかな?マルチは怒られますよね?よければ誰かぼるじょあスレ見てください~~

157:デフォルトの名無しさん
07/07/17 19:15:37
>>142
遅い時間にも関わらず回答ありがとうございます。
確かに動作できました。
しかしながら関数を3つ作ってとけとのことでしたorz
すみませんがお時間がありましたら回答おねがいします。
問題は>>140-141です
よろしくお願いします<(__)>

158:c言語初心者
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/17 20:04:35
a=='y' にしろ


162:デフォルトの名無しさん
07/07/17 20:05:45
>>158
結果の出力は要らないのか?

163:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/17 20:06:15
>158
(1)7
(2)f[spot]++;

165:c言語初心者
07/07/17 20:07:34
たぶん(1),(2)にあてはまるものをいれてこいってことだと思います。
よろしくおねがいします。。

166:デフォルトの名無しさん
07/07/17 20:10:40
>161
改善されませんでした・・・

167:デフォルトの名無しさん
07/07/17 20:14:50
>>159
>>161 に加えて
trans(a,b)で余計に a, b を入力させようとしてるから.
引数で渡してんだから,そこで入力させてどうする.


168:c言語初心者
07/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:デフォルトの名無しさん
07/07/17 20:37:44
(1)13
(2)a[i]

170:デフォルトの名無しさん
07/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日

171:c言語初心者
07/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:デフォルトの名無しさん
07/07/17 20:47:34
>>170
演算の種類は?

173:デフォルトの名無しさん
07/07/17 21:06:43
>>172
足し算、引き算、割り算、掛け算です。説明不足ですいません。

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

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

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

この手のプログラムはスレ違いかもしれないと思いつつも、C言語で書いて来いとのことなので
書き込ませて頂きました。何卒、よろしくお願いします。

176:デフォルトの名無しさん
07/07/17 21:25:47
>>170
できた。
URLリンク(kansai2channeler.hp.infoseek.co.jp)

177:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/17 21:37:38
>>174

>>170と同じ人か?

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

URLリンク(kansai2channeler.hp.infoseek.co.jp)

179: ◆y43pIoOHKo
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/17 21:45:15
>>180
説明し忘れが無いか一度確認したほうがいいと思うよ
小数点以下は切り捨てるとかそういう細かい部分も説明すべきだと思う

182:デフォルトの名無しさん
07/07/17 21:45:22
>>180
aとbの型をdoubleにして、
fscanfの%dを%lfに、
printfの%dを%gにすればおk

183:デフォルトの名無しさん
07/07/17 21:50:56
170です。
>>182さんありがとうございます!!これで完成しました!!
みなさんありがとうございました。%gとは便利な…。

184:デフォルトの名無しさん
07/07/17 21:52:10
そんな事より、今日うちに犬が死んだ。老衰だった

185:デフォルトの名無しさん
07/07/17 21:53:27
>>34>>37
遅くなりましたがありがとうございました。


186:デフォルトの名無しさん
07/07/17 22:01:04
[1] 授業単元: ソフトウェアシステム
[2] 問題文(含コード&リンク):
以下の円周率を2000桁もとめるプログラムを
できるだけ高速に計算できるように改良せよ。

URLリンク(kansai2channeler.hp.infoseek.co.jp)

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

若干スレ違いかもしれないですが、よろしくお願いします。

187:デフォルトの名無しさん
07/07/17 22:05:38
>>186
マイコンかWindowsかどっちなんだ。つかマイコンだろうな。
どんな石だか知らんが、これコンパイルして動かせる環境持ってる奴
いないんじゃないか。

188:デフォルトの名無しさん
07/07/17 22:07:21
>>175
よくわからんが、おもむろにCreateWindow()で窓を開く
コンソールアプリをつくれということだろうか。

189:デフォルトの名無しさん
07/07/17 22:09:28
>>187
Windows上で開発してるってことだろ、多分
せめてどんなマイコンを使ってるかわからないと難しいな・・・

190:デフォルトの名無しさん
07/07/17 22:17:30
○×ゲーム
Linuxのプロンプト上でplay
com/man対戦、先攻/後攻を選べる

191:デフォルトの名無しさん
07/07/17 22:20:53
最近三目並べはやってんのかyo

192:175
07/07/17 22:37:33
>>188
アプリと言いますか、コマンドプロンプトで必要な入力を入れていくと
それを適当なソフトで忠実に再現したppm画像に出してくれるものです。
同じ事言ってたらすいませんorz

できれば骨組みだけでも(流れ的な)考えていただけると幸いですm(__)m

193:デフォルトの名無しさん
07/07/17 22:40:26
>>186です

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

答えになってないかいもしれないですが、この付属のV850基板を使っています。
URLリンク(www.cqpub.co.jp)

194:デフォルトの名無しさん
07/07/17 22:42:40
V850基板なら手元にあるぜ
でもまだソフトインスコしてない・・・

195:デフォルトの名無しさん
07/07/17 22:43:16
>>192
いや、スクリーンに描画しろとか書いてあるからさ。
それを見なかったことにして、PPM画像ファイルを出力するだけなら、
標準Cの範囲のプログラムで出来る話だが、400*400の画面に
描画しろってんなら、窓開いてGUIスレッド起動してって話になるだろう。

196:190 ◆Oa0JSQvro2
07/07/17 23:14:27
追記です。
期限は木曜夜でお願いします。

よろしくおねがいしますm(__)m

197:175
07/07/17 23:14:34
>>195
なるほどそういう事でしたか…
特に制限などは言われていないので(Cのみとは言われてません)
このスレの趣旨に沿っていないかもと思ったのです。

できれば400X400は後に考えますので、ファイル出力の部分をお願いします。

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

気象庁HP(URLリンク(www.jma.go.jp))参照
[3] 環境
 [3.1] OS: Windows
 [3.2]
 [3.3] 言語:C言語
[4] 期限: 2007年 7月18日の朝
[5] その他の制限: 出身地は神戸でお願いします

199:デフォルトの名無しさん
07/07/17 23:38:00
>>196

>>1のテンプレを漏れなく書け。

200:デフォルトの名無しさん
07/07/17 23:45:39
× 資料なし(欠測) 統計値を求める期間内の観測結果が全て求められなかった場合。
は、どうあつかうんだ?

201:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/18 03:54:03
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:不明
 [3.3] 言語:C
[4] 期限:7/19まで
[5] その他の制限:課題①はwhile文、②は両方とも構造体、③は全てポインタと構造体の単元です
①と②は自分が考えたソースを添えてみたので、どこが悪いのかだけでも教えていただけると幸いです
どうかご教授の程お願いします

205:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/18 07:56:14
>>204
よく見てないけど

=< じゃなくて <=
isdigit() -> isdigit(moji)
printf("hogehoge %d"); -> printf("hogehoge %d",); (カンマ)


× while(buff = getchar()!="0 0 0"){
whileのなかのsscanfのbufferなんてない
× printf("%4s%4f%4s,stu[j].name,stu[j]height,stu.[j]blood");}


207:206
07/07/18 07:57:21
あー
printf("hogehoge %d"fuga); -> printf("hogehoge %d",fuga); (カンマ)
に訂正です

208:デフォルトの名無しさん
07/07/18 08:10:29
>>186

URLリンク(www.sra.co.jp)

たぶんこれと同じなんやろうけど、どうやったら速くできるんだろう。

209:デフォルトの名無しさん
07/07/18 08:34:24
>>177
奮闘中ですが、できませんorz
お願いします!

210:190 ◆Oa0JSQvro2
07/07/18 09:12:44
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):○×ゲーム(3目並べ) をプロンプト上で動かす。com/man対戦、先攻後攻は選択可能
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 今週金曜夜
[5] その他の制限: 特になし

211:デフォルトの名無しさん
07/07/18 10:09:46
[1] プログラミング基礎
[2] 検討及び考察」の指示に従って求めた, S/N=3.0 [dB]のときの a. 誤差[%],b. 誤り検出率[%] の数値(有効数字3桁以上)
および実験 2. のために作成したシミュレーションプログラムを使って報告せよ。

詳しいことは次のアドレスに書いてあります。
URLリンク(itohws03.ee.noda.tus.ac.jp)

[3.1] Unix
[3.2] gcc
[3.3] c
[4] 7月27日(金)
[5] 私の学籍番号の下三桁は080です。

212:デフォルトの名無しさん
07/07/18 10:14:23
どうせその学籍番号は他人のものだろ?

213:デフォルトの名無しさん
07/07/18 10:41:19
>>177
VBではなくVSです

214:c言語初心者
07/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)



215:c言語初心者
07/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:デフォルトの名無しさん
07/07/18 11:07:22
>>209
URLリンク(kansai2channeler.hp.infoseek.co.jp)


217:デフォルトの名無しさん
07/07/18 11:19:47
>>215
四の五の言わないで全部書き出しな

218:デフォルトの名無しさん
07/07/18 11:21:57
>>175
ですがどうにもうまく三角形が描けませんorz
ファイル出力までで結構ですので、どなたかなにとぞお願いしますm(__)m

219:c言語初心者
07/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]



220:c言語初心者
07/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:デフォルトの名無しさん
07/07/18 11:56:24
>>220
できたぞ
つか
 printf("ハート% 4d \n", n (3)? );
とか
 printf("ダイア% 4d \n", n (5)? );
って、問題間違ってないか?

222:c言語初心者
07/07/18 12:00:14
間違ってました。申し訳ありません。
printf("ハート% 4d \n", (3)? );
printf("ダイア% 4d \n", (5)? );

です。
よろしくお願いします。

223:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/18 12:13:08
>>225
「+」「-」「*」「/」「√」位かな?


227:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/18 12:15:26
>>226
お願いできますか?
charだと256までしか出来ないので積や商がさっぱりで・・・


229:c言語初心者
07/07/18 12:20:22
>>221さん。
頼んでおいて申し訳ないのですが、>>214の回答をよろしくお願いします。

230:デフォルトの名無しさん
07/07/18 12:20:25
>>225
小数点以下でcharってprintf出力で表示される答えが100桁でいいんだよね?

231:デフォルトの名無しさん
07/07/18 12:24:54
>>229
>>227にヒントを書いたんだけど、不服?

232:225です
07/07/18 12:28:13
>>214さん
問題文の意味がよく分からないんですけど
ジョーカーは1枚ですよね?
それでランダムで5枚引くと・・・・




233:デフォルトの名無しさん
07/07/18 12:29:21
>>225
小数点以上は無限大?

234:225です
07/07/18 12:32:02
>>233
指定されていないので 多分無限だと思います

235:c言語初心者
07/07/18 12:33:46
>>231さん
不服なんてとんでもないです。ただ、ヒントもらっても自分が解けないだけです。申し訳ないです。

>>232さん
たぶんジョーカー2枚を抜いた52枚でのことだとおもいます。よろしくお願いします。


236:225です
07/07/18 12:33:59
足し引きはifで100で固めれば簡単に出来ることはわかったんですけど


237:デフォルトの名無しさん
07/07/18 12:34:33
多倍長の実数計算を実装させて
>[5]main以外の関数を作ってはいけない

冗談きつすぎ

238:デフォルトの名無しさん
07/07/18 12:37:24
>>225
100^256 までしかできなくね? 無限じゃネージャン

239:デフォルトの名無しさん
07/07/18 12:38:15
再帰下降も不可、と

240:デフォルトの名無しさん
07/07/18 12:39:19
>>238
勿論char[]で多倍長を実装するんでしょ
そうじゃなきゃそもそも実数すら扱えん

241:256です
07/07/18 12:39:40
ごめんなさい頼る所はココしかないので・・・・orz 


242:デフォルトの名無しさん
07/07/18 12:40:08
未来からの使者か?

243:149
07/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:デフォルトの名無しさん
07/07/18 13:00:17
何方か205お願いします

245:デフォルトの名無しさん
07/07/18 13:01:49
エラーメッセージじゃないかな??

246:デフォルトの名無しさん
07/07/18 13:05:23
[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):
特定の単語にgoogle 検索のリンクをはるプログラムをつくれ。
例えば、下は「テスト」という単語をgoogle検索したリンク である。
q= 以降は「テスト」という単語がURLエンコード(unicode)された文字列となっている。
URLリンク(www.google.co.jp)
1. htmlファイルを受け取る
2. 検索リンクにしたいいくつかの指定した単語を受け取る
3. すでにリンク済みの単語に注意しながら、指定した単語をgoogle 検索のリンクにする。
(例)「宿題」をgoogle 検索されたリンクにする。
この宿題ができなかったら単位はあげません。
->
この<a href="URLリンク(www.google.co.jp)
宿題</a>ができなかったら単位はあげません。
なお、目的を果たせるプログラムだったらこの形式でなくてもかまわない。
余裕がないものは
・検索ワードはURLエンコードの必要のない半角英数等だけでいい。
・受け取った検索ワードはすでにリンクされていないと仮定してもいい。
[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc2.95-3
 [3.3] 言語: C
[4] 期限: (2007年07月31日17:00まで)
[5] その他の制限: 何を使っても構わない

247:デフォルトの名無しさん
07/07/18 13:07:40
>>243
-lmつけると幸せになれる

248:デフォルトの名無しさん
07/07/18 13:08:14

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

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




249:デフォルトの名無しさん
07/07/18 13:09:34
>>248
ちょw

250:デフォルトの名無しさん
07/07/18 13:12:39
>>205
何が分からないか分からないんだが・・・・・・・
まんまじゃん




251:デフォルトの名無しさん
07/07/18 13:15:31
>>250
それを言うなwそれ言っちゃこのスレの存在価値がw

252:149
07/07/18 13:37:55
>>247さん
幸せになれましたが、どういう原理なのでしょう?
質問ばっかですいません

書き忘れましたが、153さん・247さんありがとうです

253:デフォルトの名無しさん
07/07/18 13:41:52
>>252
mという数学ライブラリをリンクしたのです。

254:デフォルトの名無しさん
07/07/18 13:42:09
>>248
兄さんそれ掛け算になってません。
forの条件式もアレです。意図は伝わるけど。

255:デフォルトの名無しさん
07/07/18 13:46:27
a*bの場合 int i,n; for(i=0;i<b;i++){n+=a;}
暇ですね。

256:デフォルトの名無しさん
07/07/18 13:47:11
a*bの場合 int i,n=0; for(i=0;i<b;i++){n+=a;}

257:デフォルトの名無しさん
07/07/18 13:48:03
>>252
243のエラーメッセージはソースの中に存在しない関数(sqrtとacos)があって
プログラムを作れないというリンカのエラー。
>>253の言うとおり数学ライブラリをリンク指定すれば
その中に関数sqrtとacosという関数があるからリンクが通る。

258:デフォルトの名無しさん
07/07/18 13:52:06
>>248

259:デフォルトの名無しさん
07/07/18 14:02:41
馬鹿は彫っとけ

260:デフォルトの名無しさん
07/07/18 14:04:45
やらないか

261:デフォルトの名無しさん
07/07/18 14:16:34
>>175
URLリンク(kansai2channeler.hp.infoseek.co.jp)

入力は各行に(別に各行でなくてもいいけど)
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:デフォルトの名無しさん
07/07/18 14:30:47
>>205
URLリンク(kansai2channeler.hp.infoseek.co.jp)
問題2でstrcpy()(文字列のコピー)の替わりにstrcat(文字列の連結)を使った。
strcpy()を使えと言われても俺の能力じゃムリポ

263:デフォルトの名無しさん
07/07/18 14:33:09
>>262
strccat(a, b) ≡ strcpy(a + strlen(a), b) ≡ strcpy(strchr(a, '\0'), b)

264:262
07/07/18 14:37:06
262の駄文は忘れてくれ
問題2の修正版
URLリンク(kansai2channeler.hp.infoseek.co.jp)

265:デフォルトの名無しさん
07/07/18 15:08:56
>>246
色々穴だらけだが
URLリンク(kansai2channeler.hp.infoseek.co.jp)


266:デフォルトの名無しさん
07/07/18 15:18:43
>>262
最後のナル文字にさえ気をつければ便利だし安全だよ。

267:デフォルトの名無しさん
07/07/18 15:19:45
サイズの方が重要かも。

268:265
07/07/18 15:24:25
あ、コメントの処理入れるの忘れた
まあいいや
どうせもともと穴だらけだ

269:ヒープ
07/07/18 15:36:58
[1] 授業単元:C言語演習
[2] 問題文(含コード&リンク):
ヒープソートを用いて、配列に格納された10個の数値データを
大きい順に並び替える。変化がわかるようにソート前と後を出力させる。

[3] 環境
 [3.1] OS: Linux
 [3.2] コンパイラ名とバージョン: gcc
 [3.3] 言語: C
[4] 期限: 早いとありがたいです
[5] その他の制限: 特にありません
よろしくおねがいします。

270:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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] その他の制限: 特にありません
よろしくおねがいします。

272:175
07/07/18 19:53:23
>>261
ありがとうございました!m(__)m
自分でも色々いじってみましたが、思っていた通りの完璧な出来でした。
本当に助かりました!



273:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/07/18 20:12:21
[1] 授業単元: C言語プログラミング
[2] 問題文(含コード&リンク):○×ゲーム(3目並べ) をプロンプト上で動かす。com/man対戦、先攻後攻は選択可能
[3] 環境
 [3.1] OS:Linux
 [3.2] コンパイラ名とバージョン:
 [3.3] 言語:C
[4] 期限: 今週金曜
[5] その他の制限: 特になし


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch