C/C++の宿題を片付けます 93代目 at TECH
[2ch|▼Menu]
1:デフォルトの名無しさん
07/07/15 22:31:51
あなたが解けない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] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)

【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
URLリンク(kansai2channeler.hp.infoseek.co.jp)
【C 関数検索 man on WWW】 URLリンク(www.linux.or.jp)
【過去ログ検索】        URLリンク(chomework.sakura.ne.jp)
【wiki】               URLリンク(www23.atwiki.jp)

【前スレ】
C/C++の宿題を片付けます 92代目
スレリンク(tech板)

2:デフォルトの名無しさん
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である。
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:デフォルトの名無しさん
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
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:デフォルトの名無しさん
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] 授業単元: プログラミング技術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:デフォルトの名無しさん
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] 授業単元:プログラミングU演習
[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さんのだとまだちょっとわからないことがいろいろとあります。
勉強してみます。ありがとうございました。




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

5372日前に更新/328 KB
担当:undef