C/C++の宿題を片付けます 96代目
レス数が1000を超えています。これ以上書き込みはできません。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 95代目
http://pc11.2ch.net/test/read.cgi/tech/1187944110/
0002デフォルトの名無しさん
2007/09/21(金) 09:06:170003 ◆YpQ/fINFLk
2007/09/21(金) 17:43:40[2] 問題文(含コード&リンク):
エラトステネスの篩の公式を用い、自然数nまでの素数を全て表示するさいに、1〜nまでに求めた素数を格納しておき、それを用いて素数か否かを判別せよ。
(20を素数か判別するときは、それまでに格納した2,3,5,7,11,13,17,19の√20以下の2,3で割る)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C++
[4] 期限: 9月25日まで
[5] その他の制限:素数に対する、習っていない特殊なincludeや関数は仕様しない
口頭で出された課題なので、問題文等分かりにくかったらすいません。
0004デフォルトの名無しさん
2007/09/21(金) 18:10:51�@エラトステネスのふるいを使って、nまでのすべての素数を表示する
�Anが素数かどうか判定する(ただしその際、�@で求めた素数リストを利用する)
ということか??
0005 ◆YpQ/fINFLk
2007/09/21(金) 19:15:36�@の表示するときの段階にも�Aを行うみたいな感じです。
素数リストを作る。
そのさい、次の数を判定するのに今まで求めた素数を使用する。
仮にnが100のときは
10の時点の判別には、今まで求めた(格納した) 2〜√10までの素数を用い、
100の時は、2〜√100までの素数を用いるということです。
まだ少し分かり辛いですが、よろしくお願いします。
0006デフォルトの名無しさん
2007/09/21(金) 19:41:39何を習っていて何を習っていないのかがわからん
0007 ◆YpQ/fINFLk
2007/09/21(金) 20:10:43includeに関しては、
#include <stdio.h>
#include <math.h>
使用するものは、この二つのみだと思います。
授業範囲は、配列程度までなのでデータを配列に格納しつつfor文やIf文で使って作れという課題だと思います。
0008デフォルトの名無しさん
2007/09/21(金) 20:19:04>>5 の例だと、n = 100 は 2 が素数だと分かった瞬間に
ふるい落とされるから、>>5 みたいな動作はしないよ?
そういう素数を逐次格納して試し割るアルゴリズムは
ふるい型のアルゴリズムとは呼ばない。
0009 ◆YpQ/fINFLk
2007/09/21(金) 20:41:03勉強不足、申し訳ありませんorz
素数関係もプログラムも初心者なもので、1〜√nがどうとか聞いてるうちに、勘違いしていたようです。
・「素数を逐次格納して試し割るアルゴリズム」
これが課題で、間違いないと思います。
分かりやすい説明ありがとうございます。
0010デフォルトの名無しさん
2007/09/21(金) 20:48:52#define n 100
int main() {
int primes[n+1], pnum = 0;
int i, x;
for (x = 2; x <= n; ++x) {
for (i = 0; i < pnum; ++i) {
if (x % primes[i] == 0) break;
}
if (i == pnum) primes[pnum++] = x;
}
for (i = 0; i < pnum; ++i) {
printf("%d\n", primes[i]);
}
}
0011 ◆YpQ/fINFLk
2007/09/21(金) 21:15:59ありがとうございました。
自宅にはC++がないので、明日にでも学校で試してみます。
0012デフォルトの名無しさん
2007/09/21(金) 21:47:02携帯しか持っていないってことなら仕方ないが
0013デフォルトの名無しさん
2007/09/21(金) 21:49:550014デフォルトの名無しさん
2007/09/22(土) 00:01:000015デフォルトの名無しさん
2007/09/22(土) 00:55:08#include <stdio.h>
#define N 100
int main(void)
{
int prime[N], i, j, cnt = 0;
prime[cnt++] = 2;
for(i=3; i<=N; i++) {
int flag = 0;
for(j=0; prime[j]*prime[j]<=i; j++) {
if(i%prime[j]==0) {
flag = 1;
break;
}
}
if(flag==0) prime[cnt++] = i;
}
for(i=0; i<cnt; i++) printf("%d ", prime[i]);
return 0;
}
0016デフォルトの名無しさん
2007/09/22(土) 03:44:00[1] 授業単元: プログラミング(2)
[2] 問題文(含コード&リンク):
「電卓」をC言語で作成せよ。
ただし、1語のレジスタ、1語のメモリを持つように作成し、
以下の条件を満たすようにする。
(1) n+m=,n-m=,n*m=,n/m=と入力することで四則演算ができる。
(2) M+,M-と入力することで演算結果をメモリに加減算する。
(3) MRと入力することでメモリの内容をレジスタに読み出す。
(4) RCの入力でレジスタのクリア、MCの入力でメモリのクリアをする。
(5) メモリ上の値との計算は MR+n=,MR*m=といったように入力することで可能にする。
(6) end: が入力されるまでプログラムは終了せず、
再度演算ができるように入力待ち状態にする。
(7) 連続した計算は左順に計算する仕様でよい。n-m/a=は(n-m)/aという計算順でよい。
(8) 数字、計算符号および(1)〜(7)までに設定した命令文字(end:など)以外が入力された場合、
「エラー」と出力し、再度演算が出来るようにエラー処理を入れる。
以上
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: ([07年9月23日まで] )
[5] その他の制限:とくに制限はありません。
掛け、割りの計算順序を考えなくていいから簡単だと先生は言っていましたが、
その前にレジスタとメモリの概念が??です。
とにかく「一時的に値を保持する場所を作る」がポイントと聞きました。
みなさんこの問題についてどうぞよろしくお願いします。
0017デフォルトの名無しさん
2007/09/22(土) 04:11:07[2] 問題文(含コード&リンク):
ICU4Cを用いて、和暦変換する関数を作成せよ。
(例)
2007,9,1 → 平成19年9月1日
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4)
[3.3] 言語: C++
[4] 期限:[無期限]
[5] その他の制限: ないです。
0018デフォルトの名無しさん
2007/09/22(土) 07:10:29http://www.mozilla-japan.org/
シンプル プログミング ツール
http://proforceone.web.fc2.com/
素因数分解サンプルプログラム
Calculation processing にコピーして[RUN]
A=2*3*5*11*13*17*19;
x=A;write(" "+x+" ⇒");
for(i=2;x>=i;i++){if(0==x%i){k=0;
for(j=2;(i>=j)&&(1>=k);j++){
if(0==i%j){k++;}
} if(1==k){write(" "+i);}
}}
0019デフォルトの名無しさん
2007/09/22(土) 08:51:27// http://www.mozilla-japan.org/
// シンプル プログミング ツール
// http://proforceone.web.fc2.com/
// 素因数分解サンプルプログラム
// Calculation processing にコピーして[RUN]
MAX=1000;br();
for(x=2;MAX>=x;x++){write(" "+x+" ⇒");
for(i=2;x>=i;i++){if(0==x%i){k=0;
for(j=2;(i>=j)&&(1>=k);j++){
if(0==i%j){k++;}
} if(1==k){write(" "+i);}
}} br();
} br();
0020デフォルトの名無しさん
2007/09/22(土) 11:08:18[2] 問題文(含コード&リンク):四則(加減乗除)演算を関数としてもっているプログラム。
実数と整数の両方に対応し、式と結果を表示する。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C言語
[4] 期限:2007/09/27(木)
[5] その他の制限:関数,scanfを使います。
よろしくお願いします。
0021デフォルトの名無しさん
2007/09/22(土) 13:45:45[2] 問題文(含コード&リンク):
3つ読み込み全て等しいか2つ等しいか全て異なるかを表示せよ。
[3] 環境
[3.1] OS: Win Bcc32 C
[4] 期限:[無期限]
[5] その他の制限: ないです。
0022デフォルトの名無しさん
2007/09/22(土) 13:47:090023デフォルトの名無しさん
2007/09/22(土) 13:49:290024デフォルトの名無しさん
2007/09/22(土) 13:51:07数字です
0025デフォルトの名無しさん
2007/09/22(土) 13:59:400026デフォルトの名無しさん
2007/09/22(土) 14:00:04int main(void)
{
int a, b, c;
char *p[] = {"全て異なる", "2つ等しい", "", "全て等しい"};
scanf("%d%d%d", &a, &b, &c);
printf("%s", p[(a==b) + (b==c) + (c==a)]);
return 0;
}
0027デフォルトの名無しさん
2007/09/22(土) 14:02:160028デフォルトの名無しさん
2007/09/22(土) 14:05:59int main(void)
{
int no1,no2,no3;
printf("A:"); scanf("%d",&no1);
printf("B:"); scanf("%d",&no2);
printf("C:"); scanf("%d",&no3);
if (no1==no2 && no2==no3)
printf("三つは同じです。");
else if (no1==no2 || no2==no3 || no1==no3)
printf("二つは同じです。");
else
printf("三つとも違います。");
return (0);
}
0029デフォルトの名無しさん
2007/09/22(土) 15:26:13[2] 問題文:
階上n!(nは0以上の整数)は、以下のように再帰的に定義されている。
n!=n*(n-1) , 0!=1
この式を参考に、再起呼び出し用いて0以上の整数nを受け取りn!を返す
関数int Factorial(int n)を作り、n!を求めるプログラムを作成せよ。
また、再帰の動作がわかる表示を行い
表示を用いて再帰関数の呼び出される順序を説明せよ。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限: 2007年9月24日
[5] その他の制限:特にないです
再帰の動作を表示させないものは書けるのですが
どうしても表示を用いて
再帰関数の呼び出される順序がうまくいきません。
どうがよろしくお願いします。
0030デフォルトの名無しさん
2007/09/22(土) 15:54:45> 再帰の動作を表示させないものは書けるのですが
見せて
0031デフォルトの名無しさん
2007/09/22(土) 16:26:00#include <stdio.h>
int indent;
int f( int in )
{
int i, ret;
indent++;
for( i = 0; i < indent; i++ )
printf( " " );
printf( "f( %d )\n", in );
if( in == 0 )
ret = 1;
else
ret = in * f( in - 1 );
for( i = 0; i < indent; i++ )
printf( " " );
printf( "return %d\n", ret );
indent--;
return ret;
}
int main( void )
{
int in = 9;
indent = 0;
printf( "%d! = %d\n", in, f( in ) );
return 0;
}
0032デフォルトの名無しさん
2007/09/22(土) 16:58:41[2] 問題文:
2つの整数を読み込んで、それらの値の差が10以下か11以上かを表示プログラムを作れ。ただし、論理OR演算子を使うこと。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限: 2007年9月24日
[5] その他の制限:特にないです
0033デフォルトの名無しさん
2007/09/22(土) 17:00:2910以下の場合「差は10以下」と表示し、11以上なら「差は11以上」と表示する。
0034デフォルトの名無しさん
2007/09/22(土) 17:04:51003532
2007/09/22(土) 17:05:05int main(void)
{
int no1,no2,sa;
printf("A:"); scanf("%d",&no1);
printf("B:"); scanf("%d",&no2);
if (no1>no2)
sa=no1-no2;
else
sa=no2-no1;
if (sa<=10)
printf("それらの差は10以下です。");
else
printf("それらの差は11以上です。");
return (0);
}
ここまでできたんですが、
>ただし、論理OR演算子を使うこと。
の論理OR演算子||をどこで使うのかが分かりません。
お願いします。
0036デフォルトの名無しさん
2007/09/22(土) 17:05:52教科書には、単に「差」と出ています。
0037デフォルトの名無しさん
2007/09/22(土) 17:10:14if(no1-no2<=10 || no2-no1<=10)
0038デフォルトの名無しさん
2007/09/22(土) 17:11:29int main(void)
{
int no1,no2,sa;
printf("A:"); scanf("%d",&no1);
printf("B:"); scanf("%d",&no2);
sa=no1-no2;
if (sa > 10 || sa < -10)
printf("それらの差は11以上です。");
else
printf("それらの差は10以下です。");
return (0);
}
0039デフォルトの名無しさん
2007/09/22(土) 17:12:07これ要らんだろ。
普通に前者から後者を引けば良い。
0040デフォルトの名無しさん
2007/09/22(土) 17:12:40面白すぎ
0041デフォルトの名無しさん
2007/09/22(土) 17:14:14オレだけど
0042デフォルトの名無しさん
2007/09/22(土) 17:14:18なにこれ?
0043デフォルトの名無しさん
2007/09/22(土) 17:14:40?
0044デフォルトの名無しさん
2007/09/22(土) 17:15:20sa = no1 - no2;
if( sa < -10 || 10 < sa ) puts("11以上");
else puts("10以下");
0045デフォルトの名無しさん
2007/09/22(土) 17:16:550046デフォルトの名無しさん
2007/09/22(土) 17:17:58>sa < -10
これどういう意味?
0047デフォルトの名無しさん
2007/09/22(土) 17:19:030048デフォルトの名無しさん
2007/09/22(土) 17:19:54じゃないの?
0049デフォルトの名無しさん
2007/09/22(土) 17:21:02中学生からやり直せ
0050デフォルトの名無しさん
2007/09/22(土) 17:21:53算数では引き算は必ずプラスの値なんだっけ?
0051デフォルトの名無しさん
2007/09/22(土) 17:23:48printf("それらの差は%dで10以下です。",sa);
else
printf("それらの差は%dで11以上です。",sa);
0052デフォルトの名無しさん
2007/09/22(土) 17:24:47sa>=-10
0053デフォルトの名無しさん
2007/09/22(土) 17:25:42-10 より saが小さい
よりと以上の違いが分からないなら数学止めた方が良いよ
0054デフォルトの名無しさん
2007/09/22(土) 17:25:480055デフォルトの名無しさん
2007/09/22(土) 17:25:52バカすぎ
0056デフォルトの名無しさん
2007/09/22(土) 17:27:32&&
0057デフォルトの名無しさん
2007/09/22(土) 17:28:08一応まともに答えてる38と44は除外してやれよw
0058デフォルトの名無しさん
2007/09/22(土) 17:28:330059デフォルトの名無しさん
2007/09/22(土) 17:32:43if (sa<=10 || 0)
でおk
0060デフォルトの名無しさん
2007/09/22(土) 17:33:25else
printf("それらの差は%dで11以上です。",sa);
の順でやって。
0061デフォルトの名無しさん
2007/09/22(土) 17:35:24-1と-4は、-1のほうが大きい。
0062デフォルトの名無しさん
2007/09/22(土) 17:37:02||を使えってのにその順番はないだろ
0063デフォルトの名無しさん
2007/09/22(土) 17:41:290064デフォルトの名無しさん
2007/09/22(土) 17:43:56差の値を表示しろなんて、元の問題文にも>>35にもないわけだが。
0065デフォルトの名無しさん
2007/09/22(土) 17:50:56int sa = no1 - no2;
if(sa==-10||sa==-9||sa==-8||sa==-7||sa==-6||sa==-5||sa==-4||sa==-3||sa==-2||sa==-1||sa==0
||sa==1||sa==2||sa==3||sa==4||sa==5||sa==6||sa==7||sa==8||sa==9||sa==10)
0066デフォルトの名無しさん
2007/09/22(土) 17:54:490067デフォルトの名無しさん
2007/09/22(土) 17:56:050068デフォルトの名無しさん
2007/09/22(土) 18:03:080069デフォルトの名無しさん
2007/09/22(土) 18:03:330070デフォルトの名無しさん
2007/09/22(土) 18:06:21せめて中学卒業してからおいで
007129
2007/09/22(土) 18:08:29>>30 >>31
返信が遅くなってすみません。
一応こんな感じで書いて動作はしました。
#include<stdio.h>
int Factorial(int n);
int main(void)
{
int n;
printf("自然数を入力して下さい:");
scanf("%d",&n);
printf("%dの階乗は,%dです。\n",n,Factorial(n));
return 0;
}
int Factorial(int n)
{
printf("関数Factorial(%d)にはいりました。\n",n);
if(n>0)
{
return n*Factorial(n-1);
}
else
{
return 1;
}
}
0072デフォルトの名無しさん
2007/09/22(土) 18:09:05良かったね。さようなら。
0073デフォルトの名無しさん
2007/09/22(土) 18:10:11それで十分な気もするが
0074デフォルトの名無しさん
2007/09/22(土) 18:16:05if (sa>=11 || sa<=-11)
これでOK
0075デフォルトの名無しさん
2007/09/22(土) 18:18:24printf("それらの差は%dで11以上です。",sa);
else
printf("それらの差は%dで10以下です。",sa);
0076デフォルトの名無しさん
2007/09/22(土) 18:21:56そんなにバカな答え書いてバカにされたのが悔しかったのか
0077デフォルトの名無しさん
2007/09/22(土) 18:23:14「それらの差」がマイナスの表示になってもいいの?
0078デフォルトの名無しさん
2007/09/22(土) 18:23:160079デフォルトの名無しさん
2007/09/22(土) 18:23:30008029
2007/09/22(土) 18:27:04これ以外に関数Factorial(n)から出ます:Factorial(n)=再帰の途中経過
見たいなのを表示しなければならないんですよ・・・
どこに入れたら表示させらるのか分からないので教えてもらえませんか?
よろしくお願いします
0081デフォルトの名無しさん
2007/09/22(土) 18:28:130082デフォルトの名無しさん
2007/09/22(土) 18:29:410083デフォルトの名無しさん
2007/09/22(土) 18:29:46int Factorial(int n)
{
int ret;
printf("関数Factorial(%d)にはいりました。\n",n);
ret = n > 0 ? Factorial(n-1) * n : 1;
printf("関数Factorial(%d)は%dを返して終了します\n",n, ret);
return ret;
}
こんな感じでどうよ?
008429
2007/09/22(土) 18:50:30ありがとうございます。
おかげさまで分かりました。
ホントにありがとうございました。
>>82
>>83さんのおかげで分かりました。
>>81
しつこくてすみませんでした。
何度もしつこく聞いてしまったのに親切に返信してくれた
方々ありがとうございました。
0085デフォルトの名無しさん
2007/09/22(土) 19:19:42どういうこと?
0086デフォルトの名無しさん
2007/09/22(土) 19:31:10sa=-11 のとき
「それらの差は-11で11以上です。」
というおかしな表示になるよ。
0087>>16
2007/09/22(土) 20:10:26#include <stdlib.h>
#include <string.h>
#include <ctype.h>
int main(void){
double reg = 0, mem = 0;
char buf[128] = {0}, *p;
while(1){
scanf("%127s", buf);
if(!strcmp(buf, "end:")) break;
else if(!strcmp(buf, "M+")) mem += reg;
else if(!strcmp(buf, "M-")) mem -= reg;
else if(!strcmp(buf, "MR")) reg = mem;
else if(!strcmp(buf, "RC")) reg = 0;
else if(!strcmp(buf, "MC")) mem = 0;
else if(isalpha(*buf)) fprintf(stderr, "error\n");
else{
p = buf;
reg += strtod(p, &p);
while(*p != '=' && *p != '\0')
switch(*p++){
case '+' : reg += strtod(p, &p); break;
case '-' : reg -= strtod(p, &p); break;
case '*' : reg *= strtod(p, &p); break;
case '/' : reg /= strtod(p, &p); break;
default : reg = strtod(p, &p); break;
}
}
printf("reg = %g \t mem = %g\n", reg, mem);
}
return 0;
}
0089デフォルトの名無しさん
2007/09/22(土) 20:34:32ログを残している人はいつでもそのレスを見ることが出来る。
つまり、有るってことで。
0090デフォルトの名無しさん
2007/09/22(土) 20:50:33http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4950.txt
009116
2007/09/23(日) 12:44:46リンク先を利用させてもらったのですが、どうも計算が上手くいきません。
たとえば「5+5=」と打ち込んで、「end:」で終了させても答えは出ず、
「reg=-1 mem=0」といった感じにしか表示されません。
おそらくレジスタが−1でメモリが0であることを表していると思うのですが、
肝心の計算結果がわかりません。
このプログラムをどのように修正すればよいのでしょうか?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4950.txt
0092デフォルトの名無しさん
2007/09/23(日) 13:21:49[2] 問題文(含コード&リンク):
読み込んだ非負の整数血を逆順に表示。
[3] 環境
[3.1] OS: Win Bcc32 C
[4] 期限:[無期限]
[5] その他の制限: ないです。
0093デフォルトの名無しさん
2007/09/23(日) 13:36:410094デフォルトの名無しさん
2007/09/23(日) 14:26:07>90のソースをコンパイルしたら一箇所だけエラーが出たので、それを修正してコンパイルしてみた。
--
$ ./a.out
5+5=
reg = 10 mem = 0
end:
$
--
普通に動いているようだが。
0095デフォルトの名無しさん
2007/09/23(日) 14:28:16なんかわかんなくなってきたから、実行例をいくつかください
0096デフォルトの名無しさん
2007/09/23(日) 15:03:31#include <stdio.h>
#define n 10
int main(int c,char**v){
int i,a[n];
if(c==1)for(i=0;i<n;i++)scanf("%d",&a[i]);
c!=n+1?printf("%d ",main(c+1,c==1?(char**)a:v)):0;
return c==1?0:*((int*)v+c-2);
}
0097デフォルトの名無しさん
2007/09/23(日) 15:06:32スタックの勉強でもしてるのかな?
#include <stdio.h>
#define S_MAX 500
int stack[S_MAX];
int top=-1;
void push(int x){
stack[++top] = x;
}
int pop(){
return stack[top--];
}
int main(){
int i=1;
while(i!=0){
printf("非負値の入力(0で終了):");
scanf("%d", &i);
if(i<0){
printf("非負値じゃないとダメです\n");
}else if(i!=0){
push(i);
}
}
printf("--- 結果 ---\n");
while(top!=-1){
printf("%d\n", pop());
}
return 0;
}
0098デフォルトの名無しさん
2007/09/23(日) 15:07:520099デフォルトの名無しさん
2007/09/23(日) 15:09:26do whileを勉強しています。
0100デフォルトの名無しさん
2007/09/23(日) 15:11:59int main(void)
{
int num;
do {
printf("非負の整数:");
scanf("%d",&num);
if (num<0)
puts("その数は負の数です。");
} while (num<0);
printf("その数を逆から読むと、");
do {
printf("%d",num%10);
num=num/10;
} while (num>0);
puts("です。");
return (0);
}
0101デフォルトの名無しさん
2007/09/23(日) 15:12:12>>96のforをdowhileに直した方がいいね
0102デフォルトの名無しさん
2007/09/23(日) 15:14:21ちょwwwそういう意味の問題だったのかwww
0103デフォルトの名無しさん
2007/09/23(日) 15:16:520104デフォルトの名無しさん
2007/09/23(日) 15:17:000105デフォルトの名無しさん
2007/09/23(日) 15:18:300106デフォルトの名無しさん
2007/09/23(日) 15:20:04電卓っぽく。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4952.txt
実行例書いてくれれば、あとで直す。
0107デフォルトの名無しさん
2007/09/23(日) 16:22:051+1=
と打っても真っ暗だよ。
0108デフォルトの名無しさん
2007/09/23(日) 16:31:21そりゃあんたの「お先」だろ。
0109デフォルトの名無しさん
2007/09/23(日) 18:00:54[2] 問題文(含コード&リンク):
エディットコントロールにアドレスを入れてボタンを押すと、
そのページを表示するプログラムを作れ。
[3] 環境
[3.1] OS: WinXP
[3.2] Borland C++ 5.5
[3.3] C言語
[4] 期限:9月25日まで
[5] その他の制限: 要は超簡易ブラウザです。
オリジナリティをつけろとの事なので、表示しているページに何か変化があった場合、
(例えばリンクの移動だとか、ボタンクリックだとか、フォームに入力だとか)、
エディットコントロールに変化がありましたって表示するような感じの機能をつけてもらえると幸いです。
0110デフォルトの名無しさん
2007/09/23(日) 18:03:15どこの大学?
0111デフォルトの名無しさん
2007/09/23(日) 18:05:450112デフォルトの名無しさん
2007/09/23(日) 18:12:25GUI とネットワーク接続に関するライブラリは何を使ってよいの?
0113デフォルトの名無しさん
2007/09/23(日) 18:17:21特に指定はないです。むしろ大事なのはUIなんです。
使用者に使いやすい設計を心がける事って言われたんですが・・・。
それにしても1から作れって鬼杉。ある程度の機能もったブラウザをいじれって言うならまだしも。
で、あたふたしてると期限が近づいてきて俺涙目みたいな・・・
0114デフォルトの名無しさん
2007/09/23(日) 18:21:240115デフォルトの名無しさん
2007/09/23(日) 18:22:01有料のライブラリとか使ったらあんたが困るでしょ?
講義で過去に作ったプログラムなどがあったらそれを
アップしてもらうのが話が早くて楽なんだけどな。
0116デフォルトの名無しさん
2007/09/23(日) 18:22:440117デフォルトの名無しさん
2007/09/23(日) 18:23:310118デフォルトの名無しさん
2007/09/23(日) 18:26:370119デフォルトの名無しさん
2007/09/23(日) 18:27:470120デフォルトの名無しさん
2007/09/23(日) 18:27:550121デフォルトの名無しさん
2007/09/23(日) 18:30:06なるほど、有料は確かに困ります。
講義で用意されたものは何もないのですが・・・。
一応自分でも色々と調べてみたのですが、IEコンポーネントを使うのが楽そうな感じでしたね。
ただ、VC++とかばかりでなかなか。Borlandじゃコンパイル出来なかったりしてもうワケワカラン状態です。
コンパイラはBorlandと書きましたが、実はこれは指定されてるわけではないです。学校のパソコンにはVisual Studio .netが
入ってますが、家にはBorlandを入れてます。さすがに有料はキツイって事で・・・。でも家でコーディングできないと不便なのでBorland。
0122デフォルトの名無しさん
2007/09/23(日) 18:32:01精神的な話だから、実際には泣いてないんだぜ。
0123デフォルトの名無しさん
2007/09/23(日) 18:32:040124デフォルトの名無しさん
2007/09/23(日) 18:32:180125109
2007/09/23(日) 18:34:54一つのコンパイラで全部やろうって考え自体おかしいんですかね?
ノートなのであまり重たいのは入れたくないなと思ってBorlandにしてみました。
その後Turbo C++入れて、一気に重くなってげんなりしてます。
というか、コンパイラの違いってなんなんですか・・・どれがいいとかあるんですか?って質問はスレ違いですね
0126デフォルトの名無しさん
2007/09/23(日) 18:35:260127デフォルトの名無しさん
2007/09/23(日) 18:35:57スレ違いって分かってるんだったら、書き込むなよ。
0128デフォルトの名無しさん
2007/09/23(日) 18:36:060129109
2007/09/23(日) 18:36:51涙目です。
0130デフォルトの名無しさん
2007/09/23(日) 18:36:55こいつアホだ。実際に泣いてるかどうかではなく、
そんなことを書き込むことを皆、からかってるのに。
0131デフォルトの名無しさん
2007/09/23(日) 18:48:08> そのページを表示する
って、一般的なサイト全て?
単純なボタンやフォーム程度なら自分でHTML解析してできるだろうけど、
そうじゃないならIEコンポやGecko使うしかないと思うよ
0132デフォルトの名無しさん
2007/09/23(日) 18:49:390133デフォルトの名無しさん
2007/09/23(日) 19:02:33MFC使えないのかな
0134109
2007/09/23(日) 19:27:49>>131-133
オリジナリティはもう少し練りたいと思います。ので、最低限の機能を持ったブラウザの実装をお願いします。
その後のUIやオリジナル機能は自分で頑張ってみます。とはいえ、時間はあまり残ってないのですが・・・。
IEコンポーネント使用で、コンパイラはBorlandC++5.5で出来る範囲でお願いします。
有料なものを使わなければ特に制限はないです。やりやすい形でお願いします。
もしBorlandじゃどうしてもダメというなら、私がVCを入れます。
0135デフォルトの名無しさん
2007/09/23(日) 19:29:00最初にまとめて書け。
0137デフォルトの名無しさん
2007/09/23(日) 19:35:020138デフォルトの名無しさん
2007/09/23(日) 19:38:13最初からやり直せ。
0139デフォルトの名無しさん
2007/09/23(日) 19:38:240140デフォルトの名無しさん
2007/09/23(日) 19:38:45VC入れて、IEコンポでぐぐってサンプル拾ってコンパイル。
ここまではできるだろう。
0141デフォルトの名無しさん
2007/09/23(日) 19:40:07[1] 授業単元:GUIプログラミング
[2] 問題文(含コード&リンク):
エディットコントロールにアドレスを入れてボタンを押すと、
そのページを表示するプログラムを作れ。
[3] 環境
[3.1] OS: WinXP
[3.2] Borland C++ 5.5
[3.3] C言語
[4] 期限:9月25日まで
[5] その他の制限: IEコンポーネントを使用。有料のものは使用しない事。
0142デフォルトの名無しさん
2007/09/23(日) 19:44:00VC++でIEコンポーネントのサンプルを置いてる良さそうなサイトはGoogleのトップに出てきたのですが、
Borlandだとインクルードファイルがなくて、コンパイル通らないですね。VC入れろと言われたら終わりですけど。
むしろそっちの方が幸せになれるのかな・・・
0143デフォルトの名無しさん
2007/09/23(日) 19:47:09依頼しなおしたのなら、黙ってろ。
0144デフォルトの名無しさん
2007/09/23(日) 19:50:25014516
2007/09/23(日) 19:58:521+1=
2 ←(計算毎に答えは出る)
3+3=
6
M+ ←(直前の計算結果がメモリに。この場合6)
MR+1=
7
end:(計算終了)
といった具合がベストだと思うのですが。
(問題には書いていなかったので、質問発言時に書けませんでした。
これも先生が望んでいる解答結果とはわかりませんが…)
度々申し訳ないのですが、よろしくお願いします。
0146デフォルトの名無しさん
2007/09/23(日) 20:16:02[2] 問題文(含コード&リンク):
キーボードからn+m,n-m,n*m,n/mを入力し、演算結果を出力せよ。
結果出力後は「再入力:」と出力し、再度計算できるように
ループさせる。
「off:」と入力することで計算を終了させる。
演算結果例:
5+6
11
再入力:
6*7
42
再入力:
off:
(計算終了)
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C言語)
[4] 期限: [2007年9月23日まで]
[5] その他の制限:特になし
0147デフォルトの名無しさん
2007/09/23(日) 20:19:36その形式以外の入力はないと仮定していいのか?
0148デフォルトの名無しさん
2007/09/23(日) 21:04:40>>16と共同で頑張れ
0149デフォルトの名無しさん
2007/09/23(日) 21:18:500150デフォルトの名無しさん
2007/09/23(日) 22:02:41http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4954.txt
0152デフォルトの名無しさん
2007/09/23(日) 22:11:32みんなかどうかは怪しいけどなw
0153146
2007/09/23(日) 23:19:02そうです。命令はn+m,n-m,n*m,n/m4つのみです。
>>149
桁数は指定はありませんでした。
先ほど書き忘れてしまったのですが、「n,mは実数」
という条件がありました。
0154デフォルトの名無しさん
2007/09/23(日) 23:25:01[2] 問題文(含コード&リンク): クイックソートのプログラムを作成しなさい
・ソート対象は文字列配列
・引数でソート対象、ソート後の配列をしていする
[3] 環境
[3.1] OS: XP
[3.2] VC++ 2008
[3.3] 言語: C
[4] 期限: なるべく早めに
[5] その他の制限: ソート以外の標準関数は使ってもよい
もう大方は作ってみたんですが、途中でエラーで終了してしまいます
協力お願いします
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm?
↑にうpしました。クイックソートと書いてるやつです
0157デフォルトの名無しさん
2007/09/24(月) 06:32:53それなりに努力の跡は見えるんだが、なんとも……。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4956.txt
それにしてもVC2008か…ちょっと欲しい。orcasはいつ出るのかなぁ。
ありがとうございます!
できたら悪い点が沢山あったと思うので教えて欲しいです
あと、VC++2008はベータ版ならダウンロードできますよ
0159デフォルトの名無しさん
2007/09/24(月) 10:02:55比較関数が間違ってる。文字列の第一文字目だけで比較するそうな。
>>158
157じゃないけど
1. sort_array[0] が NULL かどうかを見てるのは再帰の一発目だけを
区別する目的だろうけれど、そんなのは再帰中にやらず、157 のように
別の関数に分けるべき。これが落ちる原因になっている。
2. それを直しても正しく動作しない。last の前後に分けるところがダメ。
pivot を特別扱いしたいのだろうけど、並べ替え中に pivot も動いてしまう。
ここは 157 のように、両側から同時にやるのが常套テクニック。
今の方法でも、pivot を必ず最後に選ぶようにすると、一応できる。
1 を小細工で対応し、2 を適当に修正したものを以下に示す。
実際の修正量は数行程度のはずだけれど、相当不自然なコードなので
もう一度自分で考えて書いたほうが勉強になると思う。
0160デフォルトの名無しさん
2007/09/24(月) 10:09:03続き。関係ないところは行をつめている。
!! つきのコメントのあるところが主な修正箇所。
int quick_sort(const char *array[], int left ,int right,char *sort_array[]) {
int last = 0; int cnt = 0; int pivot = 0;
if(array == NULL || left < 0 || right < 0 || sort_array == NULL) return 0; //引数チェック
if(left >= right) return 1; //配列の要素が一つの場合
if(sort_array[0] == NULL){ //sort_array[0]がNULLならarrayをコピー
for(cnt = 0;cnt <= right;cnt++){
sort_array[cnt] = (char *)malloc(256); // !!malloc で適当に確保してからコピーする
strcpy(sort_array[cnt],array[cnt]);
}
}
pivot = (right+left)/2; //基準値を決める
change(sort_array, pivot, right); // !!pivot を最後に送りつける
pivot = right;
last = left;
for(cnt = left; cnt <= right;cnt++){ // !![left,last) は pivot 以下
if(sort_array[cnt][0] <= sort_array[pivot][0]){ // !!pivotが左側に入るために等号付き
change(sort_array,cnt,last++); !! last++ と後置インクリメント
}
}
quick_sort(array,left,last-2,sort_array); // !!array[last-1] が pivot なので抜く
quick_sort(array,last,right,sort_array);
return 1;
}
0161デフォルトの名無しさん
2007/09/24(月) 10:15:230162デフォルトの名無しさん
2007/09/24(月) 10:21:150163デフォルトの名無しさん
2007/09/24(月) 10:31:52[2] 問題文(含コード&リンク): -Promt the user for the base value(int date type).
-Read the base value.
-Promt the user for the exponent value(int date type).
-Read the exponent value.
-using a <cmath> function.
-The following output should be displayed:
/* Enter the base: 3
Enter the exponent: 2
3 to the 2 power equals 9.
The square root of 3 equals 1.41
Press any key to continue*/
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: VC++
[3.3] 言語: C++
[4] 期限: なるべく早くお願いします
[5] 習って4週間目です
めちゃめちゃですが自分のプログラムです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4957.txt
ご指摘ありがとうございます!
クイックソートがまだつかめてない様なのでもう少し考えます
0165デフォルトの名無しさん
2007/09/24(月) 10:46:10'^' はビットXOR演算子であり、べき乗を処理する演算子はC言語にはない
pow() を使え
sqr() ではなく sqrt()
他にも突っ込み所はあるけどコンパイルすれば気付くと思うので触れない
0166デフォルトの名無しさん
2007/09/24(月) 11:19:02これくらいの英語はできなきゃ恥ずかしいくらいだけど、
日本語訳しておくくらいの心遣いをしなさい
0167デフォルトの名無しさん
2007/09/24(月) 11:20:07アホ? 矛盾してるけど。
0168デフォルトの名無しさん
2007/09/24(月) 11:22:250169デフォルトの名無しさん
2007/09/24(月) 11:57:43併記しておけば問題ないし
ということで>>163は首を洗って出直してきなさい
0170デフォルトの名無しさん
2007/09/24(月) 11:59:39>>168
0171デフォルトの名無しさん
2007/09/24(月) 12:14:29自分の言葉でたのむわ
むしろ、依頼者が英語がわかんなくて適当にやって
さりげなく間違い訂正させてるのかもしれんし
油断は禁物だぞ
0172デフォルトの名無しさん
2007/09/24(月) 12:15:40>>168
0173デフォルトの名無しさん
2007/09/24(月) 12:19:38答えになってねーよ在日
かくいう俺は在日日本人だが
0174デフォルトの名無しさん
2007/09/24(月) 12:20:030175デフォルトの名無しさん
2007/09/24(月) 12:22:32英語は分かるがcが分からないんだ…
0176デフォルトの名無しさん
2007/09/24(月) 12:22:50-ベース値(int日付のタイプ)のためのユーザのPromt。
-ベース値を読んでください。
-解説者値(int日付のタイプ)のためのユーザのPromt。
-解説者値を読んでください。
-<cmath>機能を使用します。
-以下の出力を表示するべきです:
/*はベースに入ります: 3
解説者に入ってください: 2
3 2と、パワーは9と等しいです。
3の平方根はいずれも*/を続けるために合わせる1.41Pressと等しいです。
0177デフォルトの名無しさん
2007/09/24(月) 12:25:260178汗
2007/09/24(月) 14:39:17現在の地域時間から15時間後の日時を表示するプログラムを作成しなさい。
表示形式は日付と時間が表示されれば、自由とします。
0179デフォルトの名無しさん
2007/09/24(月) 14:41:15>>7
0180デフォルトの名無しさん
2007/09/24(月) 14:41:48>>178
>>1
0181デフォルトの名無しさん
2007/09/24(月) 14:45:40#include <time.h>
int main() {struct tm tm; time_t now = time(NULL); tm = * localtime(& now); tm.tm_hour += 15; mktime(& tm); puts(asctime(& tm)); return 0;}
0182汗2
2007/09/24(月) 14:55:45[2] 問題文(含コード&リンク):
次のプログラムで本来入れるべき処理は何か。それを指摘しなさい。
1:char*pstr;
2:
3:pstr=malloc(100)
4:sprintf(pstr,"123")
5:patr=malloc(10)
6:sprintf(pstr,"456")
7:free(pstr);
[3] 環境
[3.1] OS: (Windows)
[3.3] 言語: (C)
[4] 期限:早いと助かるス。
0183デフォルトの名無しさん
2007/09/24(月) 14:59:188:free(pastr);
0184デフォルトの名無しさん
2007/09/24(月) 15:00:008:free(patr);
0185デフォルトの名無しさん
2007/09/24(月) 15:04:33#include <iostream>
#include <cstdio>
#include <cmath>
int main()
{
using std::cin;
using std::printf;
using std::putchar;
char *str[4] = {"Enter the base: ",
"Enter the exponent: ",
"%d to the %d power equals %.0lf.",
"The square root of %d equals %1.2lf"};
int b,ex;
double p,r;
printf(str[0]);
cin >> b;
printf(str[1]);
cin >> ex;
printf(str[2],b,ex,pow(static_cast<double>(b),ex));
putchar('\n');
printf(str[3],b,sqrt(static_cast<double>(b)));
putchar('\n');
return 0;
}
The square root of 3 equals 1.41はおかしすぎる
0186デフォルトの名無しさん
2007/09/24(月) 15:54:34だったな確か
0187続・汗3
2007/09/24(月) 16:03:22違う行があればその行番号を表示するプログラムです。空白部分(�@〜�D)を埋めて、
プログラムを完成させなさい。
1:/* インクルード /*
2:#include<stdio.h>
3:#include<string.h>
4:#include<errno.h>
5:
6:FILE*Fp1;
7:FILE* �@ ;
8:
9:/* 関数宣言 /*
10:int main(int argc,char*argv[]);
11:
12:int Func_open(char*,int);
13:int Func_read(void);
14:
0188続続・汗3
2007/09/24(月) 16:04:5916:int main(int argc,char*argv[])
17:{
18: int nrtn;
19: int ncnt;
20:
21: nrtn=Func_open(argv[1],1);
22: if(nrtn!=0)
23: return1;
24: nrtn=Func_open( �A ,2);
25: if(nrtn!=0){
26: fclose( �B );
27: return1;
28: }
29:
30: ncnt=0;
31: nrtn=0;
32: while(nrtn==0){
33: nrtn=Func_read();
34: ncnt++;
35: }
0189続続続・汗3
2007/09/24(月) 16:05:5137: fclose(Fp1)
38: fclose(Fp2)
39:
40: if(nrtn<0)
41: printf("%sと%sは違う内容でした(%d行目)",
42: argv[1],argv[2],ncnt);
43: else
44: printf("%sと%sは同じ内容でした",
45: argv[1],argv[2])
46:
47: return(0);
48:}
49:
50:int Func_open(char*szfname,int nno)
51:{
52: errno=0;
53: if(nno==1)
54: Fp1=fopen(szfname,"r")
55: else
56: Fp2=fopen(szfname,"r")
57: if((Fp1==NULL&&nno==1)�U�U
58: (Fp2==NULL&&nno==2)){
59: printf("<%s>エラー:%s",szfname,strerror �C ));
60: return(-1);
61: }
62:
63: return(0);
64:}
0190続続続続・汗3
2007/09/24(月) 16:06:4266: int Func_read(void)
67:{
68: char*prtn1;
69: char*prtn2;
70: char szdat1[81];
71: char szdat2[81];
72: int nrtn;
73:
74: prtn=fgets(szdat1,81,Fp1);
75: prtn=fgets(szdat2,81,Fp2);
76: if(prtn1==NULL)�U�Uprtn2==NULL)
77: return(9);
78:
79: nrtn=strcmp(szdat1,szdat2)
80: if(nrtn!= �D )
81: return(-1);
82: return(0);
83:}
0191続続続続続・汗3
2007/09/24(月) 16:08:232つのレコードが同じかどうか判断しています。
これをmemcmpを利用したロジックに作り直しなさい。
当方、全く初心者なのでさっぱしです。ヨロシクお願いしますm(__)m
0192デフォルトの名無しさん
2007/09/24(月) 16:13:300193デフォルトの名無しさん
2007/09/24(月) 16:15:270194へたれ
2007/09/24(月) 16:27:29Windows
EZ EDITOR
for文,1次元変数,do-while文,if-else文,doubleなどは習いました。
期限:今日中
問題
2次方程式の開放プログラム:a,b,cをそれぞれ入力し、axの2乗+bx+c=0の2つの解を表示するプログラムです。
こんな感じで大丈夫でしょうか?
0195デフォルトの名無しさん
2007/09/24(月) 16:35:41>こんな感じで大丈夫でしょうか?
なんて言う前に、>>1嫁
EZ EDITORってエディタ?そんな情報いらん
コンパイラの方が重要だ
0196へたれ
2007/09/24(月) 17:00:15コンパイラの意味がわかりません。Visualかなぁ?
WZ EDITORは関係なかったんですね。
PC初心者ですいません
0197デフォルトの名無しさん
2007/09/24(月) 17:16:03今でも使っている奴いるのか?
0198デフォルトの名無しさん
2007/09/24(月) 17:19:34http://pc11.2ch.net/test/read.cgi/tech/1190555031/
0199デフォルトの名無しさん
2007/09/24(月) 17:42:41[2] 問題文 19と打てば、2 4 6 8 10 12 14 16 18と表示するプログラム
[3] 環境
[3.1] OS: XP
[3.2] VC++ 2008
[3.3] 言語: C
[4] 期限: なるべく早めに
[5] その他の制限:
0200デフォルトの名無しさん
2007/09/24(月) 17:45:220201デフォルトの名無しさん
2007/09/24(月) 17:45:35ほぼフルセットのC言語なマクロも使えるから、入門用の教材として使われるケースも希にある。
まあ、浮動小数点数とか使えないから、素直にVisualC++使っとけとも思うが。
0202デフォルトの名無しさん
2007/09/24(月) 17:45:35int main(void)
{
int n;
scanf("%d", &n);
if (n == 19) {
printf("2 4 6 8 10 16 18");
}
return 0;
}
0203デフォルトの名無しさん
2007/09/24(月) 17:45:37そうです。
0204デフォルトの名無しさん
2007/09/24(月) 17:45:540205デフォルトの名無しさん
2007/09/24(月) 17:48:50int main(void)
{
int i, n;
scanf("%d", &n);
for(i=2; i<=n; i+=2) printf("%d ", i);
return 0;
}
0206デフォルトの名無しさん
2007/09/24(月) 18:00:22int main(void)
{
int num;
int dig;
dig=0;
scanf("%d",&num);
while (num>=dig+2) {
dig+=2;
printf("%d ",dig);
}
return (0);
}
0207デフォルトの名無しさん
2007/09/24(月) 18:19:55#include <stdio.h>
int main(void)
{
int i, n;
printf("数値?"); scanf("%d", &n);n >>= 1;
for(i = 1; i <= n; i++) printf("%d ", n << 1);;
return 0;
}
0208デフォルトの名無しさん
2007/09/24(月) 18:31:230209163
2007/09/24(月) 18:37:42自分のプログラムですが
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4960.txt
エラーがひとつ、どうしても消えません
修正可能な方よろしくお願いします
0210デフォルトの名無しさん
2007/09/24(月) 18:45:26エラーがひとつって…いくつも間違いあるぞ
cinでendlいらない
powやsqrtを自分で宣言してどうする
0211デフォルトの名無しさん
2007/09/24(月) 18:45:51int pow(int base,int exponent);
double sqrt(int base);
--
標準関数を自分勝手に宣言してはいけません。しかも、間違っています。
--
int result1;
result1=pow(base,exponent);
double result2;
result2=sqrt(base);
--
変数は定義と同時に初期化しましょう。そうしなければいけない理由がないのに
不定値のまま放置するのは阿呆のすることです。
0212デフォルトの名無しさん
2007/09/24(月) 18:46:18コンパイラ通してないけど、ぱっと見で見つけたエラー。
>cin >> base >> endl;
std::endlに何か入力させようとしてる…
>int pow(int base,int exponent);
>double sqrt(int base);
自分で関数内関数宣言?cmathをincludeしてるのに
0213デフォルトの名無しさん
2007/09/24(月) 18:48:02[2] 問題文:txtファイルdata.txtに
memo1.txt
memo2.txt
memo3.txt
と書かれているとする。
今main関数で、ファイルdata.txtの中身のファイル(memo*.txt)をぬきとる。
その中身のファイルを違う関数void functionに移してファイルオープンして
中身を表示せよ。
-----------
memo1.txtの中身は
2
4
5
memo2.txtの中身は
1
4
6
memo3.txtの中身は
4
5
とします。
[3] 環境
LINUX
[4] 期限:はやければはやいほうがいいです。
[5] その他の制限:特になし
0214デフォルトの名無しさん
2007/09/24(月) 18:51:37小学生?
0215デフォルトの名無しさん
2007/09/24(月) 18:52:29ファイルの中身のファイル?
0216デフォルトの名無しさん
2007/09/24(月) 18:53:01死ね。
0217デフォルトの名無しさん
2007/09/24(月) 18:55:43#include <stdio.h>
#include <string.h>
void function(char *filename)
{
char command[1024];
sprintf(command, "cat %s", filename);
system(command);
}
int main(void)
{
char filename[1001];
FILE* fp = fopen("data.txt", "r");
if( fp == NULL ) { return 1; }
while( !feof(fp) ) {
int len;
fgets(filename, 1000, fp);
len = strlen(filename);
while( filename[len - 1] == '\n' ) filename[len - 1] = '\0';
printf("%sの中身は\n");
function(filename);
}
return 0;
}
0218デフォルトの名無しさん
2007/09/24(月) 18:56:370219デフォルトの名無しさん
2007/09/24(月) 18:57:42memo1.txt
memo2.txt
memo3.txt
で
memo1.txtにかかれてあるのが
2
4
5
で
memo2.txtにかかれてあるのが
1
4
6
で
memo3.txtにかかれてあるのが
4
5
という意味です
0220デフォルトの名無しさん
2007/09/24(月) 19:00:32cat使ったのを書こうと思ったらかぶったよw
0221デフォルトの名無しさん
2007/09/24(月) 19:06:00え?
0222デフォルトの名無しさん
2007/09/24(月) 19:18:35 ̄ ̄ ̄ ̄ ̄ ̄
どこの国の方ですか?
0223デフォルトの名無しさん
2007/09/24(月) 19:33:220224163
2007/09/24(月) 19:40:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4961.txt
今度はエラー3とでましたが、、、
0225デフォルトの名無しさん
2007/09/24(月) 19:50:42pow(double, double)
0226デフォルトの名無しさん
2007/09/24(月) 19:53:03でたから何?
表示されたエラーを読めば解決する問題だよね?
0228デフォルトの名無しさん
2007/09/24(月) 20:24:060229163
2007/09/24(月) 20:32:21無視なんてとんでもないです
ありがとうございますと言ったのは主に185さんに対してです
ただ全く習っていない解法でしたので、、、
ありがたく使わせてもらいます
0230デフォルトの名無しさん
2007/09/24(月) 20:36:210231185
2007/09/24(月) 20:51:31私がわるかったです。
0232デフォルトの名無しさん
2007/09/24(月) 20:56:540233デフォルトの名無しさん
2007/09/24(月) 21:00:040234デフォルトの名無しさん
2007/09/24(月) 21:04:05宣言時>void Display(int result1,double result2,int base,int exponent);
使用時>Display(result1,result2);
引数の数が合ってないのが悪い。
「エラー3」とかではなくて、何行目にどういうエラーがあるのかということを
出力するはずだから、どうせならそれを書いてくれ。
0235デフォルトの名無しさん
2007/09/24(月) 21:21:00#include<stdio.h>
int main(void){
int num;
printf("=>");
scanf("%d",&num);
if(num == 19) printf("2 4 6 8 10 12 14 16 18\n");
return 0;
}
問題文どおりならこうなる
0236デフォルトの名無しさん
2007/09/24(月) 21:21:47#include<stdio.h>
int main(void){
int num;
printf("=>");
scanf("%d",&num);
if(num == 19) printf("2 4 6 8 10 12 14 16 18\n");
return 0;
}
問題文どおりならこうなる
0237デフォルトの名無しさん
2007/09/24(月) 21:27:08#include<stdio.h>
int main(void){
int num;
printf("=>");
scanf("%d",&num);
if(num == 19) printf("2 4 6 8 10 12 14 16 18\n");
return 0;
}
問題文どおりならこうなる
0238デフォルトの名無しさん
2007/09/24(月) 21:34:08そこまでして書き込みたいのか。
0239デフォルトの名無しさん
2007/09/24(月) 21:40:55書き込めないと思ってたら100-200までを
表示した画面をブックマークしてた
0240デフォルトの名無しさん
2007/09/24(月) 22:25:07死ね。
0241デフォルトの名無しさん
2007/09/24(月) 22:32:380242デフォルトの名無しさん
2007/09/24(月) 22:37:350243デフォルトの名無しさん
2007/09/24(月) 22:48:170244デフォルトの名無しさん
2007/09/24(月) 23:05:55というかわざわざCalcPower,CalcSquareRoot関数を作る必要がないだろ
0245デフォルトの名無しさん
2007/09/25(火) 00:02:090246デフォルトの名無しさん
2007/09/25(火) 00:10:500247デフォルトの名無しさん
2007/09/25(火) 00:11:420248デフォルトの名無しさん
2007/09/25(火) 00:14:41他の人が回答済み
0249デフォルトの名無しさん
2007/09/25(火) 00:23:04おまえもいちいちうるさいよ
0250デフォルトの名無しさん
2007/09/25(火) 00:24:120251デフォルトの名無しさん
2007/09/25(火) 00:25:01そこらへんも解決済み
0252デフォルトの名無しさん
2007/09/25(火) 00:26:100253デフォルトの名無しさん
2007/09/25(火) 02:49:55[2] 問題文(含コード&リンク):
ある2つのファイルがある。
この時1つのファイルには次元nの2つの整数ベクトルが書き込まれている。
この2つのベクトルを読み出し、内積を計算した後、
結果をもう1つのファイルに書き込むプログラムを作成せよ。
読み込むファイル、書き込むファイルどちらもファイル名を
任意に(キーボードから)指定できるようにする。
※なお、任意の大きさnのデータを処理できるようにする。
また、nはファイルの最初に置かれ、スペースによって要素は区切られる。
ベクトル要素のアクセスにはポインタを用いる。
[3] 環境
[3.1] OS: (WindowsXP)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C言語)
[4] 期限: ([07年9月26日] )
[5] その他の制限: なし
よろしくお願いします。
0254デフォルトの名無しさん
2007/09/25(火) 03:20:59>ある2つのファイルがある。
>この時1つのファイルには次元nの2つの整数ベクトルが書き込まれている。
これを用意してくれ
0255デフォルトの名無しさん
2007/09/25(火) 03:36:52適当に2つ条件にあうファイルを作ればいいんだろう?
0256デフォルトの名無しさん
2007/09/25(火) 04:16:46(___ ___)
∇
0257デフォルトの名無しさん
2007/09/25(火) 04:37:20n次元整数ベクトルってのが何だったか思い出せなかったので適当に書いてみた。
#include <stdio.h>
#include <stdlib.h>
int main(void){
FILE* fp; char filename[256];
int i, j, n, * vector[2], result = 0;
//ファイル読み込み
do{
printf("読み込むファイル?"); scanf("%s", filename);
}while((fp = fopen(filename, "r")) == NULL);
fscanf(fp, "%d", &n);{
for(i=0; i!=2; i++){
vector[i] = calloc(n, sizeof(int));
for(j=0; j!=n; j++)
fscanf(fp, "%d", (vector[i] + j));}
close(fp);}
//内積を求める
for(i=0; i!=n; i++) result += *(vector[0] + i) * *(vector[1] + i);
//ファイル書き込み
printf("書き込むファイル?"); scanf("%s", filename);
fp = fopen(filename, "w");
fprintf(fp, "%d", result);
close(fp); free(vector[1]); free(vector[0]);
return 0;}
0258163
2007/09/25(火) 06:06:24ありがとうございました
一応コード貼っておきます
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4964.txt
おさわがせしてごめんなさい
0259デフォルトの名無しさん
2007/09/25(火) 06:17:32Windows
WZ EDITOR
gcc
for文,1次元変数,do-while文,if-else文,doubleなどは習いました。
期限:今日中
問題
2次方程式の開放プログラム:a,b,cをそれぞれ入力し、axの2乗+bx+c=0の2つの解を表示するプログラムです。
0260デフォルトの名無しさん
2007/09/25(火) 06:28:21他の質問者と同じ形式で書き込もうとは思わない?
0261デフォルトの名無しさん
2007/09/25(火) 06:34:10いちいちうるせーんだよ、答えもしないクズが
0262デフォルトの名無しさん
2007/09/25(火) 06:39:09http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4965.c
0263デフォルトの名無しさん
2007/09/25(火) 07:53:08[2] 問題文(含コード&リンク):
main引数に格納されたtest.txt(ファイル名)を
変更してtest.abc.txtとするコードを作成せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 9/25
[5] その他の制限: なし
引数で得たファイル名の拡張子の前に「.abc」を入れるというものなのですが
うまく作成できません。よろしくお願いいたします。
0264デフォルトの名無しさん
2007/09/25(火) 08:00:20ファイルのリネームをしろってこと?
コピーを作れってこと?
0265デフォルトの名無しさん
2007/09/25(火) 08:22:33ファイルのコピーを作って
リネームしろってことだと思います。
0266デフォルトの名無しさん
2007/09/25(火) 08:27:28Cygwin?MinGW?
0267デフォルトの名無しさん
2007/09/25(火) 08:29:16すみません書き忘れでした
cygwinです
0268デフォルトの名無しさん
2007/09/25(火) 08:33:16複数拡張子(a.txt.bak) や拡張子無しはどうすれば?
0269デフォルトの名無しさん
2007/09/25(火) 08:35:42とくにその辺は指定がないので
気にしなくて(ないものと考えて)
良いと思われます
0270デフォルトの名無しさん
2007/09/25(火) 08:41:06#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int c,char**v){
char com[256]="./tmp.bat ";
strcat(com,v[1]);
FILE*fp=fopen("tmp.bat","w");
fprintf(fp,"%s","cp %1 tmp\nren tmp %~n1.abc.%~x1");
fclose(fp);
system("chmod 744 tmp.bat");
system(com);
system("rm tmp.bat");
return 0;
}
0271デフォルトの名無しさん
2007/09/25(火) 09:32:18http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4966.c
0272デフォルトの名無しさん
2007/09/25(火) 09:35:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4967.c
0273デフォルトの名無しさん
2007/09/25(火) 09:40:500274デフォルトの名無しさん
2007/09/25(火) 10:14:27#include <stdio.h>
#include <string.h>
#include <assert.h>
int main(int argc, char **argv)
{
char outname[256];
char *dot;
if( argc != 2 ){
printf("Usage:%s filename",argv[0]);
return 1;
}
if( (dot = strrchr(argv[1], '.')) == NULL ){
strcpy( outname, argv[1]);
strcat( outname, ".abc" );
}else{
int i;
for( i=0 ; argv[1][i] != *dot ; i++){
outname[i] = argv[1][i];
}
outname[i] = '\0';
strcat(outname, ".abc");
strcat(outname, dot);
}
if( rename( argv[1], outname ) == -1){
perror("Error");
return 1;
}
return 0;
}
0275274
2007/09/25(火) 10:20:170276デフォルトの名無しさん
2007/09/25(火) 10:51:490277デフォルトの名無しさん
2007/09/25(火) 10:58:40~~~~~~~~~~~~~~~~~~~~~
0278デフォルトの名無しさん
2007/09/25(火) 11:06:430279デフォルトの名無しさん
2007/09/25(火) 11:13:33大変参考になりましたm(__)m
0280デフォルトの名無しさん
2007/09/25(火) 13:13:52#include<stdio.h>
#include<string.h>
int main(int argc, char *argv[]){
char *src_orig, dest_orig[FILENAME_MAX+1], *src, *dest, *ptr;
if(argc==2) src_orig=argv[1];
else src_orig="test.txt";
src=src_orig;
dest=dest_orig;
ptr=strrchr(src, '\\');
if(ptr==NULL) ptr=strrchr(src, '/');
if(ptr!=NULL) dest+=sprintf(dest, "%.*s", ptr-src+1, src), src=ptr+1;
ptr=strrchr(src, '.');
if(ptr==NULL) ptr=src+strlen(src);
sprintf(dest, "%.*s.abc%s", ptr-src, src, ptr);
printf("%s -> %s\n", src_orig, dest_orig);
if(rename(src_orig, dest_orig)!=0){
printf("Error : rename failed. %s -> %s\n", src_orig, dest_orig);
}
return 0;
}
0281デフォルトの名無しさん
2007/09/25(火) 13:21:39[2] 問題文
機能の異なる加工機械が三種類M1・M2・M3(一台ずつ)があり、それぞれ加工経路の異なる三種類の製品A・B・Cの発注がランダムに来る。
発注が来てからスケジュールを行い、何日で完成するかを出すプログラムを作りなさい。
ただし、製品Aの加工順路はM1⇒M2⇒M3、加工時間はM1:5M2:10 M3:15時間
製品Bの加工順路はM2⇒M3⇒M1、加工時間はM1:10M2:15 M3:5時間
製品Cの加工順路はM3⇒M1⇒M2、加工時間はM1:15M2:5 M3:10時間
発注が来た時点で、使用したい加工機械が他の製品を加工中だった場合、その製品の加工が終了してから、
加工を開始するものとする。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語: C
[4] 期限: 9/25
[5] その他の制限: なし
よろしくお願いします。
0282デフォルトの名無しさん
2007/09/25(火) 13:25:41#include<stdio.h>
char *addext(char *cs, int size, char *org, char *ext) {
char *p;
for (p = org; *p != '.' && *p != '\0'; p++)
continue;
strncpy(cs, org, (p - org));
strncpy(cs + (p - org), ext, strlen(ext));
strncpy(cs + (p - org) + strlen(ext), p, strlen(p));
return cs;
}
int copy(char *from, char *to) {
FILE *src = fopen(from, "r");
if (!src) return -1;
FILE *dst = fopen(to, "w");
int c, n;
for (n = 0; (c = getc(src)) != EOF; n++) {
putc(c, dst);
}
fclose(src);
fclose(dst);
return n;
}
int main(int argc, char **argv) {
int size = 256;
char dst[size], *src = argv[1];
if (1 < argc && 0 < copy(src, addext(dst, size, src, ".abc"))) {
printf("copy `%s' -> `%s'", src, dst);
}
}
0283デフォルトの名無しさん
2007/09/25(火) 13:31:05最短日数を答えるんだよね?アルゴリズムとか書いてない?
0284デフォルトの名無しさん
2007/09/25(火) 13:32:481日24時間で計算し、常に稼動しているものとしておk?
入力するデータ形式はどんな感じ?
加工途中で追加の発注が割り込む可能性はある?
発注の最小時間単位は1時間?1分?1秒?
絶対遵守の納期設定はある?
0285デフォルトの名無しさん
2007/09/25(火) 13:34:220286281
2007/09/25(火) 13:40:41アルゴリズムですか。。。
発注が着たら前詰めで、割り付けていくとしか書いてないんですけど。。。
例えば、製品Aの発注が来た時点で、M1が使用中で3時間後にその作業が終了するなら、
発注が来て三時間後に製品Aの加工を開始するって意味だと思うんですけど。。。
もちろん次のM2がまた使用中ならその作業が終了してから、M2での製品Aの加工を開始するって意味です。
よろしくお願いします。
0287281
2007/09/25(火) 13:48:321日24時間で計算し、常に稼動しているものとしておk?
⇒大丈夫です。
加工途中で追加の発注が割り込む可能性はある?
⇒他の製品の発注が来ることはありますが、同じ製品の追加はないです。
早く来た発注がを最優先でお願いします。
発注の最小時間単位は1時間?1分?1秒?
⇒一時間でお願いします。
絶対遵守の納期設定はある?
⇒ありません。
0288デフォルトの名無しさん
2007/09/25(火) 13:50:010289281
2007/09/25(火) 13:55:37発注のタイミングは、ランダムでお願いします。
終了条件書き忘れてました。各製品5回、発注が来たら終了でお願いします。
よろしくお願いします。
0290デフォルトの名無しさん
2007/09/25(火) 14:10:38仮に下のような2つの発注があった場合、解はどうなる?
#発注時(単位:時) 製品種別 注文コード(便宜上勝手に決めた)
0 製品A 000A
15 製品C 015C
経過時間順に
0 000A発注 000A-M1開始
5 000A-M1終了 000A-M2開始
15 000A-M2終了 000A-M3開始 015C発注 015C-M3開始 <- 発注時間と加工開始時間が重なる時リスケジューリングが先?
000A-M3 が優先になるか 015C-M3 が優先になるのかどっち?
000A-M3 が優先の時、総時間 60時間
015C-M3 が優先の時、総時間 55時間
0291281
2007/09/25(火) 14:22:06000Aの発注が先なので、000Aを優先でお願いします。
よろしくお願いします。
0292デフォルトの名無しさん
2007/09/25(火) 14:59:28を表示するプログラムを教えて。
0293デフォルトの名無しさん
2007/09/25(火) 15:56:53例えば、ランダムで90〜110の数字を出すためにはどうしたらいいですか?
誰か教えてください。
0294デフォルトの名無しさん
2007/09/25(火) 16:01:35スレ違いだが、
90〜110 -> 90 + 0〜20
0295デフォルトの名無しさん
2007/09/25(火) 16:02:16rand()%21 にすると乱数の範囲は ???〜??? になります
それに ??? を足すと乱数の範囲は ???〜??? になります
0296デフォルトの名無しさん
2007/09/25(火) 16:10:5351を90〜110 -> 90 + 0〜20 に書き換えればいいってことですか?
0297デフォルトの名無しさん
2007/09/25(火) 16:36:380298デフォルトの名無しさん
2007/09/25(火) 17:16:19分かったら消えろ
0299253
2007/09/26(水) 00:56:25書き込まれているデータは例えば3次元整数ベクトルでしたら
1 2 3
4 5 6
のような数字のみであり、
1行目をベクトルa、2行目をベクトルbとしてそれを認識し内積を求め、
その結果を別のもう1つのファイルに書き込む。
と言ったイメージであると思います(問題には質問時に書いた事以上は
書かれていなかったのであくまで私の考えですが)。
ですから、おそらく問題にあるn次元の「n」は1つの行に書かれた数値の数
で決定し、データ(数値)はファイルの先頭から書かれているという条件があるので、
1行目と2行目を読み込むだけで、内積を求めるための要素は揃うという事だと思います。
申し訳ないのですが再度よろしくお願いします。
0300デフォルトの名無しさん
2007/09/26(水) 01:21:523
1 2 3
4 5 6
もしくは
3 1 2 3 4 5 6
のどっちかだろ。ってわけでその話は>>257でおしまい
0301デフォルトの名無しさん
2007/09/26(水) 01:25:09fortranとかだと結構見かけるんだけれども、C++はほとんど無い気がします。勿体無いですよね??
0302デフォルトの名無しさん
2007/09/26(水) 01:35:100303デフォルトの名無しさん
2007/09/26(水) 01:39:14[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4970.txt
[3] 環境
[3.1] OS: (Windows)
[3.2]
[3.3] 言語: (C)
[4] 期限: 9/26
[5] その他の制限: なし
よろしくお願いします。
0304デフォルトの名無しさん
2007/09/26(水) 01:41:160305デフォルトの名無しさん
2007/09/26(水) 01:55:23【1】
(1) 38行目でFp2を閉じている。「Fp2」
(2) 起動時に指定された2つめをファイル名として与える。「argv[2]」
(3) 一つめのファイルを開くのには成功している。この時点で閉じなければならないのは「Fp1」
(4) strerrorはエラー番号を引数にしてエラーメッセージへのポインタを返す関数。「(errno)」
(5) strcmpは同じ文字列であれば0を返す。ここは同じでないときに-1を返す処理なので「0」
ただし4がそれで良いのかどうかは自信なし(汗
0306デフォルトの名無しさん
2007/09/26(水) 02:00:22期限過ぎてしもた
思ったよりもずっと難しかったし、1回全部作り直したのに見通しがよくならないし…
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4971.c
使うには標準入力から下のような文字列を与える
発注時間(整数で単位は hour) 製品種別(A,B or C))
0 A
14 C
15 A
15 B
EOFで発注を終了
./a.out -v のようにコマンドラインオプション -v をつけると詳細表示
0307デフォルトの名無しさん
2007/09/26(水) 02:03:42発注順序はソート済みとする
0308デフォルトの名無しさん
2007/09/26(水) 02:28:36【2】
memcmpでは\0が出現しても処理が継続される。
単純に置き換えても機能しない場合がある。
(ような気がする。fgetsで取得した文字数が指定以下だった場合、残りは'\0'でパディングされるんだったか?)
79行目を次の7行に置き換える。
loop:
nrtn = memcmp(szdat1, szdat2, 1);
if(*szdat1 == '\0' || *szdat2 == '\0') goto loop_end;
szdat1++;
szdat2++;
goto loop;
loop_end:
0309デフォルトの名無しさん
2007/09/26(水) 03:46:09むずいな……。
指針でも書いてくれないと追い辛いっす。
0310デフォルトの名無しさん
2007/09/26(水) 03:56:58(すた☆らき)
 ̄ ̄\| ̄
http://www.freewebs.com/premiumtv/?X3/?STV=%E3%82%89%E3%81%8D+%E3%81%99%E3%81%9F
0311デフォルトの名無しさん
2007/09/26(水) 07:22:30>>306 に以下の3つの注文を与えるだけで、バグが発覚した…orz
0 B
0 C
0 A
データの流れはコマンドラインオプション -v をつけて表示される内容が全て。
簡単に説明すると -v オプションで表示される内容の内、
加工機械が加工を開始することが出来るのは一番左の中括弧の工程のみ
但し >>306 は加工が終わるたびに全工程を前詰めにしている (batch_restruct) が、
machine_t の process_t* を連動させていないためにバグってます
0312デフォルトの名無しさん
2007/09/26(水) 08:39:29>>306 の修正版
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4973.c
0313デフォルトの名無しさん
2007/09/26(水) 12:16:23お題はなんでもいいです。
0314デフォルトの名無しさん
2007/09/26(水) 12:22:53IOCCC見てくればいいじゃん
0315よこ ◆2LEFd5iAoc
2007/09/26(水) 12:27:16[1] 授業単元:システム演習
[2] 問題文(含コード&リンク):行列の乗算のプログラムを作ってみよ。大きな行列要素(1000×1000)でも実行できるように作っておくこと。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: ([2007年09月26日17:00まで]
[5] その他の制限: 制限はないです。お願いします。
0316デフォルトの名無しさん
2007/09/26(水) 12:47:39#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct tag_matrix_t{
int column, row;
double **data, *data_area;
}matrix_t;
matrix_t *matrix_alloc(int column, int row){
matrix_t *matrix;
int x, y;
matrix=malloc(sizeof(matrix_t));
matrix->column=column;
matrix->row=row;
matrix->data_area=malloc(sizeof(double)*column*row);
matrix->data=malloc(sizeof(double*)*column);
for(y=0;y<column;y++) matrix->data[y]=&matrix->data_area[y*row];
for(x=0;x<row;x++) matrix->data[0][x]=0.0;
for(y=1;y<column;y++) memcpy(matrix->data[y], matrix->data[0], sizeof(double)*row);
return matrix;
}
matrix_t *matrix_mul(matrix_t *a, matrix_t *b){
matrix_t *c;
int i, j, k, x;
if((x=a->row)!=b->column) return NULL;
c=matrix_alloc(a->column, b->row);
for(i=0;i<a->column;i++)
for(j=0;j<b->row;j++)
for(k=0;k<x;k++) c->data[i][j]+=a->data[i][k]*b->data[k][j];
return c;
}
0317デフォルトの名無しさん
2007/09/26(水) 12:59:34どっかで暴れてた糞コテか?
0318デフォルトの名無しさん
2007/09/26(水) 13:15:15安直だからどこかで誰かが使ったんでしょう
0319デフォルトの名無しさん
2007/09/26(水) 13:36:18[2] 問題文(含コード&リンク):30個以下の非負の数値データを入力したあとそれらのデータをそのまま出力する。次に1行あけて(改行を出力して)から今度は大きい順に出力する。
データ入力はキーボードから行い、適当な数値を数個入力したところでEOFを示すCtrl−Dを入力する。また、入力される数値データは必ず非負であると仮定してよい(つまりエラーチェックは不要)ただし30個以上の入力は受け付けないようにする。
プログラムは以下のステップで作成すること。
a:30個以下の数値入力データを配列に格納し、そのまま出力するプログラムを作成する。
b:n個の配列データを大きい順に出力するために、以下のことをn回繰り返す。
b1:配列データから最大値を持つ配列要素を探し、その添字を覚えておく。
b2:b1で覚えた添字のデータを出力し、同時にその要素に-1を代入する。
実行例
input number:1 2 3 4 6 32 34 56 21 11
1 2 3 4 6 32 34 56 21 11
56 34 32 21 11 6 4 3 2 1
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限:明日
よろしくお願いします
0320デフォルトの名無しさん
2007/09/26(水) 14:27:41#include <iostream>
const int sanju=30;class hairetsu {private: int arr[sanju];
int n; void nyuuryoku(); void shutsuryoku() const;
int b1() const; void b2(int);public: void a(); void b();};
void hairetsu::a(){ nyuuryoku(); shutsuryoku();}
void hairetsu::nyuuryoku(){ int i; for(i=0; i<sanju; ++i){
if(!(std::cin >> arr[i])) break; } n=i-1;}
void hairetsu::shutsuryoku() const { for(int i=0; i<=n; ++i){
std::cout << arr[i] << ' '; }}
void hairetsu::b(){ for(int i=0; i<=n ; ++i){ b2(b1()); }}
int hairetsu::b1() const { int i,index=0; for(i=1;i<=n;++i){
if(arr[i]>arr[index])index=i; } return index;}
void hairetsu::b2(int index){ std::cout << arr[index] << ' ';
arr[index]=-1;}int main(){ hairetsu h; h.a(); std::cout
<< std::endl; h.b();}
0321デフォルトの名無しさん
2007/09/26(水) 15:41:15#include <iostream>
using namespace std;
int main() {
int array[30], n = 0;
while (n < 30 && cin >> array[n]) ++n;
for (int i = 0; i < n; ++i) { // a
cout << array[i] << ' ';
}
cout << endl << endl;
for (int i = 0; i < n; ++i) { // b
int k = 0; // index of maximum element
for (int j = 0; j < n; ++j) // b1
if (array[j] > array[k]) k = j;
cout << array[k] << ' '; // b2
array[k] = -1;
}
cout << endl;
}
0322デフォルトの名無しさん
2007/09/26(水) 16:20:58>>321
ありがとうございました
0323デフォルトの名無しさん
2007/09/26(水) 19:41:122 ポインタ
int data[10] ={10,20,30,40,50,60,70,80,-999} このようなint配列があります 配列の内容を実行結果のように表示するプログラムを作りなさい -999になれば処理を終了します
ポインタを固定して表示させる処理とポインタを変化させて表示させる処理の2つ作成しなさい
この内容がわからないので教えて下さいお願い致します
0324デフォルトの名無しさん
2007/09/26(水) 19:43:020325デフォルトの名無しさん
2007/09/26(水) 19:43:38テンプレ読んでからやりなおせ。アホ。
0326デフォルトの名無しさん
2007/09/26(水) 19:46:31お前、来なくて良いよ。アホとか書くな、アホっ
0327デフォルトの名無しさん
2007/09/26(水) 19:47:52>>1を読め。
0328デフォルトの名無しさん
2007/09/26(水) 19:49:220329デフォルトの名無しさん
2007/09/26(水) 19:50:04読まなくていいものを書き込むな。
0330デフォルトの名無しさん
2007/09/26(水) 19:50:240331デフォルトの名無しさん
2007/09/26(水) 19:50:42>>1を読め。
0332デフォルトの名無しさん
2007/09/26(水) 19:50:53日本語はもうちょっと上手く使わないとね…
0333デフォルトの名無しさん
2007/09/26(水) 19:50:550334デフォルトの名無しさん
2007/09/26(水) 19:51:410335デフォルトの名無しさん
2007/09/26(水) 19:51:430336デフォルトの名無しさん
2007/09/26(水) 19:52:070337デフォルトの名無しさん
2007/09/26(水) 19:52:260338デフォルトの名無しさん
2007/09/26(水) 19:52:57駄目な奴は何をやっても駄目
0339デフォルトの名無しさん
2007/09/26(水) 19:57:24> 気に入らない質問やその他や発言はスルーの方向で。
0340デフォルトの名無しさん
2007/09/26(水) 20:15:190341デフォルトの名無しさん
2007/09/26(水) 20:19:30俺怒らすと怖いですよ(ぉ っていうか、俺の友達なら知ってることだけどな。
お前ら知らんだろ。
0342デフォルトの名無しさん
2007/09/26(水) 20:23:190343デフォルトの名無しさん
2007/09/26(水) 20:30:30あのなぁ、お前みたいな茶化したりする騙りなんてバレバレなんだよ。
なんでそう質問者をバカにするだけで質問に答える能力が無いくせに
このスレで、でけぇ面してんだ?鬱陶しいんだよ、他の回答者からしてみてもお前は
0344デフォルトの名無しさん
2007/09/26(水) 20:30:46#include<stdio.h>
int main(void){
int data[10]={10,20,30,40,50,60,70,80,-999};
int *ptr, i;
for(i=0,ptr=data;*(ptr+i)!=-999;i++) printf("%d\n", *(ptr+i));
for(ptr=data;*ptr!=-999;ptr++) printf("%d\n", *ptr);
return 0;
}
0345デフォルトの名無しさん
2007/09/26(水) 20:31:32もっと分かりやすく書けや。気に入らん奴は回答せんでええって。
俺、怒らすと怖いよ。
0346デフォルトの名無しさん
2007/09/26(水) 20:32:55ttp://pc11.2ch.net/test/read.cgi/tech/1188748806/970
0347デフォルトの名無しさん
2007/09/26(水) 20:33:070348デフォルトの名無しさん
2007/09/26(水) 20:41:59オオカミ少年乙
0349デフォルトの名無しさん
2007/09/26(水) 20:49:420350デフォルトの名無しさん
2007/09/26(水) 20:52:430351デフォルトの名無しさん
2007/09/26(水) 21:18:41[2] OS Windows VC60
[3]問題
int data[10] ={5,8,10,2,1,14,35,6,12}:
配列中の最大値と最小値を表示するプログラムをポインタを使用して作成するプログラムが解らないので教えて貰えませんか?
期限9月27木曜です
0352デフォルトの名無しさん
2007/09/26(水) 21:21:3110分くらいするとマルチポストし始めるのでしょうか?
0353デフォルトの名無しさん
2007/09/26(水) 21:40:43#include<stdio.h>
int cmp_big(int a, int b){
return a>b;
}
int cmp_small(int a, int b){
return a<b;
}
int *search(int arr[], int arr_size, int (*cmp)(int,int)){
int i, index=0;
for(i=1;i<arr_size;i++)
if(cmp(arr[i], arr[index])>0) index=i;
return &arr[index];
}
int main(void){
int data[10]={5,8,10,2,1,14,35,6,12};
printf("maximum : %d\n", *search(data, sizeof(data)/sizeof(data[0]), cmp_big));
printf("minimum : %d\n", *search(data, sizeof(data)/sizeof(data[0]), cmp_small));
return 0;
}
0354デフォルトの名無しさん
2007/09/26(水) 21:53:000355デフォルトの名無しさん
2007/09/26(水) 21:54:15[1] 授業単元: 教科書
[2] OS Windows
[3]問題
int data[10] ={5,8,10,2,1,14,35,6,12}:
配列中の最大値と最小値を表示するプログラムをポインタを使用して作成するプログラムが解らないので教えて貰えませんか?
【初心者歓迎】C/C++室 Ver.42【環境依存OK】
http://pc11.2ch.net/test/read.cgi/tech/1188748806/
0356デフォルトの名無しさん
2007/09/26(水) 21:54:31こういうプログラムはいいな。
このまま提出したら質問主が疑われそうなもの。
0357デフォルトの名無しさん
2007/09/26(水) 21:59:290359デフォルトの名無しさん
2007/09/26(水) 22:02:21minimum → 最小値
でいいんじゃね
0360デフォルトの名無しさん
2007/09/26(水) 22:05:48[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい
誰か宜しくお願いします
ちなみに初心者です
0361デフォルトの名無しさん
2007/09/26(水) 22:06:540362デフォルトの名無しさん
2007/09/26(水) 22:18:34#include<stdio.h>
double get_average(double arr[], int arr_size){
double *ptr, average=893;
int i;
ptr=arr;
for(ptr=arr,i=0;i<arr_size;i++,ptr++)
average=(average*i+*ptr)/(i+1);
return average;
}
double get_sum(double arr[], int arr_size){
double *ptr;
ptr=arr;
return *ptr+((arr_size>0)?get_sum(ptr+1, arr_size-1):0);
}
int main(void)
{
double data[]={10.8,20.3,30,6.40,10.4,2.12};
printf("sum : %f\n", get_sum(data, sizeof(data)/sizeof(data[0])));
printf("average : %f\n", get_average(data, sizeof(data)/sizeof(data[0])));
return 0;
}
0363デフォルトの名無しさん
2007/09/26(水) 22:20:45さすがにこれ以上は勘弁って感じだよ。
0364デフォルトの名無しさん
2007/09/26(水) 22:21:080365デフォルトの名無しさん
2007/09/26(水) 22:23:34FOX-toolkitの話ってどこに行けば聞けますか?
0366デフォルトの名無しさん
2007/09/26(水) 22:24:00マルチしてんじゃねえよ
0367>>281 1/4
2007/09/26(水) 22:27:07struct product *p;
int value;
};
struct product {
struct machine *ms[4];
struct product *original;
};
struct machine *createm() {
return (struct machine *)calloc(1, sizeof(struct machine));
}
struct product *createp(struct machine *first, struct machine *second, struct machine *last) {
struct product *p = (struct product *)calloc(1, sizeof(struct product));
p->ms[0] = first;p->ms[1] = second;p->ms[2] = last;p->original = p;
return p;
}
struct product *clonep(struct product *original) {
if (!original) return 0;
struct product *p = (struct product *)calloc(1, sizeof(struct product));
*p = *original;
return p;
}
struct product *clonep_at_random(struct product **ps, int size) {
return clonep(ps[rand() % size]);
}
int n_completed(struct product *original, struct product **ps, int size) {
int i, n = 0;
for (i = 0; i < size; i++) {
if (ps[i]->original == original && !ps[i]->ms[0]) n++;
}
return n;
}
0368>>281 2/4
2007/09/26(水) 22:27:50int i, n = 0;
for (i = 0; i < size; i++) {
if (ps[i]->original == original) n++;
}
return n;
}
struct product *waitingproduct(struct machine *m, struct product **ps, int size) {
int i;
for (i = 0; i < size; i++) {
if (ps[i]->ms[0] == m) {
return ps[i];
}
}
return 0;
}
void shift(struct machine **ms) {
ms[0] = ms[1];ms[1] = ms[2];ms[2] = ms[3];
}
int main() {
struct machine *ms[4];
ms[0] = createm();ms[1] = createm();ms[2] = createm();ms[3] = 0;
struct product *p, *ps[4];
ps[0] = createp(ms[0], ms[1], ms[2]);
ps[1] = createp(ms[1], ms[2], ms[0]);
ps[2] = createp(ms[2], ms[0], ms[1]);
ps[3] = 0;
int values[][3] = {{5, 10, 15}, {10, 15, 5}, {15, 5, 10}};
int i, n, maxsize = 64, size = 0;
struct product *products[maxsize];
for (n = 0; ; n++) {
0369>>281 3/4
2007/09/26(水) 22:28:31// = 各五個完成したら終了?
if (
5 <= n_completed(ps[0], products, size)
&& 5 <= n_completed(ps[1], products, size)
&& 5 <= n_completed(ps[2], products, size)
) break;
// 289:各製品5回、発注が来たら終了でお願いします。
// = 終了の条件とは別に、発注の回数も各五回?
// 287:他の製品の発注が来ることはありますが、同じ製品の追加はないです。
// = 作業中でない製品タイプの発注のみが来る?
p = clonep_at_random(ps, 4);
if (p && (
(p->original == ps[0] && 5 <= n_existed(ps[0], products, size))
|| (p->original == ps[1] && 5 <= n_existed(ps[1], products, size))
|| (p->original == ps[2] && 5 <= n_existed(ps[2], products, size))
|| (ms[0]->p && ms[0]->p->original == p->original)
|| (ms[1]->p && ms[1]->p->original == p->original)
|| (ms[2]->p && ms[2]->p->original == p->original)
)) {
free(p);p = 0;
}
// 受注
if (p && size < maxsize) products[size++] = p;
// 各機械が処理する製品を決定
for (i = 0; i < 3; i++) {
if (!ms[i]->p && (ms[i]->p = waitingproduct(ms[i], products, size))) {
ms[i]->value = values[(&ms[i] - &ms[0])][((void *)ms[i]->p->original - (void *)ps[0]) / sizeof(struct product)];
}
}
// 処理直前の状態。
char cs[] = {'A', 'B', 'C', 'Q'};
0370デフォルトの名無しさん
2007/09/26(水) 22:30:140371>>281 4/4
2007/09/26(水) 22:30:56for (i = 0; i < 3; i++) {
if (ms[i]->p) {
printf(" [%c:%d]", cs[((void *)ms[i]->p->original - (void *)ps[0]) / sizeof(struct product)], ms[i]->value);
} else {
printf(" []");
}
}
printf("\n");
// 処理と処理済処理
for (i = 0; i < 3; i++) {
if (ms[i]->p) {
ms[i]->value--; // 加工
if (ms[i]->value <= 0) {
shift(ms[i]->p->ms);
ms[i]->p = 0;
}
}
}
}
printf("%dh", n);
}
// 根本的に何か勘違いしているような気もする。
0372デフォルトの名無しさん
2007/09/26(水) 22:33:060373デフォルトの名無しさん
2007/09/26(水) 22:33:25#include<stdio.h>
double get_average(double arr[], int arr_size){
double average=0;
int i;
for(i=0;i<arr_size;i++,arr++)
average=(average*i+*arr)/(i+1);
return average;
}
double get_sum(double arr[], int arr_size){
return *arr+((arr_size>0)?get_sum(arr+1, arr_size-1):0);
}
int main(void){
double data[]={10.8,20.3,30,6.40,10.4,2.12};
printf("sum : %f\n", get_sum(data, 6));
printf("average : %f\n", get_average(data, 6));
return 0;
}
0374デフォルトの名無しさん
2007/09/26(水) 22:45:06添え字演算子はポインタ演算のシンタックスシュガーにすぎないんだから、
結局[]だってポインタ使ってるじゃないですか!
って反抗するのもよいって本で言ってた。
0375デフォルトの名無しさん
2007/09/26(水) 22:46:04「言ってた」って子供の絵本か!
0376デフォルトの名無しさん
2007/09/26(水) 22:50:12Short Coding というのがあるよ。
有名な例だと、
main(n){gets(&n);putchar(n%85+5);}
これをコンパイルして実行して、
1 2
とか
3 6
と入力すれば、足される。
0377デフォルトの名無しさん
2007/09/26(水) 22:59:22[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい
誰か宜しくお願いします
ちなみに初心者です
0378デフォルトの名無しさん
2007/09/26(水) 23:03:25>>373 のどこが分からないのか説明してくれ
0379デフォルトの名無しさん
2007/09/26(水) 23:15:30もう放置で…
0380デフォルトの名無しさん
2007/09/26(水) 23:19:190381デフォルトの名無しさん
2007/09/26(水) 23:20:50マルチポスト
0382デフォルトの名無しさん
2007/09/26(水) 23:24:31[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の戦闘力と攻撃力を求めるプログラムをポインタを使って作成しなさい
誰か宜しくお願いします
ちなみに小心者です
0383fubu ◆dFztVLlF36
2007/09/26(水) 23:26:35[2] 問題文(含コード&リンク):
atoi関数と同様の処理をする関数を作成しなさい
[3] 環境
[3.1] OS: (Windows2000)
[3.2] コンパイラ名とバージョン: CPad forBorland C++Compiler Ver2.31
[3.3] 言語: (C/C++ どちらでも可)
[4] 期限: ([2007年09月28日10:00まで]
[5] atoiは文字列を10進数に変換する処理をするということはわかるのですが、
関数の自作というのがわかりません、、よろしくお願いします!!
0384デフォルトの名無しさん
2007/09/26(水) 23:26:420385デフォルトの名無しさん
2007/09/26(水) 23:31:40int my_atoi(const char *str){int n;sscanf(str,"%d",&n);return n;}
0386デフォルトの名無しさん
2007/09/26(水) 23:35:130387デフォルトの名無しさん
2007/09/26(水) 23:44:470388デフォルトの名無しさん
2007/09/26(水) 23:46:190389デフォルトの名無しさん
2007/09/26(水) 23:48:280390デフォルトの名無しさん
2007/09/26(水) 23:53:34#include<ctype.h>
int atoi_(const char*str){
int sign = 0;
int value= 0;
while(isspace(*str))++str;
if(*str == '+')++str;
else if(*str == '-')sign = 1,++str;
for(;isdigit(*str);++str){
value *= 10;
value += *str-'0';
}
if(sign)value = -value;
return value;
}
0391デフォルトの名無しさん
2007/09/26(水) 23:56:16[2] 問題文(含コード&リンク): 下に記入します
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 9月27日21時
[5] その他の制限:制限などは問題文にあるとおりです。
問題
char型の配列を使用し、ABCDEFGHIJKLMNというリテラルで初期化しておく。その後、
整数kを入力すると、k>0ならば文字列を右にk個巡回シフト、k<0なら左にk個巡回
シフトするプログラムを作成せよ。kはEOF入力まで繰り返し入力できるようにすること。
【実行例】どれだけシフトしますか--> 3
LMNABCDEFGHIJK
どれだけシフトしますか--> 4
HIJKLMNABCDEFG
どれだけシフトしますか--> -7
ABCDEFGHIJKLMN
どれだけシフトしますか--> 17
LMNABCDEFGHIJK
どれだけシフトしますか--> (EOF入力で終了)
ちなみに実行例を見ればわかると思いますが、シフトは毎回ABC〜から始めるのではなく
前の結果から巡回シフトを開始します。
わかるかたよろしくお願い致します。
0392デフォルトの名無しさん
2007/09/27(木) 00:00:130393デフォルトの名無しさん
2007/09/27(木) 00:05:45int a = 1, b = 0;
const char *c = cs;
if (*c == '-') {
a *= -1;
c++;
}
for (; *c != '\0'; c++) {
if (*c >= '0' && *c <= '9')
b = (b * 10) + *c - '0';
else
break;
}
return a * b;
}
0394デフォルトの名無しさん
2007/09/27(木) 00:07:06#include<string.h>
#include<iostream>
using namespace std;
int main(){
char s[]="ABCDEFGHIJKLMN";
int size = strlen(s);
char*end = s + size;
int shift;
while(cout << "どれだけシフトしますか--> ",cin>>shift){
shift %= size;
if(shift < 0)shift += size;
rotate(s,end-shift,end);
cout << s << endl;
}
cout<<endl;
}
0395394
2007/09/27(木) 00:10:000396デフォルトの名無しさん
2007/09/27(木) 00:25:40[2] 問題文:
問:対称に並んだ文字列を検出する関数
与えられた文字リストの中の数字(1桁)に対応する数をnとして、
その数字の前後
n文字が対称的である部分を見つけ、複製して返す関数mirror_ima
ge()を作成せよ。
ここで「対照的」とは文字リストのi(i=1,2,...)番目の要素a(i)が
数字であり、それに対応
する数をnとすれば、条件a(i-1)=a(i+1),a(i-2)=a(i+2),...a(i-n
)=a(i+n)を全て満たす事である。
対称的である部分が複数ある場合には、それらの内の最も長いもの
を返すこと。
ただし最長の部分が複数ある場合には、そのいずれかを返せばよい
。
対称的な部分がなければ空リストを返す事。
関数mirror_image()のプロトタイプ宣言は以下の通りである。
struct node *mirror_image(struct node*);
他の関数はこれで御願いします↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img
/4974.txt
0397デフォルトの名無しさん
2007/09/27(木) 00:27:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4974.txt
このプログラムに、例えばP1P、abcde3edcxyad、ba1ax4xa1af、ab2
ba2abを与えると、
それぞれ(P1P)、(cde3edc)、(a1ax4xa1a)、(ab2ba)又は(ba2ab)が
印字される。
また、USA、P2P、short5trohなどを与えると()が印字される。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 9月27日12:00まで
[5] その他の制限: リストを配列にコピーするのは御法度です。
よろしくおねがいします。
0398デフォルトの名無しさん
2007/09/27(木) 01:18:40[2] OS Windows
[3]問題
double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい
誰か宜しくお願いします
ちなみに初心者です
0399デフォルトの名無しさん
2007/09/27(木) 01:22:550400デフォルトの名無しさん
2007/09/27(木) 01:26:37#include <stdio.h>
int main(void)
{
int i;
double data[5] ={10.8, 20.3, 30, 6.40, 10.4, 2.12}, max = 0;
char *p;
for (i = 0; i < 5; i++) {
max += data[i];
}
p = "max = %f, average = %f\n";
printf(p, max, max / 5);
return 0;
}
0401デフォルトの名無しさん
2007/09/27(木) 01:28:58ポインタ自身はそこまで危険じゃない
0402デフォルトの名無しさん
2007/09/27(木) 01:29:04double data[5] ={10.8,20.3,30,6.40,10.4,2.12}:
だと変だな。
最後のコロンは置き換えたが、要素数が間違っているのまでは気づかなかった。
適当に修正してくれよ。
0403デフォルトの名無しさん
2007/09/27(木) 01:32:15テンプレに沿わない質問に答える気がないならお前が答えなくて良いよ
うっとうしいんだよ
0404デフォルトの名無しさん
2007/09/27(木) 01:37:140405デフォルトの名無しさん
2007/09/27(木) 01:41:430406デフォルトの名無しさん
2007/09/27(木) 01:44:05無能乙www
0407デフォルトの名無しさん
2007/09/27(木) 01:58:340408デフォルトの名無しさん
2007/09/27(木) 02:08:18ちょっと難しいのになると出てこないくせに
0409デフォルトの名無しさん
2007/09/27(木) 02:10:240410デフォルトの名無しさん
2007/09/27(木) 02:24:52文字列いじる程度の簡単な奴だけだろw
ちょっと難しいのになると出てこないくせに
↑なんだこいつ?きめぇ。初歩的なもの以外、答えていないと思ってんのか?
お前がテンプレに沿った質問の仕方をしていないからって、答えないよと言っているだけで
テンプレに沿っていないけど初歩的ともいえる問題に答えることすら出来ないんだろ?w
gdgd言うなら別に答えなくて良いっつってんじゃん、ここはお前が主のスレじゃねーよ
答える側は任意
0411デフォルトの名無しさん
2007/09/27(木) 02:26:46int main()
{
int last_index = sizeof(data)/sizeof(data[0]);
if (last_index-5)printf("This program is abnormal\n");// 平気か調べる。
for (double *p=data,sum=0.0;p!=data[last_index];p++){
sum+=*p;
}
char output_string[1024];
sprintf(output_string,"sum=%f,avg=%f",sum,sum/(float)last_index);
puts(output_string);
return 0;
}
死ね!
0412デフォルトの名無しさん
2007/09/27(木) 02:49:45[2] OS Windows
[3]問題
double data[5] ={10.8,30,6.40,10.4,2.12}:
配列の全要素の合計と平気を求めるプログラムをポインタを使って作成しなさい
誰か宜しくお願いします
ちなみに初心者です
0413デフォルトの名無しさん
2007/09/27(木) 03:01:060414デフォルトの名無しさん
2007/09/27(木) 03:02:22node の定義や必要そうな include もこちらで補うのかい?
0415デフォルトの名無しさん
2007/09/27(木) 05:56:53#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
struct node {
char element;
struct node *next;
};
int check(struct node *p, struct node *mid)
{
int i, j, n = mid->element - '0';
struct node *temp;
for(i=0, temp = p; temp!=mid; i++, temp=temp->next);
if(i!=n) return 0;
for(i=0; i<n; i++, temp=temp->next) if(temp->next==NULL) return 0;
for(i=0; i<n; i++, p=p->next) {
for(temp=mid, j=0; j<n-i; j++, temp=temp->next);
if(p->element != temp->element) return 0;
}
return 1;
}
0416デフォルトの名無しさん
2007/09/27(木) 05:59:16struct node* mirror_image(struct node *list)
{
struct node *p, *buf = NULL, *temp, *ret = (struct node*)malloc(sizeof(struct node));
int max = 0;
ret->next = NULL;
for(p=list->next; p!=NULL; p=p->next) {
for(temp=p->next; temp!=NULL; temp=temp->next) {
if(isdigit(temp->element) && temp->element - '0' > max) {
if(check(p, temp)) {
buf = p;
max = temp->element - '0';
}
}
}
}
if(buf) {
int i, l = 2 * max + 1;
for(i=0, temp = ret; i<l; i++, buf = buf->next) {
temp = temp->next = (struct node*)malloc(sizeof(struct node));
temp->element = buf->element;
}
temp->next = NULL;
}
return ret;
}
0417デフォルトの名無しさん
2007/09/27(木) 07:02:54眠いのに朝からやってやったお(^ω^)
ループ文なしでやってみたお。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4980.c
0418デフォルトの名無しさん
2007/09/27(木) 07:11:590419デフォルトの名無しさん
2007/09/27(木) 11:01:250420デフォルトの名無しさん
2007/09/27(木) 11:09:09char *createcs(struct node *list) {
char *cs = 0;
int i = 0;
struct node *p;
for (i = 0, p = list->next; p; i++, p = p->next) continue;
cs = (char *)malloc(sizeof(char) * (i + 1));
for (i = 0, p = list->next; p; i++, p = p->next) cs[i] = p->element;
cs[i] = '\0';
return cs;
}
0421デフォルトの名無しさん
2007/09/27(木) 11:09:41struct node *mirror_image(struct node *list) {
char *cs = createcs(list);
struct node *mirror = 0;
int i, j, n, maxn_index = -1;
for (i = 0; i < strlen(cs); i++) {
if (!isdigit(cs[i])) continue;
n = cs[i] - '0';
if (i < n || (strlen(cs) - 1 - i) < n) continue; // 無理
if (n < cs[maxn_index] - '0') continue; // 無駄
for (j = 0; j < n; j++) { // n個チェック
if (cs[i - (j + 1)] != cs[i + (j + 1)]) break;
}
if (n == j && cs[maxn_index] - '0' < n) maxn_index = i;
}
cs[maxn_index + (cs[maxn_index] - '0') + 1] = '\0';
if (0 < maxn_index) {
mirror = initclist(&cs[maxn_index - (cs[maxn_index] - '0')]);
} else {
mirror = (struct node *)calloc(1, sizeof(struct node));
}
free(cs);
return mirror;
}
0422デフォルトの名無しさん
2007/09/27(木) 11:12:470423デフォルトの名無しさん
2007/09/27(木) 11:20:080424デフォルトの名無しさん
2007/09/27(木) 11:22:00リストの先頭が空って、なんか気持ち悪くない?
0425デフォルトの名無しさん
2007/09/27(木) 13:34:59[2] 問題文(含コード&リンク): 四則演算を関数としてもっているプログラム。
実数と整数の両方に対応し、式と結果を表示。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限:10月1日
[5] その他の制限:scanfを使用、関数はPlus(float a,float b)。
main関数では2つの数字を入力、関数Plusを呼び出し。
考えでは↓
実数では、float c; c=a+b;
整数では、int d; d=(int)a+(int)b;
最後にprintfを使って表示します。
宜しくお願いします<(_ _)>
0426デフォルトの名無しさん
2007/09/27(木) 13:52:40#include <stdio.h>
float Plus(float,float);
int main()
{
float a,b;
printf("1つ目=>");
scanf("%f",&a);
printf("2つ目=>");
scanf("%f",&b);
printf("float:%f\nint:%d",Plus(a,b),(int)Plus((int)a,(int)b));
return 0;
}
float Plus(float a,float b)
{
return a+b;
}
C++でもいいなら関数オーバーロードを使った方がいいと思うよ
0427デフォルトの名無しさん
2007/09/27(木) 15:00:40[2] 引数で渡された文字列をファイルに出力する関数を作り、入力した文字列をファイルに出力する。
[3] 環境
[3.1]WindowsXP
[3.2]BorlandC++
[3.3]C++
#include <stdio.h>
#include <string.h>
void sdata(char str);
void main(void)
{
char str[128];
scanf("%s",str);
}
void sdata(char str)
{
FILE *fp;
fp = fopen("Return.txt","w");
fwrite(str,sizeof(str),1,fp);
}
一応自分でこんな感じかなみたいのはあるんですが…ここからよく分からないのです。
0428425
2007/09/27(木) 16:14:56四則の問題があるので、Plus()関数に
int s;
printf("1.+ 2.- 3.* 4./ =>");
scanf("%d",&s);
if(1==s){return a+b;
}else if(2==s){
return a-b;
}else if(3==s){
return a*b;
}else if(4==s){
return a/b;
}
と追加してみたら
1つ目=>4
2つ目=>2
1.+ 2.- 3.* 4./ =>4
1.+ 2.- 3.* 4./ =>3
float:8.000000
int:2
と出力されました。
1.+ 2.- 3.* 4./ =>のところを1回だけ表示するにはどうすると良いでしょうか?
0429デフォルトの名無しさん
2007/09/27(木) 16:55:26[2] 問題文(含コード&リンク):読み込んだ整数の段数を持つピラミッドを表示するプログラム
例:3
*
***
*****
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限:10月1日
[5] その他の制限:scanf,forを使用
0430デフォルトの名無しさん
2007/09/27(木) 17:04:03int main(void)
{
int i, j, n;
scanf("%d", &n);
for(i=0; i<n; i++) {
for(j=0; j<n-1-i; j++) putchar(' ');
for(j=0; j<2*i+1; j++) putchar('*');
putchar('\n');
}
return 0;
}
0431デフォルトの名無しさん
2007/09/27(木) 17:25:37>int s;
>printf("1.+ 2.- 3.* 4./ =>");
>scanf("%d",&s);
をPlus関数からmain関数に移し、Plus関数は新たに引数としてsを受け取るようにする
0432デフォルトの名無しさん
2007/09/27(木) 17:27:04#include<stdio.h>
int main(int c,int v){
if(c==1){
scanf("%d",&v);
main(v+1,v);
}
else{
int i;
if(c!=2)main(c-1,v);
for(i=0;i<v-c+3/2;i++)printf(" ");
for(i=0;i<2*c-3;i++)printf("*");
printf("\n");
}
return 0;
}
0433デフォルトの名無しさん
2007/09/27(木) 17:36:09#include <stdio.h>
int padd(int n, char c) {
if (!n) return;
putchar(c);padd(n - 1, c);
}
void pyramid(int n, int m, char c) {
if (n <= m) return;
padd(n - m - 1, ' ');
padd(2 * m + 1, c);
puts("");
pyramid(n, m + 1, c);
}
int main() {
int n;
scanf("%d", &n);
pyramid(n, 0, '*');
}
0434デフォルトの名無しさん
2007/09/27(木) 17:36:19#include <stdio.h>
#include <stdlib.h>
float calc(float,float,int);
int main()
{
int i,s;
float a,b;
char mode[]="+-*/";
printf("1つ目の数=>");scanf("%f",&a);
printf("2つ目の数=>");scanf("%f",&b);
printf("演算子\n");
for(i = 0;i < sizeof(mode)-1;i++){
printf("%d.%c\n",i+1,mode[i]);
}
printf("=>");scanf("%d",&s);
printf("%f %c %f = %f",a,mode[s-1],b,calc(a,b,s));
return 0;
}
float calc(float a,float b,int s)
{
switch(s){
case 1:return a+b;
case 2:return a-b;
case 3:return a*b;
case 4:if(b == 0){printf("0では割れない");exit(1);
}else{return a/b;}
default:printf("演算子指定が正しくない");exit(1);
}
}
0436デフォルトの名無しさん
2007/09/27(木) 20:34:230437デフォルトの名無しさん
2007/09/27(木) 23:08:36[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4982.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 9月28日18:00まで
[5] その他の制限: 特にないです
どちらか1つだけでも結構ですので、どうぞよろしくお願いします
0439デフォルトの名無しさん
2007/09/27(木) 23:29:36[2] 問題文(含コード&リンク):構造体(詳細は下記)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: (C/C++ どちらでも可)
[4] 期限: [9/30]
[5] 問題文
「本」の商品名、価格、ページ数を10冊分入力し、
10冊分の価格の昇順・降順にソートするプログラムを作成しなさい。
よろしくお願いします
0440デフォルトの名無しさん
2007/09/27(木) 23:48:59それぞれの限界値は指定しないのか?
0441デフォルトの名無しさん
2007/09/27(木) 23:51:00#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct bk{
string n;int v,p;
void r(){cin>>n>>v>>p;}
void w(){cout<<n<<" "<<v<<" "<<p<<endl;}
bool operator<(const bk&b)const{return v<b.v;}
};
int main(){
bk b[10];
for(int i=0;i<10;i++)b[i].r();
sort(b,b+10);
for(int i=0;i<10;i++)b[i].w();
return 0;
}
0442デフォルトの名無しさん
2007/09/27(木) 23:51:311つ目 改行が多いって言われたのでこっちで
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4983.c
0443デフォルトの名無しさん
2007/09/28(金) 00:14:32すいません…
商品名[10]、価格[4]、ページ数[3]を入れるのを失念しておりました…
ですので、
>>441
ありがとうございます!!
こちらのソースを元になんとか自分で考えてみます。
0444デフォルトの名無しさん
2007/09/28(金) 00:45:512つ目
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4984.txt
0445デフォルトの名無しさん
2007/09/28(金) 01:20:44http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4985.c
0446デフォルトの名無しさん
2007/09/28(金) 07:35:42----【即系サイト×優良サイト=即会い即やり!】-----------------------
優良出会い系サイトと即出会えるサイトを併用して使い、即会いライフを楽しんでいます。
これが面白いほど会える☆ 会った後は・・・
俺の場合、出会い系サイト3つで女の子と週2〜3で出会えてます。
これ以外にもお気にの女の子とは週1で会ってます。
今回は皆さんにも出会いを楽しんでもらいたいので、俺が使っている
登録後一日以内に出会えたサイトを紹介するブログ始めました。
皆も休日にエンジョイしてください!
↓↓↓
【即出会えるサイト紹介ブログ】
http://deaigets.blog97.fc2.com/
--------------------------------------------------------------------
0448デフォルトの名無しさん
2007/09/28(金) 11:20:28最終結果のみを表示するプログラムを作成する宿題なんですが、ファイルを読み込もうと
するところでなぜか止まってしまいます。原因がよくわからないので助けてください…。
Cテキスト
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4986.txt
読み込みファイル用テキスト(これじゃなくてもOK)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4987.txt
細かい指定は、
・英字の大文字小文字に関しては凝らなくていい
・データ最大数は1000
・文字列の最大長は64
・データは改行で区切られている
0449デフォルトの名無しさん
2007/09/28(金) 11:28:03そういうときは、色々な変数の値をprintfで吐き出すと良いよ
> scanf("%s,in_filename");
0450448
2007/09/28(金) 12:01:37申し訳ありませんでした……
0451デフォルトの名無しさん
2007/09/28(金) 12:50:240452デフォルトの名無しさん
2007/09/28(金) 15:00:32[2] 問題文(含コード&リンク):
/****memo.txt********/
atsusa a ts u s a
au a u
awatadashii a w a t a d a sh i i
awa a w a
/*********************/
このmemo.txt というファイルがあるとして、
このファイルを読み込み、右の「a,ts,u,s,a」という単位で
かかれてある右の列(2列目)を(atsusaを1列目、a,ts,u,s,aを2列目)
a
ts
u
s
a
と表示できるようにしなさい。
[3] 環境
[3.1] OS:LINUX
[3.3] 言語:C
[4] 期限:早いほうがいいです
[5] その他の制限:なし
【質問テンプレ】
[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):圧力P一定の下、温度変化量ΔTしたとき、1molの理想気体のガス容積の変化量ΔVを算出する関数を作成しなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:CPad for Borland C++Compiler
ver2.31
[3.3] 言語:C++
[4] 期限:2007年09月28日20時くらいまで
本当にわからなくて困っています。よろしくお願い致します。
0454 ◆vLIz8KOkPM
2007/09/28(金) 17:29:14[3] 環境
[3.1] OS: Linux [3.2] コンパイラ名とバージョン: gcc [3.3] 言語: C
[4] 期限: 9月29日(土)午後9時まで
[5] その他の制限: ポインタ、構造体、配列、関数まで習ったので、この範囲内でお願いします。
[2] 問題文(含コード&リンク):
**発展課題**について【下に、発展課題の問題文、自分の作成したプログラムをのせます】、
各口座のデータをバイナリファイルに保存する機能(口座データが変更される度にfwriteで)
各口座のデータをバイナリファイルから読み込む機能(プログラム起動時に1 回のみfreadで)を追加せよ.実行例を下に示す。
% ./kadai13
口座データ読込み(1:ファイルから2:初期値を使用)? 1
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 20000
ありがとうございました.残高は518600 円です
口座データ保存(1:ファイルへ2:保存しない)? 1
口座番号を入力してください: ← 口座番号入力に戻る
発展課題の問題については>>455
それに対する自分のプログラムは>>456
0455 ◆vLIz8KOkPM
2007/09/28(金) 17:29:46ATM(Automated Teller Machine; 現金自動預け払い機) システムを実現するプログラムを作成する.
最初に,氏名,口座番号,暗証番号,預金残高を要素とする構造体を定義し,512 人分の口座が作成可能なようにせよ.
また,初期値として次のように構造体の内容を設定せよ.
• 田中太郎の口座番号は1234 で,預金残高を1,234,560 円に設定する.
• 山田花子の口座番号は5678 で,預金残高を 987,600 円に設定する.
• 鈴木一郎の口座番号は9012 で,預金残高を 538,600 円に設定する.
• 暗証番号は口座番号に1111 を足して10000 で割った余りに設定する.
このとき引出しの機能を実現せよ。具体的には,口座番号の入力,暗証番号の入力と確認,支払額の入力,預金残高の更新をするプログラムを作成せよ.
実行例を以下に示す
% ./kadai10
口座番号を入力してください: 5000 ← 存在しない
暗証番号を入力してください: 0123
口座番号または暗証番号が間違っています.
口座番号を入力してください: 9012
暗証番号を入力してください: 5555 ← 間違っている
口座番号または暗証番号が間違っています.
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 1000000 ← 預金額より多い
預金額が不足しています.
口座番号を入力してください: 9012
暗証番号を入力してください: 0123
引出し額を入力してください: 20000
ありがとうございました.残高は518600 円です.
口座番号を入力してください: ← 始めに戻る
0456 ◆vLIz8KOkPM
2007/09/28(金) 17:35:06#include<stdio.h> #include<string.h> #define MAC 256
main(){
char save[MAC]; int account; int code; int draw; int i;
struct{
char name[MAC]; int account; int code; int balance;
}ATM[500];
strcpy(ATM[0].name,"田中太郎"); ATM[0].account=1234; ATM[0].code=(ATM[0].account+1111)%10000; ATM[0].balance=1234560;
strcpy(ATM[1].name,"山田花子"); ATM[1].account=5678; ATM[1].code=(ATM[1].account+1111)%10000; ATM[1].balance=987600;
strcpy(ATM[2].name,"鈴木一郎"); ATM[2].account=9012; ATM[2].code=(ATM[2].account+1111)%10000; ATM[2].balance=538600;
printf("あなたの口座番号を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&account);
for(i=0;i<=500;i++){ if(account==ATM[i].account) break; }
if(account!=ATM[i].account){ printf("そのような口座は存在しません.\n"); }
else{ printf("暗証番号を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&code);
for(i=0;i<=500;i++){ if(code==ATM[i].code) break; }
if(code==ATM[i].code){ printf("%s 様ですね.\n",ATM[i].name); printf("引出し金額を入力して下さい:"); fgets(save,MAC,stdin); sscanf(save,"%d",&draw);
if(draw<0){ printf("ERROR!!\n"); }
else if(draw>ATM[i].balance){ printf("金額が不足しています.\n"); }
else if(draw<=ATM[i].balance){ printf("預金残高は %d 円です.\n",ATM[i].balance-draw); }}
else if(code!=ATM[i].code){ printf("認証に失敗しました.\n"); }}
return(0);
}
0457 ◆vLIz8KOkPM
2007/09/28(金) 17:40:240458デフォルトの名無しさん
2007/09/28(金) 18:00:37[2] 問題文(含コード&リンク):文字列AB、CD、EF、GHがある。キーボードから文字を入力しこの文字列があればそれを取り出す。
全部取り出したら終了する。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: BCC5.5
[3.3] 言語:C
[4] 期限: 2007/10/1
[5] その他の制限:実行例
現在:AB、CD、EF、GH
文字を入力してください:AB
ABはありました。
現在:CD、EF、GH
文字を入力してください:TR
TRはありません。
現在:CD、EF、GH
文字を入力してください:
・
・
・
現在:GH
文字を入力してください:GH
GHはありました。
これで終了します。
0459デフォルトの名無しさん
2007/09/28(金) 18:46:37#include <string.h>
int main(void){
char *a[]={"AB","CD","EF","GH"},b[9],c[]="現在:%s",d[]="、%s",*e;int i;
while(1){
e=c;
for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
if(a[i]){
printf(e,a[i]);
e=d;
}
}
if(e==c) break;
printf("\n文字を入力してください:");
scanf(" %8[^\n]",b);
for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
if(a[i] && !strcmp(a[i],b)){
printf("%sはありました。\n",b);
a[i]=0;
goto found;
}
}
printf("%sはありません。\n",b);
found:;
}
puts("これで終了します。 ");
return 0;
}
0460デフォルトの名無しさん
2007/09/28(金) 19:02:440461デフォルトの名無しさん
2007/09/28(金) 21:50:48[2]問題文:ポインタをつかって�@変数aのアドレスを獲得する。�A変数bのアドレスを変数aのアドレスの4バイト後方におきたい。�B変数aのアドレスの4バイト後方に(a+90)の値を代入する。�C�A、�Bの結果をprintf文で出力。
[3]環境
[3.1]Windows、Visual stdio Japan2005
(注)エラーが出ると思いますが、結果は出ます。
お願いします。
0462デフォルトの名無しさん
2007/09/28(金) 21:58:400463デフォルトの名無しさん
2007/09/28(金) 22:12:58おれも片付けに参加しようかね。
0464デフォルトの名無しさん
2007/09/28(金) 22:16:590465デフォルトの名無しさん
2007/09/28(金) 22:48:52http://blogs.wankuma.com/jitta/archive/2007/09/27/98335.aspx
http://blogs.wankuma.com/jitta/archive/2007/09/28/98562.aspx
0466デフォルトの名無しさん
2007/09/28(金) 23:10:13どの程度自由度があるかわかんね.
"memo.txt"というファイル名に対して,a ts u saを表示するだけでいいの?
それとも,そのコメント風の部分も評価しなきゃいけないの?
0467デフォルトの名無しさん
2007/09/28(金) 23:28:39俺も極力使うなって言われたけど中にはそっちの方が分かりやすいって人もいるんじゃない?
0468デフォルトの名無しさん
2007/09/28(金) 23:35:31この例だと分かりにくいぞw
判定ループは関数化して、戻り値で ありました/ありません 表示だろ、普通。
0469デフォルトの名無しさん
2007/09/28(金) 23:58:10深い考えがあってgoto使ってるようには見えないけどな
0470デフォルトの名無しさん
2007/09/29(土) 00:05:250471デフォルトの名無しさん
2007/09/29(土) 00:18:17横槍で良く分かってないけど、コレで良いか?
for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
if(a[i] && !strcmp(a[i],b)){
printf("%sはありました。\n",b);
a[i]=0;
break;
}
}
if(i==sizeof(a)/sizeof(a[0])) printf("%sはありません。\n",b);
0472デフォルトの名無しさん
2007/09/29(土) 00:22:350473デフォルトの名無しさん
2007/09/29(土) 00:37:36char *format;
・・・
format = "%sはありません。\n";
for(i=0;i<sizeof(a)/sizeof(a[0]);++i){
if(a[i] && !strcmp(a[i],b)){
a[i]=0;
format = "%sはありました。\n";
break;
}
}
printf(format,b);
0474452
2007/09/29(土) 00:39:29atsusa a ts u s a
au a u
awatadashii a w a t a d a shi i
awa a w a
/*********************/
ちょっといろいろ考えてたんだけど。
このファイルを読み込み、右の「a,ts,u,s,a」という単位で
かかれてある右の列(2列目)を(atsusaを1列目、a,ts,u,s,aを2列目)
a
ts
u
s
a
という風な形で、ファイル"output1.txt"と出力するようにしなさい。
ってのがいいかな。
”atsusa a ts u s a”のスペースがくるたびに改行して配列にいれて、その1つ目を無視して2つ目から
配列にいれて出力すればいんだけどどう書けばいいのかわからなくて。
0475デフォルトの名無しさん
2007/09/29(土) 00:48:160476デフォルトの名無しさん
2007/09/29(土) 01:01:46型はintの整数です。
0477デフォルトの名無しさん
2007/09/29(土) 01:05:300478デフォルトの名無しさん
2007/09/29(土) 01:17:52ファイルのフォーマットが今ひとつ分かんないので、チョー手抜き。
1行は254文字以下、行末にスペースが無い、単語間のスペースが1つという条件。
#include <stdio.h>
#include <string.h>
int main()
{
FILE *ifp, *ofp;
char line[256];
char *pos;
if((ifp = fopen("memo.txt", "r")) == NULL) { return 1; }
if((ofp = fopen("output1.txt", "w")) == NULL){ fclose(ifp); return 1; }
while(fgets(line, 256, ifp) != NULL){
if((pos = strchr(line, ' ')) != NULL){
for(pos++;*pos != '\0';pos++){
if(*pos == ' '){ fprintf(ofp, "\n"); }
else{ fprintf(ofp, "%c", *pos); }
}
}
}
fclose(ifp); fclose(ofp);
return 0;
}
0479デフォルトの名無しさん
2007/09/29(土) 03:43:34[2] 問題文(含コード&リンク):
ファイルにN×Nの整数行列が2つ書き込まれている。この2つの行列積を求め、
解を違うファイルに書き込みなさい。
ただし、2つのN×N整数行列のデータは
3
1 2 3
5 6 7
1 2 3
3 2 1
3 4 5
6 7 8
のように書き込まれているとする。
(先頭の値で次元Nを指定している。)
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C言語)
[4] 期限: 07年9月30日まで
[5] その他の制限:入力ファイル、出力ファイルはともに任意のファイル名を
指定できるようにする。
「257」の方のプログラムが見た感じ似ていたので、挑戦してみたのですが
やはり無理でした…
0480459
2007/09/29(土) 04:58:00とりあえず>>458はgotoまずかったらテキトーに直しといて。
1番いいのは>>468だけど、>>471か>>473に置き換えてもいいんじゃないかな。
講師がソースろくすっぽ見ないってんなら関係ないけど。
0481デフォルトの名無しさん
2007/09/29(土) 05:17:34型が int なら
int a, b;
int b, a;
のいずれか(環境依存)で a の4バイト後ろに b が配置されるけど題意の様に
『a のアドレスを得てから』は無理だな
出題者は &b = (&a)++; が可能だとでも思ってるのかな
0482デフォルトの名無しさん
2007/09/29(土) 05:39:05strtok() 使えば簡単じゃね?禁止されてるなら
char buf[100]; // に "atsusa a ts u s a\n" が入ってると考えてね
char *top, *ptr;
top = strchr( buf, ' ' );
if( top ) {
top++;
while( 1 ) {
ptr = strchr( top, ' ' );
if( ptr ) *ptr = '\n';
else break;
}
printf( "%s", top );
}
で出力できると思うけど、区切りの ' ' が複数連続すると余計な改行が発生するから30点くらい?
0483デフォルトの名無しさん
2007/09/29(土) 07:11:26>>316 に追加で
int main(void){
FILE *fp_in, *fp_out;
int N=0, column, row;
matrix_t *a, *b, *c;
fp_in=fopen("ファイル", "r");
if(fp_in==NULL) return 1;
fp_out=fopen("違うファイル", "w");
if(fp_out==NULL){
fclose(fp_in);
return 1;
}
fscanf(fp_in, "%d", &N);
a=matrix_alloc(N, N);
b=matrix_alloc(N, N);
for(column=0;column<N;column++)
for(row=0;row<N;row++) fscanf(fp_in, "%lf", &a->data[column][row]);
for(column=0;column<N;column++)
for(row=0;row<N;row++) fscanf(fp_in, "%lf", &b->data[column][row]);
c=matrix_mul(a, b);
for(column=0;column<N;column++){
for(row=0;row<N;row++) fprintf(fp_out, " %.0f", c->data[column][row]);
fprintf(fp_out, "\n");
}
fclose(fp_in);
fclose(fp_out);
return 0;
}
0484デフォルトの名無しさん
2007/09/29(土) 07:39:15#include<stdio.h>
int main(void)
{
char buf[1000];
FILE *fp=stdin;
int is_top=1;
while(1)
{
if(fscanf(fp, "%[^ \t\n]", buf)==1){
if(!is_top) printf("%s\n", buf);
is_top=0;
}
else if(fscanf(fp, "%[ \t]", buf)==1)
{
}
else if(fscanf(fp, "%1[\n]", buf)==1)
{
is_top=1;
}
else
{
break;
}
}
return 0;
}
0485デフォルトの名無しさん
2007/09/29(土) 11:44:390486デフォルトの名無しさん
2007/09/29(土) 11:47:41double dv(double p,double dt){return 8.314/p*dt;}
0487デフォルトの名無しさん
2007/09/29(土) 12:05:27456の動きが455の表示の例と違うんだけど、それは無視して良いんかな?
0488479
2007/09/29(土) 12:19:43matrix_t *a, *b, *c; 部分でエラーが出てしまいます。
あと、ファイル指定は>>257の方のような、キーボードから行える形にしてもらいたいのですが・・・
よろしくお願いします。
0489デフォルトの名無しさん
2007/09/29(土) 12:31:35>>483 をよく読んでから
>>257 の必要な部分をコピペでおk
あと、変数名はどちらか合わせないといけない
0490479
2007/09/29(土) 14:50:00すみません。そのプログラムを作成してもらえないでしょうか?
力不足でプログラムを応用して完成することが無理なんです・・・
0491デフォルトの名無しさん
2007/09/29(土) 14:51:560492デフォルトの名無しさん
2007/09/29(土) 14:52:51[2] 問題文(含コード&リンク): 下記
[3] 環境
[3.1] OS: (Windows)
[3.2]
[3.3] 言語: (C)
[4]9/29
かなりの初心者でさっぱりです。ヨロシク願いします。
以下のプログラムは、入力された10個の数値を引き算し、その結果を表示するプログラムです。
9〜11行目を別の関数(関数名はFuncDev)とし、修正しなさい。
ただし、グローバル変数は使わないこと。また、FuncDev内のローカル変数名は任意とする。
FuncDev関数は以下の定義とする。
int FuncDEv(void)
FuncDev関数の戻り値は、画面入力されたint型データとする。
#include<stdio.h>
void main(void);
void main(void)
{
int n1,n2;
int nt;
nt=0;
for(n1=0;n1<10;n1++){
printf("0-9の数値を入力:");
scanf("%d,&n2");
nt-=n2;
}
printf("結果%dです"nt);
}
0493デフォルトの名無しさん
2007/09/29(土) 15:03:33int FuncDev(void)
{
int n2;
printf("0-9の数値を入力:");
scanf("%d", &n2);
return n2;
}
void main(void)
{
int n1,n2;
int nt;
nt=0;
for(n1=0;n1<10;n1++){
n2= FuncDev();
nt-=n2;
}
printf("結果%dです", nt);
}
0494 ◆vLIz8KOkPM
2007/09/29(土) 16:11:51456のプログラムで大丈夫です。よろしくお願いしますm(__)m
0495474
2007/09/29(土) 17:37:56ありがとうございました。
ちょっと作り替えて表示できました。
表示できたこの
a
ts
u
s
a
a
u
a
w
...
とできたのですが、これを
a a a
ts u w
u a
s t
a a
d
a
と言う風にchar型の二次元配列に格納したいんですけど。
このあとに列単位で違う関数に送りたいんですけど可能ですかね。
0496デフォルトの名無しさん
2007/09/29(土) 17:40:46http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4991.txt
0497デフォルトの名無しさん
2007/09/29(土) 17:45:48>エラーが出ると思いますが、結果は出ます。
こういうこと?
#include <stdio.h>
int main(){
int a , *b;
printf("a?>");
scanf("%d" , &a);
b = &a + 1;
printf("Address:a=>%d , b=>%d\n" , &a , b);
*b = a + 90;
printf("Value:a=>%d , b=>%d" , a , *b);
return 0;
}
まあ、bのアドレスがaの4バイト先にあるわけじゃないけど、出題者はこういうことを言いたいんじゃね?
エラー出ないけどw
0498デフォルトの名無しさん
2007/09/29(土) 19:23:14#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[]){
FILE *fp;
int row = 0, col = 0, max_col = 0, i, j;
char buf[128], *p, str[128][128][3] = {0};
if(argc < 2 || (fp = fopen(argv[1], "r")) == NULL) return 0;
while(fgets(buf, sizeof(buf), fp) != NULL){
p = strtok(buf, " \n");
while((p = strtok(NULL, " \n")) != NULL) strcpy(str[row][col++], p);
row++, col = 0;
}
fclose(fp);
for(i = 0; i < row; i++){
for(j = 0; str[i][j][0] != '\0'; j++) ;
if(j > max_col) max_col = j;
}
for(j = 0; j < max_col; j++){
for(i = 0; i < row; i++)
if(str[i][j][0] != '\0') printf("%2s ", str[i][j]);
else printf("%*c", 3, 32);
printf("\n");
}
return 0;
}
0499 ◆vLIz8KOkPM
2007/09/30(日) 01:55:24お返事遅れてすみません…
お陰様で助かりました。大変ありがとうございましたm(__)m
0500452
2007/09/30(日) 02:29:03作ってくれたのはありがたいんですけど、少々考え直しまして。
めんどくさいけど大量にファイルを出力してから、それを入力したほうが
作ってあるプログラムにあわせやすいので。
そこでちょっとまた疑問がでまして。
a
ts
u
s
a
a
w
a
a
u
というファイル(例えばalpa_file.txt)があるとして、この何もかかれていない
行にきたら、それまでの文字をファイル出力して、また次の行にいき、すすんでいって、何もかかれてない行にきたら
また違うファイルに出力みたいにしたいんですけど。
0501デフォルトの名無しさん
2007/09/30(日) 02:46:25長くなったのでロダの方へ上げました
どうか皆様の知恵をお願いします
0502デフォルトの名無しさん
2007/09/30(日) 07:16:59>>1嫁。
【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
<略>
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
ということでお前はもう質問禁止な方向に。
0503デフォルトの名無しさん
2007/09/30(日) 07:34:39>>1嫁。
> 気に入らない質問やその他や発言はスルーの方向で。
ということでお前はもう回答禁止な方向に。
0504デフォルトの名無しさん
2007/09/30(日) 08:46:530505デフォルトの名無しさん
2007/09/30(日) 14:39:56>>1嫁。
> 気に入らない質問やその他や発言はスルーの方向で。
ということでお前はもう回答禁止な方向に。
>>504
こうですかわかりません><
0506デフォルトの名無しさん
2007/09/30(日) 15:41:30[2] 問題文(含コード&リンク):口頭で説明されたので問題文はありません。
入力した2文字のアルファベット4組(たとえば ae、bd、ac、ab)を
アルファベット順(上の例だったら ab、ac、ae、bd)に表示せよ
また数字でも同じことをせよ(3、4、2、1→1、2、3、4)
あとリスト構造を使えとか言ってました
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:学校のはよくわからんです
[3.3] 言語:C
[4] 期限: 2007年10月3日まで
[5] その他の制限:とくにないです
よろしくおねがいします
0507デフォルトの名無しさん
2007/09/30(日) 15:50:16「リスト構造を使え」というのは、その問題に関しては何か不自然。
もういちど問題を確認することをお勧めする。
0508デフォルトの名無しさん
2007/09/30(日) 16:01:020509デフォルトの名無しさん
2007/09/30(日) 16:11:52要素数がたった4つに固定されていたら、
リストを使う意味は全く無いと思うけど。
俺は、要素数4つというのは単に説明の例で、
本当はもっと多いか不明のどちらかだと予想してる。
0510デフォルトの名無しさん
2007/09/30(日) 17:03:59すみません、聞いてみたら4つで固定とは言ってなかったとです。
0511デフォルトの名無しさん
2007/09/30(日) 17:55:31始まりの部分は、
#include<stdio.h>
int main(void)
{
でお願いします
携帯からですいません
0512デフォルトの名無しさん
2007/09/30(日) 18:04:41知るか(笑)
0513デフォルトの名無しさん
2007/09/30(日) 18:45:520514デフォルトの名無しさん
2007/09/30(日) 18:45:59入力はキーボードから。EOF (CTRL-D など)で入力終了。
エラーチェックは特にしていない。挿入ソート。
二文字文字列バージョン:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4994.c
整数値バージョン:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4995.c
0515デフォルトの名無しさん
2007/09/30(日) 18:54:29P^-1 は手で計算してよろしい?それとも
プログラム上で計算しないとダメ?
あと #include <stdio.h> だけど C++ でいいの?
0516デフォルトの名無しさん
2007/09/30(日) 19:43:45面白いな
0517デフォルトの名無しさん
2007/09/30(日) 20:32:33#include<stdio.h>
int main(void){
int i, j, n, num[9+1];
while(1)
{
printf("行数(1-9):");
scanf("%d", &n);
if(1<=n && n<=9) break;
printf("\nエラー\n");
}
num[0]=num[1]=1;
for(i=0;i<n;i++)
{
num[i+1]=0;
for(j=i;j>=0;j--) num[j+1]+=num[j];
for(j=0;j<=i+1;j++) printf(" %d", num[j]);
printf("\n");
}
return 0;
}
0518デフォルトの名無しさん
2007/09/30(日) 20:38:28#include<iostream>
int main(void){
int i, j, n, num[10];
while(1){
std::cout << "行数(1-9):";
std::cin >> n;
if(1<=n && n<=9) break;
std::cout << std::endl << "エラー" << std::endl;
}
num[0]=num[1]=1;
for(i=0;i<n;i++){
num[i+1]=0;
for(j=i;j>=0;j--) num[j+1]+=num[j];
for(j=0;j<=i+1;j++) std::cout << num[j] << " ";
std::cout << std::endl;
}
return 0;
}
0519デフォルトの名無しさん
2007/09/30(日) 21:42:56日本語でおk
少し長い文章を書くと内容がめちゃくちゃになるようなので
何をしたいのか最初から箇条書きで書き直し
0520デフォルトの名無しさん
2007/09/30(日) 21:48:50自分で計算してOKです
そして言語ですが、確認したらCでもC++でも可能との事
問題文のソース例はCの場合でした
0521デフォルトの名無しさん
2007/09/30(日) 21:49:34>>517
0522デフォルトの名無しさん
2007/09/30(日) 21:57:280523500
2007/09/30(日) 22:01:09このファイルをfgetsで読み込んで、文字が書かれてない行にきたら
それまで読み込んだ文字を違うファイル(output_file1.txt)に出力します。
出力したらまた元のファイルの読み込みを始めます。そして文字が書かれてない行に
きたら、また違う別のファイル(output_file2.txt)に出力します。
読み込むファイルfile1.txtが
a
ts
u
s
a
a
w
a
a
u
とすると
出力するファイルoutput_file1.txtに
a
ts
u
s
a
また次の出力するファイルoutput_file2.txtに
w
a
と出力できるようにしたいということです。すみません説明できなくて
0524500
2007/09/30(日) 22:02:17>w
>a
でなくて
a
w
a
です
0525デフォルトの名無しさん
2007/09/30(日) 22:25:40#include <stdio.h>
int main(void){
char buff[256];int i=1;
FILE *fin=fopen("file1.txt","r"),*fout=fopen("output_file1.txt","w");
while(fgets(buff,sizeof(buff)/sizeof(buff[0]),fin)){
if(buff[0]=='\n'){
fclose(fout);
sprintf(buff,"output_file%d.txt",++i);
fout=fopen(buff,"w");
}else{
fputs(buff,fout);
}
}
fclose(fout);fclose(fin);
return 0;
}
0526デフォルトの名無しさん
2007/09/30(日) 22:29:03重要なのは
どんな入力に対して
どんな出力が必要か
を明記する事であって、ころころ変わるあなたの考える処理方法ではない
仮に、読み上げソフトか何かに与えて、同時発音させるのが目的ならば
あなたの考えはあと何回も変わるだろうし…
もう少し、何の為に何をどうしたいのかを整理して出直してきて下さい
[user]$ awk -f a.awk < memo.txt
#!/bin/awk -f
BEGIN{count=1}
!/^$/ && NF>1{
filename=sprintf("output_file%d.txt", count);
for(i=2;i<=NF;i++) print $i>> filename
count=count+1;
}
0527デフォルトの名無しさん
2007/09/30(日) 23:02:450528デフォルトの名無しさん
2007/09/30(日) 23:06:490529500
2007/09/30(日) 23:14:39ありがとさん
0530デフォルトの名無しさん
2007/09/30(日) 23:16:12[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4998.txt
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限:10月1日午前1時まで
[5] その他の制限:C言語を習い始めてまだ3ヶ月程度です
よろしくおねがいします
0531デフォルトの名無しさん
2007/09/30(日) 23:23:48課題1
#include <stdio.h>
int main( void )
{
int year;
int check;
scanf( "%d", &year );
if ( year % 400 == 0 ) {
check = 1;
}
else if ( year % 100 == 0 ) {
check = 0;
}
else if ( year % 4 == 0 ) {
check = 1;
}
else {
check = 0;
}
if ( check == 0 ) {
printf( "閏年ではありません" );
}
else {
printf( "閏年です" );
}
return 0;
}
0532デフォルトの名無しさん
2007/09/30(日) 23:33:35課題2(むりやりswitch使った悪い例)
#include <stdio.h>
int main( void ){
const char * const tv_name[] = {
"HBC", "NHK総合",
"STV", "NHK教育",
"TVH", "UHB",
"HTB",
};
int channel;
scanf( "%d", &channel );
switch ( channel ) {
case 1: channel = 0; break;
case 3: channel = 1; break;
case 5: channel = 2; break;
case 12: channel = 3; break;
case 17: channel = 4; break;
case 27: channel = 5; break;
case 35: channel = 6; break;
default: channel = -1; break;
}
if ( channel != -1 ) {
printf ( "%s", tv_name[ channel ] );
}
return 0;
}
0533デフォルトの名無しさん
2007/09/30(日) 23:35:40#include <stdio.h>
int main(void){
int input;
char *channel=NULL;
scanf("%d",&input);
switch (input){
case 1:channel="HBC";break;
case 5:channel="STV";break;
case 12:channel="NHK教育";break;
case 17:channel="TVH";break;
case 27:channel="UHB";break;
case 35:channel="HTB";break;
default:channel="砂嵐";break;
}
printf("%s\n",channel);
return 0;
}
0534デフォルトの名無しさん
2007/09/30(日) 23:39:37int main(void)
{
int a;
printf("西暦を入力してください。");
scanf("%d",&a);
if((a % 4 == 0 && a % 100 != 0) || a % 400 == 0)
printf("%d年は閏年です。\n ",a);
else
printf("%d年は閏年じゃありません。\n",a);
return(0);
}
0535 ◆AsDEGV.0To
2007/10/01(月) 00:02:45[2] 問題文(含コード&リンク):
年月日(YYYY MM DD)と10個の整数値をキーボードから入力し、それにの値を
バイナリファイルに保存するプログラムを作成すること。それぞれの値の形は、
年(short),月(short),日(short),入力した整数値(int)とすること。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限:2007年10月01日01:10まで
[5] その他の制限:ポインタ・ファイル入出力迄はやっています。
宜しくお願いします。
0536デフォルトの名無しさん
2007/10/01(月) 00:14:460538 ◆4Jr51i3qWE
2007/10/01(月) 00:21:27バイナリと指定されています
0539デフォルトの名無しさん
2007/10/01(月) 00:26:59#include<stdio.h>
int main(void)
{
short year, month, day;
int i, value[10], value_num=sizeof(value)/sizeof(value[0]);
FILE *fp;
printf("年:");
scanf("%hd", &year);
printf("月:");
scanf("%hd", &month);
printf("日:");
scanf("%hd", &day);
for(i=0;i<value_num;i++)
{
printf("%2d番目の数値入力:", i+1);
scanf("%d", &value[i]);
}
fp=fopen("binary.dat", "wb");
if(fp==NULL) return 1;
fwrite(&year, sizeof(year), 1, fp);
fwrite(&month, sizeof(month), 1, fp);
fwrite(&day, sizeof(day), 1, fp);
fwrite(value, sizeof(value[0]), value_num, fp);
fclose(fp);
return 0;
}
0540デフォルトの名無しさん
2007/10/01(月) 00:29:37チョン、さっさと死ねや
0541 ◆4Jr51i3qWE
2007/10/01(月) 00:30:38有難うございました。
0542デフォルトの名無しさん
2007/10/01(月) 00:32:55チョン、さっさと死ねや
0543デフォルトの名無しさん
2007/10/01(月) 00:33:43チョン、さっさと死ねや
0544デフォルトの名無しさん
2007/10/01(月) 00:34:180545 ◆4Jr51i3qWE
2007/10/01(月) 00:56:01[1] 授業単元:コンピュータとプログラミング
[2] 問題文(含コード&リンク):
年月日(YYYY MM DD)と10個の整数値をキーボードから入力し、それにの値を
バイナリファイルに保存するプログラムを作成すること。それぞれの値の形は、
年(short),月(short),日(short),入力した整数値(int)とすること。
上記の問題で作成したファイルを読み込んで、内容をディスプレイに順番に表示するプログラムを作成する事。
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限:2007年10月01日01:55まで
[5] その他の制限:ポインタ・ファイル入出力迄はやっています。
連続になりますが、お手数掛けます。
0546デフォルトの名無しさん
2007/10/01(月) 01:01:45#include<stdio.h>
int main(void)
{
short year, month, day;
int i, value[10], value_num=sizeof(value)/sizeof(value[0]);
FILE *fp;
fp=fopen("binary.dat", "rb");
if(fp==NULL) return 1;
fread(&year, sizeof(year), 1, fp);
fread(&month, sizeof(month), 1, fp);
fread(&day, sizeof(day), 1, fp);
fread(value, sizeof(value[0]), value_num, fp);
fclose(fp);
printf("%d %d %d\n", year, month, day);
for(i=0;i<value_num;i++)
{
printf("%2d番目の数値:%d\n", i+1, value[i]);
}
return 0;
}
0547 ◆4Jr51i3qWE
2007/10/01(月) 01:04:480548デフォルトの名無しさん
2007/10/01(月) 02:05:28[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4999.txt
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月1日23:00まで
[5] その他の制限: よろしくお願いします
0549デフォルトの名無しさん
2007/10/01(月) 02:28:59キリ番げとw
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5000.txt
参考にしろってプログラムがひどすぎる。
減算、除算のところに副作用があるから修正したいならしといて。
0550デフォルトの名無しさん
2007/10/01(月) 05:51:27http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4996.c
0551デフォルトの名無しさん
2007/10/01(月) 10:23:57問題文(含コード&リンク):
2000分を時間に換算するプログラムを作成しなさい
int min=2000;
実行画面
33時間20分です
0552デフォルトの名無しさん
2007/10/01(月) 10:34:12テンプレ書けハゲ
0553デフォルトの名無しさん
2007/10/01(月) 10:37:25#include<stdio.h>
int main(void){
int min=2000;
printf("%d時間%d分です",min==2000?33:0,min==2000?20:0);
return0;
}
0554デフォルトの名無しさん
2007/10/01(月) 11:03:21[2] 問題文:下記コメント
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ名とバージョン:BCC5.5
[3.3] 言語: C
[4] 期限:特に無し
[5] その他の制限:くだらない問題ですみません
/*任意の数(ただし32767個まで)のdouble型を入力でき、それらの値を入力の
たびにディスクファイルに書き込むプログラムを作成してください。この
ファイルの名前はvaluesとします。また、入力された値の個数を監視し、それを
countという名前のファイルに書き込むものとする*/
0555デフォルトの名無しさん
2007/10/01(月) 11:04:57{
FILE *fp1,*fp2;
int count=0;
double value;
char str[20];
if((fp1=fopen("values","wb"))==NULL){
printf("ファイルが開けません\n");
exit(1);}
if((fp2=fopen("count","wb"))==NULL){
printf("ファイルが開けません\n");
exit(1);}
do{
if((gets(str))==0){
printf("エラーが発生しました\n");
exit(1);}
if((value=atof(str))==0.0)break;
if(fwrite(&value,sizeof value,1,fp1)!=1){
printf("書き込みエラー\n");
exit(1);}
count++;
}while(count<32767);
if(fwrite(&count,sizeof count,1,fp2)!=1){
printf("書き込みエラー\n");
exit(1);}
fclose(fp1);
fclose(fp2);}
0556デフォルトの名無しさん
2007/10/01(月) 11:06:16正常にファイルが出来ません。
0557デフォルトの名無しさん
2007/10/01(月) 11:12:40[2] 問題文(含コード&リンク):
[3] 環境
OS: WindowsL
コンパイラ名とバージョン: 言語:C
問題:台形の面積を求めるプログラムを作成しなさい
int a = 3;
int b = 4;
int h = 5;
実行画面
面積 = 17.50
0558557のスレ主です
2007/10/01(月) 11:16:21下辺 bは4
高さ hは5です
0559デフォルトの名無しさん
2007/10/01(月) 11:21:47[2] 問題文(含コード&リンク):休み期間中に108問ある問題を終らせるには、毎日平均何問解けばよいか計算するプログラムを作成しなさい
int day = 29;
実行画面
3問:8日
4問:21日
0560デフォルトの名無しさん
2007/10/01(月) 11:55:04三つも問題くれて有難う
0561デフォルトの名無しさん
2007/10/01(月) 11:57:19#include<stdio.h>
int main(){
int a=3, b=4, h=5;
printf("面積=%lf",a==3&&b==4&&h==5?17.50:0);
return 0;
}
0562デフォルトの名無しさん
2007/10/01(月) 12:03:26[2] 問題文(含コード&リンク): 下記のソースをカプセル化に。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: VC
[3.3] 言語: C++
0563デフォルトの名無しさん
2007/10/01(月) 12:09:22>>486さん解答ありがとうございます。
質問なんですがこれいがいに#includeとか他に付け足す文字ってありますか…??
0564デフォルトの名無しさん
2007/10/01(月) 12:33:15ないから書いてないのだろう
0565デフォルトの名無しさん
2007/10/01(月) 12:35:04>486じゃないが、その課題で作成するのは関数だけなんだろ。
他につけたしちゃ拙いじゃないか。
0566 ◆vLIz8KOkPM
2007/10/01(月) 13:21:31>>454の問題に対して、>>496の解答をいただいたのですが、
以下のエラー、バグがでます・・・
直していただけないでしょうか?お願いします
% gcc -o k13 k13.c
k13.c: 関数 `main' 内:
k13.c:89:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:91:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:92:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:93:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
k13.c:94:
警告: 互換性のないポインタ型からの引数 1 個の `printf' を渡します
% ./k13
あなたの口座番号を入力して下さい:9012
暗証番号を入力して下さい:0123
鈴木一郎 様ですね.
引出し金額を入力して下さい:20000
預金残高は 518600 円です.
$��$��$��$��$��$��$
��$��$��$��$��$��$��
あなたの口座番号を入力して下さい:^[[A^[[A
中断
%
0567デフォルトの名無しさん
2007/10/01(月) 13:41:420568 ◆vLIz8KOkPM
2007/10/01(月) 14:18:42解答>>496
あと、
口座データの読み込み(1:ファイルから 2:初期値を使用)? :
口座データの保存(1:ファイルへ 2:保存しない)? :
この二つの入力が出来ないプログラムになっているのですが、どうすれば出来るようになりますか?
0569kiarano
2007/10/01(月) 14:20:00[2] 問題文(含コード&リンク): 次の関数が何をするプログラムか具体的な使い方を示して答えてください。
void q(int *a,int n){
int i,j;
int tmp;
for(i=1;i<n;i++){
for(j=i;j>0 && a[j-1]>a[j];j--){
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}
}
}
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語:C言語
[4] 期限: 2007年10月3日まで
0570デフォルトの名無しさん
2007/10/01(月) 14:24:56コンパイルできません
0571デフォルトの名無しさん
2007/10/01(月) 14:29:24[2] 問題文(含コード&リンク): 下にあり
[3] 環境
[3.1] OS: (Windows
[3.2] コンパイラ名とバージョン: cc
[3.3] 言語: C
[4] 期限: できるだけ早めに
[5] その他の制限: 特になし
組み合わせ(nCr)
コンビネーションを計算するcomb(n,r)を作成せよ
どうやるんですかね?
0572デフォルトの名無しさん
2007/10/01(月) 14:29:29ソートする関数
具体的な使い方
void q(int *a,int n){
int i,j,tmp;
for(i=1;i<n;i++){
for(j=i;j>0 && a[j-1]>a[j];j--){
tmp=a[j];
a[j]=a[j-1];
a[j-1]=tmp;
}}}
void main(){
int a[2]={0,1};
printf("%d %d\n",a[0],a[1]);
q(a,2);
printf("%d %d\n",a[0],a[1]);
}
0573デフォルトの名無しさん
2007/10/01(月) 14:29:33勘だと昇順ソート
0574デフォルトの名無しさん
2007/10/01(月) 14:31:36処理の内容はバボゥソート。
int a = {789, 32, 1, 66, 93, 892, 8475, 6, 29, 9};
q(a, sizeof(a) / sizeof(*a));
{
int end = a + sizeof(a) / sizeof(*a);
while(a != end) {
printf("%d\n", *a++);
}
}
って実際に動かしてみりゃわかるんじゃない?
0575デフォルトの名無しさん
2007/10/01(月) 14:32:370576デフォルトの名無しさん
2007/10/01(月) 14:38:33>この二つの入力が出来ないプログラムになっているのですが、どうすれば出来るようになりますか?
そういうロジックを書き足せば。
>>570
わざわざ途中の非表示文字までコピペせんでも。
>>569
その関数を呼ぶロジックを書けって事?
0577デフォルトの名無しさん
2007/10/01(月) 14:55:58#include<stdlib.h>
int comb(int n,int r){
if(n==0||r==0)return 1;
switch(rand()%3){
case 0:return n*comb(n-1,r-1)/r;
case 1:return (n>r?comb(n-1,r):0)+comb(n-1,r-1);
case 2:{int s=0;for(;n>=r;n--)s+=comb(n-1,r-1);return s;}
default:return 0;
}
}
0578デフォルトの名無しさん
2007/10/01(月) 15:01:49[2] 問題文(含コード&リンク): おもしろいプログラムを作成し、提出せよ。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 10/2 14時まで
[5] その他の制限: 今までif,for,while,switchくらいしかやってませんが、特に制限といったものはないとのことです。
システム的におもしろいのではなくギャグ系のおもしろいです。
自分ではどうもおもしろいプログラムを作成できません、力をかしてください。
お願いします。
0579デフォルトの名無しさん
2007/10/01(月) 15:15:27そんな曖昧な課題で明日の14時までって、今まで何しとったん?
0580578
2007/10/01(月) 15:25:43先送りばかりして他の課題等に逃げてました。
僕が悪いんですが、どうか力をかしてください。
0581デフォルトの名無しさん
2007/10/01(月) 15:43:227行プログラミングスレから拾ってきて,適当に識別子を変えればいいんでね?
0582デフォルトの名無しさん
2007/10/01(月) 15:51:18渾身のギャグを考えて書き込めば?
誰かプログラムにしてくれるだろきっと
0583578
2007/10/01(月) 15:55:26見てきましたが、言語が違うのか僕には何が書いてあるのかさっぱりでした。
まだはじめて間もないので・・・・・・力がなくてすいません。
0584578
2007/10/01(月) 15:59:26どちらかというとプログラムできないというよりおもしろい物が思いつかないんです。
他の普通の課題は終わらせることができたんですけど
0586デフォルトの名無しさん
2007/10/01(月) 16:09:51#include<stdio.h>
#include<string.h>
int main(void){
const char *ptr, scenario[]={
"昨日、近所の $place 行ったんです。 $place 。 $lf "
"そしたらなんか人がめちゃくちゃいっぱいで座れないんです。 $lf "
"で、よく見たらなんか垂れ幕下がってて、 $event 、とか書いてあるんです。 $lf "
"もうね、アホかと。馬鹿かと。 $lf "
"お前らな、 $event 如きで普段来てない $place に来てんじゃねーよ、ボケが。 $lf "
" $event だよ、 $event 。 $lf "
"なんか親子連れとかもいるし。一家4人で $place か。おめでてーな。 $lf "
"よーしパパ $talk 、とか言ってるの。もう見てらんない。 $lf "
};
char *keyword[]={"$place", "$event", "$talk", "$lf"};
char *variant[]={"大学", "期末試験", "満点とるぞー", "\n"};
char buf[100];
int i, n;
ptr=scenario;
while(sscanf(ptr, "%s%n", buf, &n)>=1){
ptr+=n;
for(i=0;i<4;i++){
if(strcmp(buf, keyword[i])==0) break;
}
if(i<4) printf("%s", variant[i]);
else printf("%s", buf);
}
return 0;
}
0587デフォルトの名無しさん
2007/10/01(月) 16:12:44他人を騙るな。
0588578
2007/10/01(月) 16:17:02僕は後半組なんですが、前半組はジャンケンを数回繰り返すプログラムが好評がよかったようです。
なぜか教授側のPCが不調で口頭で伝えられただけなので詳しくはわかりません。すいません。
でも、例にあげられたのは簡単な文章と選択肢がありそれによりボケがあったりツッコミがあったりするプログラムでした。
ロジックの意味がうまく把握できていないんですが、これでいいでしょうか?
0589デフォルトの名無しさん
2007/10/01(月) 16:20:12○ 好評だった
0590578
2007/10/01(月) 16:22:06頭悪くてすみません。
今後注意します。
0591578
2007/10/01(月) 16:27:31ちゃんと表示されました。
ありがとうございます。
0592デフォルトの名無しさん
2007/10/01(月) 16:53:50>>568です。
>>576
そのロジックがわからないんで、教えていただけないでしょうか?
0593デフォルトの名無しさん
2007/10/01(月) 17:00:10[2] 問題文(含コード&リンク):次のads-01-hw.cppを完成させよ
seiseki.txt の中身は10人の学生の名前、数学と生物学の成績
出力は画面出力ではなく、ファイルに出力せよ。
関数 heikin は各学生の数学と生物学の成績の平均を求める。
seiseki.txt:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5003.txt
ads-01-hw.cpp:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5002.txt
出力結果:http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5004.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual Studio .NET 2003
[3.3] 言語:C++
[4] 期限: 2007年10月3日10:00まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
関数
ポインタとアドレス
forループ
構造体
ファイルI/O
よろしくおねがいします。
0594デフォルトの名無しさん
2007/10/01(月) 17:04:48>そのロジックがわからないんで、教えていただけないでしょうか?
いやです。
0595デフォルトの名無しさん
2007/10/01(月) 18:16:31http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5005.txt
0596 ◆vLIz8KOkPM
2007/10/01(月) 20:36:460597デフォルトの名無しさん
2007/10/01(月) 20:44:22#include<stdio.h>
int main(int argc, char *argv[])
{
int day=29, question=108;
if(argc>=2) sscanf(argv[1], "%d", &day);
if(argc>=3) sscanf(argv[2], "%d", &question);
printf("%d問:%d日\n", question/day, day-(question%day));
if(question%day) printf("%d問:%d日\n", question/day+1, question%day);
return 0;
}
0598デフォルトの名無しさん
2007/10/01(月) 20:48:02異常なファイルの内容kwsk
0599デフォルトの名無しさん
2007/10/01(月) 21:02:38ネタを書くか、もしくは探して URL を…
#include<stdio.h>
int main(int argc, char *argv[]){
char *message[]={
"A「隣の空き地に囲いができたってね?」\nB「へー」\n",
"A : Do you know that fence was completed in the next vacant lot?\nB : Hey,really?!\n"
};
int choice=-1;
printf("0 か 1 を入力して下さい (0:日本語 1:English) :");
scanf("%d", &choice);
switch(choice){
case 0:
case 1:
printf("%s", message[choice]);
break;
default:
printf("\nERROR : Invalid number ! %d\n", choice);
}
return 0;
}
0600デフォルトの名無しさん
2007/10/01(月) 21:04:15わり。作ってアップすんの忘れてた。
>>494だそうなんで、入力をループで回すとこは入れてないよ。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5007.txt
0601デフォルトの名無しさん
2007/10/01(月) 21:20:05ソースコードがルー大柴でわろた
0602デフォルトの名無しさん
2007/10/01(月) 22:09:520603 ◆vLIz8KOkPM
2007/10/02(火) 00:14:04ありがとうございますm(__)mお陰様で大変助かりました。感謝しています。
0604デフォルトの名無しさん
2007/10/02(火) 02:50:52ギャルゲのスクリプトが作りたくなってきた
0605デフォルトの名無しさん
2007/10/02(火) 12:41:42[3.1] OS(Windows)
3.2] bcc5.5
[3.3] 言語: (C++)
[4] 期限:今日中
文字列aと文字列cを入力し
aに含まれる文字の数とaで最初にcが出てくる位置、最後にcが出てくる位置を
表示するプログラムを作成しなさい。
#include <stdio.h>
int str_src(char *,char);
int str_src2(char *,char);
int main(void)
{
char a[255],c;
printf("aを入力してください -> ");
scanf("%s",a);
printf("cを入力してください ->");
scanf(" %c",&c);
printf("%sの中に%cは%i個です\n",a,c,str_src(a,c));
printf("%s");
return 0;
}
int str_src(char *a,char c)
{
int count=0;
int i;
for(i=0; a[i]!='\0'; ++i)
if(a[i] == c) ++count;
return count;
}
ここまではやったのですが残りわからないのでお願い致します。
0606デフォルトの名無しさん
2007/10/02(火) 12:46:460607デフォルトの名無しさん
2007/10/02(火) 12:49:18あ、すみません文字列aだけでcは文字です。
0608デフォルトの名無しさん
2007/10/02(火) 13:43:25str_srcでカウントして何が楽しいのか分からなかったから
やりかけのソース無視した。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5010.txt
0609デフォルトの名無しさん
2007/10/02(火) 13:46:49http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5011.txt
0610607
2007/10/02(火) 14:03:01本当にありがとうございました。
助かりました。
0611デフォルトの名無しさん
2007/10/02(火) 14:50:45[2] 問題文:じゃんけんプログラムを作りなさい。(あいこも作ること)
[3] 環境
[3.1] OS:WindowsXP
[3.2] BorlandC++
[3.3] 言語:C++
0612デフォルトの名無しさん
2007/10/02(火) 15:35:080613デフォルトの名無しさん
2007/10/02(火) 16:16:44普通に作るつもりだったのに、魔がさした
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5012.txt
0614デフォルトの名無しさん
2007/10/02(火) 16:46:160615デフォルトの名無しさん
2007/10/02(火) 17:08:200616デフォルトの名無しさん
2007/10/02(火) 17:26:13//判定
switch((enemy-player+3)%3){
case 0: //あいこ
aiko = true;
break;
case 1: //勝ち
end = true;
win = true;
break;
default: //負け
end = true;
win = false;
break;
}
でも、
result = (enemy-player+3) % 3;
だけでいいと思う
0617デフォルトの名無しさん
2007/10/02(火) 17:29:130618デフォルトの名無しさん
2007/10/02(火) 17:33:43[2]問題文:float x,y;char a,b;と宣言し、各変数x,y,a,bのアドレスを出力するプログラムを作って、コンパイル/実行し、それぞれのメモリサイズが満たされていることを確認する。
注)メモリアドレスをprintf()を用いて出力する場合は、unsigned int型と同じく%uを出力変換に使うこと。
[3]Windows XP Visual Studio Japan20005
[4]C言語
[5]10月4日まで。お願いします。
0619デフォルトの名無しさん
2007/10/02(火) 17:39:19アドレスを出力しただけで、それが満たされているかは確認できません。
0620デフォルトの名無しさん
2007/10/02(火) 17:50:410621デフォルトの名無しさん
2007/10/02(火) 17:53:490622デフォルトの名無しさん
2007/10/02(火) 17:58:06きっと可変長bitをCPUでサポートしてくれてる
0623デフォルトの名無しさん
2007/10/02(火) 18:01:090624デフォルトの名無しさん
2007/10/02(火) 18:02:410625デフォルトの名無しさん
2007/10/02(火) 19:40:21ってかbitなんてなくなってる
0626613
2007/10/02(火) 20:09:520627デフォルトの名無しさん
2007/10/02(火) 20:19:200628デフォルトの名無しさん
2007/10/02(火) 20:24:420629デフォルトの名無しさん
2007/10/02(火) 21:36:01[2] 問題文(含コード&リンク): ユーザが整数を入力すると、その整数をINT型の変数に入れ、そのビット列を表示するプログラム。
ただ、INT型のビット数は環境によって変わる可能性があるため、
sizeof()演算子を利用してINT型の変数のビット数を求め、そのビット数分だけ表示するようにせよ。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: Visual C++ 2005
[3.3] 言語: C
[4] 期限: 明日中
[5] その他の制限: なし
お願いします。
0630デフォルトの名無しさん
2007/10/02(火) 21:46:43これでおk
unsigned int v, bit = 1 << sizeof(int) * 8 - 1;
scanf("%d", &v);
while(bit) {
putchar(bit & v ? '1' : '0');
bit >>= 1;
}
puts("");
0631デフォルトの名無しさん
2007/10/02(火) 21:48:021バイトが8ビットとは限らないけどこれでよければどうぞ。
#include<stdio.h>
int main(void)
{
int in;
int cnt;
scanf( "%d", &in );
for ( cnt = sizeof( int ) * 8; cnt > 0 ; cnt-- ) {
printf ( "%d", ( in >> ( cnt - 1 ) ) & 1 );
}
return 0;
}
0632デフォルトの名無しさん
2007/10/02(火) 21:49:46入力が負の数だったときに処理系依存で無限ループじゃね?
0633デフォルトの名無しさん
2007/10/02(火) 21:56:13[2] 問題文(含コード&リンク): じゃんけんを10回行い、その対戦結果(対戦譜)をCSV形式で出力するもの。
ただし、出力先は(/デスクトップ/じゃんけん結果)フォルダで、ファイル名は日付を含むこと。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C++
[4] 期限: 明日中
[5] その他の制限: 出力したCSVファイルはExcelで開いて確認すること。
お願いします。
0634デフォルトの名無しさん
2007/10/02(火) 21:57:20ありがとうございます。
参考にさせていただきます。
0635デフォルトの名無しさん
2007/10/02(火) 22:05:50kwsk
0636デフォルトの名無しさん
2007/10/02(火) 22:19:01>[1] 授業単元: C言語
> [3.3] 言語: C++
どっちやねん
0637デフォルトの名無しさん
2007/10/02(火) 22:23:04コンパイルできるし。
0638デフォルトの名無しさん
2007/10/02(火) 23:24:31あ、ごめん。unsignedつけてたらOKだっけ?
負の数の右シフトが算術シフトになるか論理シフトになるかは
処理系依存だったと思ったから・・・
あいまいで、そーりー
0639デフォルトの名無しさん
2007/10/02(火) 23:32:290640デフォルトの名無しさん
2007/10/02(火) 23:38:170641デフォルトの名無しさん
2007/10/02(火) 23:39:18めんどくさいんでcharで説明。
[10101010]を右に1ビットシフトした場合[10010101]になるか[01010101]になるかは処理系依存
調べたらやっぱ、unsignedは問題なかった。スマソ
http://proger.blog10.fc2.com/blog-entry-62.html
0642デフォルトの名無しさん
2007/10/02(火) 23:41:570643デフォルトの名無しさん
2007/10/03(水) 00:27:59> [10101010]を右に1ビットシフトした場合
> [10010101]になるか[01010101]になるかは処理系依存
(http://proger.blog10.fc2.com/blog-entry-62.html)
> C言語の規格として、算術シフトか論理シフトかは不定
うそ。規格では次のようになっている。ISO/IEC 9899, 1999 より:
> 6.5.7
> The result of E1 >> E2 is E1 right-shifted E2 bit positions.
> If E1 has an unsigned type or if E1 has a signed type and a
> nonnegative value, the value of the result is the integral
> part of the quotient of E1 / 2^E2. If E1 has a signed type
> and a negative value, the resulting value is implementation-defined.
つまり、E1 が unsigned であるか、もしくは signed かつ E1 ≧ 0 のときに
限って右シフトの動作は定められており、それ以外は implementation-defined。
すなわち、論理シフトやら算術シフトの範囲を超えて処理系の自由。
0644デフォルトの名無しさん
2007/10/03(水) 00:58:120645デフォルトの名無しさん
2007/10/03(水) 00:59:420646デフォルトの名無しさん
2007/10/03(水) 02:29:31考えてみよー
0647デフォルトの名無しさん
2007/10/03(水) 03:04:07[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5013.txt
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月4日22:00まで
[5] その他の制限: ありません
大変お手数ですが、よろしくお願いいたします
0648デフォルトの名無しさん
2007/10/03(水) 05:48:29問題1
#include <stdio.h>
#include <math.h>
int fac(int n) { return n==1 ? 1 : n * fac(n-1); }
int geo(int a, int r, int n) { return n==1 ? a : geo(a, r, n-1) * (pow(r, n) - 1) / (pow(r, n-1) - 1); }
int fib(int n) { return n==1 || n==2 ? 1 : fib(n-1) + fib(n-2); }
double a[] = { 1, 2, 3, 4, 5};
double hor(double x, int n) { return n==0 ? a[n] : hor(x, n-1) * x + a[n]; }
int main(void)
{
printf("10! = %d\n", fac(10));
printf("2^0 + 2^1 + 2^2 + ... + 2^9 = %d\n", geo(1, 2, 10));
printf("fibonacci 20: %d\n", fib(20));
printf("f(2) = %.2f\n",hor(2, 4));
return 0;
}
0649デフォルトの名無しさん
2007/10/03(水) 08:58:37考える前に仕様書を読んでくれ。6.2.6.2 に書いてあるから。要点は
・value bits / padding bits / sign bit からなる。
・どこの bit が value bits/padding bits/sign bit であるかは処理系定義。
・sign bit が 0 のときは正の数,1 のときは負の数を表現する。
・数表現が「絶対値と符号,二の補数,一の補数」のどれかは処理系定義。
0650デフォルトの名無しさん
2007/10/03(水) 09:14:49> 1バイトが8ビットとは限らない
それよりもこれについて悔しく
0651デフォルトの名無しさん
2007/10/03(水) 09:19:450652デフォルトの名無しさん
2007/10/03(水) 09:22:070653デフォルトの名無しさん
2007/10/03(水) 09:25:090654デフォルトの名無しさん
2007/10/03(水) 09:29:540655デフォルトの名無しさん
2007/10/03(水) 09:32:520656デフォルトの名無しさん
2007/10/03(水) 09:41:060657デフォルトの名無しさん
2007/10/03(水) 09:52:480658デフォルトの名無しさん
2007/10/03(水) 09:56:42CHAR_BITは8以上と定められているので、流石にそれではISO準拠を名乗れない。
0659デフォルトの名無しさん
2007/10/03(水) 10:02:58っつかお前さっきっから偉そうにうぜぇよ?詰まらん突込みに必死になりすぎw
んなの知っててわざとお前みたいなでしゃばりに答えさせているだけだろ。
ほんっと、最近うぜぇガキが増えたな。
>>653
>>651
>>649
>>643
↑こいつキモイ
0660デフォルトの名無しさん
2007/10/03(水) 10:04:26650のバカが突っ込んだつもりで不勉強を晒しただけだな。
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
650のバカが突っ込んだつもりで不勉強を晒しただけだな。
↑バカとか言っているし、なんだこいつ?不勉強だってw
>>650には知らないとか存在しないとは書かれていない。
しかも「悔しく」ってボケているところに気づかない2ちゃん初心者ワロスw
モロに釣られたな、このでしゃばり、知識をひけらかしたい厨房。
653 名前:デフォルトの名無しさん 投稿日:2007/10/03(水) 09:25:09
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・
身の回りが世界だと思ってるほうが後々痛い目にあうしなぁ・・・
0661デフォルトの名無しさん
2007/10/03(水) 10:06:54UINT_MINは存在しない。
存在したとしても常に0だろうし。
0662デフォルトの名無しさん
2007/10/03(水) 10:07:36> 初期のコンピューターでの1バイトは6ビットである(英文文字(キャラクタ)コードが
> 源であった)。1バイトを7ビットや9ビットとして扱うコンピュータもあり
> (DECのPDP-10、NECのACOS-6など)、このため情報通信の分野では
> 常に8ビットを表すために、バイトではなくオクテットと呼ぶのが適切である。
さてと、どっちが不勉強の無知を晒したか、分かったよな?8ビットを1バイトとしない環境があるとしても
それはバイトではなく 何と 言うでしょう〜〜か?ったく、知ったかのバカが無知を晒したよw
>>655 >>655 >>655 >>655 >>655 >>655 <こいつなw
0664デフォルトの名無しさん
2007/10/03(水) 10:11:32しかもバグってるし…
0665デフォルトの名無しさん
2007/10/03(水) 10:13:430666デフォルトの名無しさん
2007/10/03(水) 10:15:08http://www.google.co.jp/search?hl=ja&client=firefox&rls=org.mozilla%3Aja%3Aofficial&hs=Dcs&q=UINT_MIN&btnG=%E6%A4%9C%E7%B4%A2&lr=
っつか、ほんまバカにバカって言われるとなんとも。まぁ、どっちが知識があるとか
競い合っているようじゃまだまだ子供だな。ちゃんと調べようぜ?
UINT_MINが存在するしないを一個人が決めて良いもんだろうか?
強いて決めるなら、って話なら分かる。
0667デフォルトの名無しさん
2007/10/03(水) 10:17:45突っ込んだ質問にさも知ったような口で答えたつもりが、相手が無知だと勘違いして
墓穴を掘るとは・・・敢えて突っ込まれて正確に、事細かに説明できないなら黙ってた方が良いよ。
あと、ここ、宿題スレだから。続きがやりたいなら別の質問関連のスレで頼むわ。
0668デフォルトの名無しさん
2007/10/03(水) 10:19:180669デフォルトの名無しさん
2007/10/03(水) 10:21:53・1バイトは通常8ビットであり、古くは6ビット、7ビット、9ビットの物が存在した。
・よって「常に8ビット」を表すために情報通信分野ではオクテットという用語がある。
その機械で1バイトが8ビット以外と定められているのなら、バイト以外ありえないが。
まさかオクテットだなどと言うまい?
0670デフォルトの名無しさん
2007/10/03(水) 10:22:24負け犬の遠吠え乙w 正確な説明も出来ないくせに他人をバカ呼ばわりしてんじゃねーよ
0671デフォルトの名無しさん
2007/10/03(水) 10:23:54問題はそこじゃない。>>650が無知だったという証拠は?
詳しくと突っ込まれて答えたのがそうでない環境があるってことだけだろ?
そんなの知ってんだよ、こっちは情報関係の分野を専攻してたからねぇ。
具体的に答えたのはむしろボケた俺の方だろ?w
0672デフォルトの名無しさん
2007/10/03(水) 10:26:12やめてくれるんだろう。
何回このパターン見たことか。
0673デフォルトの名無しさん
2007/10/03(水) 10:27:56>>655のバカが突っ込んだつもりで不勉強を晒しただけだな。
他人をバカ呼ばわりする前に自分の知ったかな不十分な知識で偉そうにしていて
相手を勝手に無知、不勉強にするな。調べもしない奴こそいい加減。
悪いがこっちは調べたんじゃなくて知ってたが、敢えて誰もが見られる文献に
リンクをしただけ。普通は自分で調べるだろ、調べる奴は。
0674デフォルトの名無しさん
2007/10/03(水) 10:36:35相変わらず恐ろしいほどの瞬発力だ
0675デフォルトの名無しさん
2007/10/03(水) 10:45:04まあ、わかりやすいから見かけたら即あぼーんで対処するしかないな。
馬鹿は馬鹿である引け目があるが故に馬鹿と指摘されると馬鹿のように怒り始めるから
あまり馬鹿にしてやらないほうが良い。馬鹿にも馬鹿なりの自尊心というやつがあるの
だろう。本当に馬鹿ではなく自分に絶対の自信があるのなら、馬鹿にされても聞き流せ
るはずだから、本来はとても馬鹿馬鹿しい事だが。まあ、わざわざ相手して馬鹿をみる
こともない。
0676デフォルトの名無しさん
2007/10/03(水) 10:46:320677デフォルトの名無しさん
2007/10/03(水) 10:50:16相変わらずだなここも
0678デフォルトの名無しさん
2007/10/03(水) 13:28:34あぼーんするのが面倒だ
0679デフォルトの名無しさん
2007/10/03(水) 15:18:030680デフォルトの名無しさん
2007/10/03(水) 15:36:19長くても一日放置すれば飽きるみたいだし
0681デフォルトの名無しさん
2007/10/03(水) 23:37:15[2] 問題文(含コード&リンク):
「年(西暦)」「月」を入力したら,その月のカレンダーを表示するプログラムを作成しなさい。ただし,下記の条件を満たすものとする。
【条件】
(1)カレンダークラスを作成し,main関数でカレンダークラスの実体を生成し,カレンダークラス内のメンバ関数(show関数)を呼び出してカレンダーを表示する。
(2)カレンダークラスはカプセル化されていること。
(3)カレンダー表示には,年,月および曜日,日を表示すること。
(4)「閏年」「祝日」「六曜」「節句」「二十四節気」の表記を可能にする。
(5)上記以外については自由に作成してよい。
[3] 環境
[3.1] OS: Windows VISTA or XP
[3.2] visual studio 2005
[3.3] 言語: C++
[4] 期限: 2007/10/5まで。
[5] その他の制限: 特になし
よろしくお願いします。
0682デフォルトの名無しさん
2007/10/03(水) 23:43:05「六曜」の計算式plz
0683デフォルトの名無しさん
2007/10/04(木) 00:06:49(月+日)÷6=?…あまり
大安 0
赤口 1
先勝 2
友引 3
先負 4
仏滅 5
例:
十五夜(8月15日) : 8+15=23, 23÷6=3あまり5→仏滅
十三夜(9月13日) : 9+13=22, 22÷6=3あまり4→先負
七夕(7月7日): 7+7=14, 14÷6=2あまり2→先勝
0684デフォルトの名無しさん
2007/10/04(木) 00:11:44六曜は月の暦(太陰暦)だから太陽暦での月の途中でリセットされるよ
0685デフォルトの名無しさん
2007/10/04(木) 00:25:37そんな単純な計算式で出るなんて初めて知った・・・
0686デフォルトの名無しさん
2007/10/04(木) 00:36:500687デフォルトの名無しさん
2007/10/04(木) 00:44:540688デフォルトの名無しさん
2007/10/04(木) 00:51:38海上保安庁の
http://www1.kaiho.mlit.go.jp/KOHO/syoshi/pr_eph.htm
に計算式があるようだが 解読できないです。
0689デフォルトの名無しさん
2007/10/04(木) 02:50:41[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5013.txt
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月5日6:00まで
[5] その他の制限: ありません
大変お手数ですが、よろしくお願いいたします
0690デフォルトの名無しさん
2007/10/04(木) 03:55:44問題2の1つ目のループの計測
2つ目以降は計測してるループのとことかnの値とかそこらへんを書きかえればok
#include <stdio.h>
#include <sys/time.h>
int main(void)
{
int i, j, n, sum;
hrtime_t start, finish;
printf("1.\n");
printf("+----+---------+---------+---------+---------+---------+\n");
printf("| n | 2000000| 4000000| 6000000| 8000000| 10000000|\n");
printf("+----+---------+---------+---------+---------+---------+\n");
printf("|time|");
for(n=2000000; n<=10000000; n+=2000000) {
start = gethrtime(); /* 計測開始 */
sum = 0;
for(i=0; i<n; i++) sum++;
finish = gethrtime(); /* 計測終了 */
printf("%9f|", (double)(finish-start) / NANSEC);
}
printf("\n+----+---------+---------+---------+---------+---------+\n");
return 0;
}
0691デフォルトの名無しさん
2007/10/04(木) 04:02:44関数名が情けないことになってるので、書きなおしておいて
#include<stdio.h>
int kaijo(int n){
if(n<=1) return 1;
return n*kaijo(n-1);
}
double touhikyusu(double a0, double x, int n){
if(n<=0) return a0;
return touhikyusu(a0*x, x, n-1);
}
int fibonacchi(int n){
if(n<=1) return 1;
return fibonacchi(n-1)+fibonacchi(n-2);
}
double honer(double x, double keisu[], int keisu_num){
if(keisu_num<=0) return 0.0;
return honer(x, keisu, keisu_num-1)*x+keisu[keisu_num-1];
}
int main(void){
double sum;
printf("%d\n", kaijo(10));
for(i=0,sum=0.0;i<10;i++) sum+=touhikyusu(1.0, 2.0, i));
printf("%f\n", sum);
printf("%d\n", fibonacchi(10));
printf("%f\n", honer(2.0, (double [5]){1.0, 2.0, 3.0, 4.0, 5.0}, 5));
return 0;
}
0692デフォルトの名無しさん
2007/10/04(木) 04:34:390693デフォルトの名無しさん
2007/10/04(木) 09:51:290694デフォルトの名無しさん
2007/10/04(木) 10:17:28if(n<=0) return a0;
return touhikyusu(a0, r, n-1)*r+a0;
}
0695デフォルトの名無しさん
2007/10/04(木) 11:27:50なにそれ?
0696デフォルトの名無しさん
2007/10/04(木) 12:37:01double function(double a, double r, int n){
return n==1 ? a : a*pow(r,n-1) + function(a, r, n-1);
}
0697デフォルトの名無しさん
2007/10/04(木) 12:48:16普通初項というとa1じゃないか?
それ以外は良いと思うが
0698 ◆JdKMFRogo6
2007/10/04(木) 15:10:08[2] 問題文(含コード&リンク):
処理の前後で clock() の値を保存しておき、その差をとり、プログラムの実行時間を求めよ。
[3] 環境
[3.1] OS: Windows XP
[3.2] VC
[3.3] 言語: C++
[4] 期限: 2007/10/7まで。
[5] その他の制限:
include<time.h>を用いる。
int t1, t2, t0;
t1 =?
処理
t2 =?
t0 = t2 - t1;
結果表示
制限というかイメージ的には、こんな感じかなぁとは思うのですが式がわかりませんでした。
大変お手数ですが、よろしくお願いいたします
0699デフォルトの名無しさん
2007/10/04(木) 15:43:28処理の内容は何でもいいの?
0700デフォルトの名無しさん
2007/10/04(木) 17:42:53[2] 問題文(含コード&リンク):
ディレクトリの中身のファイル20個をランダムに取り出して違うディレクトリに5個にコピーしろ。
[3] 環境
[3.1] OS: LINUX
[3.2] VC
[3.3] 言語: C++
[4] 期限: 2007/10/7まで。
[5] その他の制限:
今ホームディレクトリにいて
そこにdataというディレクトリがありも、またdata2というディレクトリがあるとします。
dataというディレクトリに1.dat〜20.datのファイルがあるとします。
そのディレクトリのファイルをランダムに5個取り出して、data2にいれてください。
data/〜.datのファイルの数20の番号からランダムに番号を選んでそのファイルを
〜とするべきなのかな?
0701デフォルトの名無しさん
2007/10/04(木) 18:11:54LinuxなのにVC?
0702デフォルトの名無しさん
2007/10/04(木) 18:14:19上のを。
0703デフォルトの名無しさん
2007/10/04(木) 18:20:100704デフォルトの名無しさん
2007/10/04(木) 18:36:04きちんと環境を書かないと解答なんてできないよ。
0705デフォルトの名無しさん
2007/10/04(木) 18:52:58681です
六用の部分は省いても良いです。
0706デフォルトの名無しさん
2007/10/04(木) 19:09:39例えば目の不自由な人を「めくら」と言う等、本人の人格に関わりの無い身体的特徴をあげつらって侮辱するのは差別ではないか、って事らしい。
チビとかデブも駄目らしい。
ハゲは「髪の不自由な人」、チビは「身長の不自由な人」、デブは「脂肪燃焼の不自由な人」って言うそうな。
0707デフォルトの名無しさん
2007/10/04(木) 19:41:06[2] 問題文(含コード&リンク):
ディレクトリの中身のファイル20個をランダムに
取り出して違うディレクトリに5個にコピーしなさい。
[3] 環境
[3.1] OS: LINUX
[3.2] (gcc )
[3.3] 言語: C
[4] 期限: 10月5日の朝までにできてればいいです。
[5] その他の制限:
今ホームディレクトリにいて
そこにdataというディレクトリがありも、またdata2というディレクトリがあるとします。
dataというディレクトリに1.dat〜20.datのファイルがあるとします。
そのディレクトリのファイルをランダムに5個取り出して、data2にいれてください。
data/〜.datのファイルの数20の番号からランダムに番号を選んでそのファイルを
〜とするべきなのかな?
0708デフォルトの名無しさん
2007/10/04(木) 22:48:21[2] 問題文(含コード&リンク):
α=1/1+10^(pKa-pH)。pKaとpHを引数として
αを求める関数を書け。
[3] 環境
[3.1] OS: windowsXP
[3.3] 言語:C
[4] 期限:来週月曜日まで。
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ありません。
累乗計算がうまくいきません。
よろしくおねがいします。
0709デフォルトの名無しさん
2007/10/04(木) 22:52:320710デフォルトの名無しさん
2007/10/04(木) 23:01:38#include <math.h>
int main(void)
{
double pka,ph,a;
printf("Enter pKa.\n");
printf("pka="); scanf("%f",&pka);
printf("\nEnter pH.\n");
printf("pH="); scanf("%f",&ph);
a=pow(10,pka-ph);
printf("degree of disassociation=%f\n",1/(1+a));
return 0;
}
こんな感じでやってみたのですが・・・。
powは小数の累乗でもできますか?
0711デフォルトの名無しさん
2007/10/04(木) 23:03:05powは
double pow(double,double)
だから小数を使う。この意味は習ってないのかな
0712デフォルトの名無しさん
2007/10/04(木) 23:05:290713デフォルトの名無しさん
2007/10/04(木) 23:08:10double f(double pKa, double pH) { return 1 / ( 1 + pow(10, pKa - pH)); }
0714デフォルトの名無しさん
2007/10/04(木) 23:10:09%fの方がもともと正式
0715デフォルトの名無しさん
2007/10/04(木) 23:23:00#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char filelist[20][FILENAME_MAX], *work[20], *temp;
char cmd[FILENAME_MAX*2+10];
int i, index;
for(i=0;i<20;i++){
sprintf(filelist[i], "data/%d.dat", i+1);
work[i]=filelist[i];
}
for(i=1;i<20;i++){
index=rand()%(i+1);
temp=work[i];
work[i]=work[index];
work[index]=temp;
}
for(i=0;i<5;i++){
sprintf(cmd, "cp -p %s data2/", work[i]);
system(cmd);
}
return 0;
}
0716デフォルトの名無しさん
2007/10/04(木) 23:33:390717デフォルトの名無しさん
2007/10/04(木) 23:45:21こういうこと?
for(i=0;i<5;i++){
index=(rand()%(20-i))+i;
temp=work[i];
work[i]=work[index];
work[index]=temp;
}
0718デフォルトの名無しさん
2007/10/04(木) 23:53:39index = rand() % (20 - i);
sprintf(cmd, "cp -p %s data2/", work[index]);
system(cmd);
work[index] = work[19-i];
}
0719デフォルトの名無しさん
2007/10/05(金) 00:12:37[2] 問題文(含コード&リンク):
#include <stdio.h>
int main(void)
{
int no = 1;
int sum = 0;
do{
sum = sum + no;
no = no + 1;
}while (no <= 5);
printf("1から5までを足した値は%dです。\n", sum);
return (0);
}
問題 上のプログラムに対し、変数noとsumの値がどのように変わっていくのか
が、わかるように、その過程が出力されるようにプログラムを変更する。
ヒント)ループ処理の中で変数noとsumの出力処理を行う
[3] 環境
[3.1] OS: Windows
[3.3] 言語: C言語
[4] 期限:10月5日午前1時30分まで
0720デフォルトの名無しさん
2007/10/05(金) 00:41:27sum = sum + no;
no = no + 1;
printf("no:[%d] sum:[%d]\n", no, sum); // この行を追加する
}while (no <= 5);
0721デフォルトの名無しさん
2007/10/05(金) 00:49:47>double pka,ph,a;
>printf("pka="); scanf("%f",&pka);
>printf("pH="); scanf("%f",&ph);
本当に上手くいってないのは累乗計算なのかな?
0722デフォルトの名無しさん
2007/10/05(金) 00:51:11no = no + 1;
の前の行に入れた方がよくね?
というかこれforでよくね?
まだ習ってないのか?
0723デフォルトの名無しさん
2007/10/05(金) 01:01:38はじめに表示したら、最終的なnoの値が表示されない。
2か所にprintfとかめんどくせ
こんな理由でそこにしてみた。
ってか、この課題をわざわざ書き込みするってことは授業を全く聞いていないレベルだと思うし
0724 ◆JdKMFRogo6
2007/10/05(金) 01:29:24遅れてすいません。処理の内容は何でもかまいません。
プログラムの時間を計ってみろとの課題なので四則演算でも何でもOKです。
0725デフォルトの名無しさん
2007/10/05(金) 09:38:30[2] 問題文(含コード&リンク):
数当てゲームの作成
ルール1
1〜9の数字を重複しない4桁の数字を使う。
4桁の数字は毎回違う数字となるように工夫すること(rand()とsrand()を適切に
利用)
ルール2
数字と桁位置が一致する場合をHIT。
ルール3
数字は一致するが桁が一致しいない場合をBlow
ルール4
4HIT0BLOWで終了
ルール5
12回以内に見つけなければYOU lostと表示し終了
12回以内に見つけかればYOU winと表示し終了
よろしくお願いいたします。
[3] 環境
[3.1] OS: (Windows)
[3.2] コンパイラ名とバージョン: (borand 5.5)
[3.3] 言語: (C++)
0726デフォルトの名無しさん
2007/10/05(金) 10:56:112314とか?
HITは4321てことでいいのかな
0727デフォルトの名無しさん
2007/10/05(金) 11:03:020728デフォルトの名無しさん
2007/10/05(金) 11:37:16ぐぐりますた
てっきり12個乱数を発生させて、それぞれ1桁目が1、2桁目が2、……て判定すんのかと思ってた
てか既存のゲームだったんですね
0729デフォルトの名無しさん
2007/10/05(金) 11:52:301レスに縮めたから、適当だけど
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i;
char num[] = "123456789", ans[4], input[5], *result[] = {"win", "lost"};
srand(time(NULL));
for(i=0; i<4; i++) {
int index = rand() % (9-i);
ans[i] = num[index];
num[index] = num[8-i];
}
for(i=0; i<12; i++) {
int j, k, hit = 0, blow = 0;
fgets(input, sizeof input, stdin);
while(getchar()!='\n');
for(j=0; j<4; j++) if(input[j]==ans[j]) hit++;
for(j=0; j<4; j++) {
for(k=0; k<4; k++) if(input[j]==ans[k] && j!=k) blow++;
}
printf("HIT:%d BLOW:%d\n", hit, blow);
if(hit==4) break;
}
printf("You %s!\n", result[i==12]);
return 0;
}
0730デフォルトの名無しさん
2007/10/05(金) 14:09:361レスに抑えようとして失敗した上、効率悪そうな当てる方
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5014.txt
0731デフォルトの名無しさん
2007/10/05(金) 16:23:02#include <math.h>
int main() {
int i, j, k, aim[4], input, hit, blow;
srand((unsigned)time(NULL));
for (i = 0; i < 4; ) {
aim[i] = 1 + rand() % 9;
for (j = 0; j < i; j++)
if (aim[i] == aim[j]) break;
i += i == j ? 1 : 0;
}
for (i = 0; i < 12; i++) {
hit = 0, blow = 0;
do {
printf("%2d:", i + 1);
if (scanf("%d", &input) != 1)
while (getchar() != '\n');
} while(input < 1000 || 9999 < input);
for (j = 0; j < 4; j++)
if (aim[j] == input / (int)pow(10, 3 - j) % 10) hit++;
for (j = 0; j < 4; j++)
for (k = 0; k < 4; k++)
if (j != k && aim[j] == input / (int)pow(10, 3 - k) % 10) blow++;
printf(" %dHIT%dBLOW\n", hit, blow);
if (4 <= hit) break;
}
printf("YOU %s (%d%d%d%d)\n", i < 12 ? "win" : "lost", aim[0], aim[1], aim[2], aim[3]);
}
0732731
2007/10/05(金) 16:26:08intでやってみた、というだけ。作る前に>>129さんのを見てしまったので、
似た感じのつくりになってしまったと思います。
4桁の数字を作る、ってだけでも色々方法がありそうです。
*/
0733デフォルトの名無しさん
2007/10/05(金) 17:26:46[2] 問題文:1,2項の行列とベクトルx[3](成分(1,5,10))の積と表示
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: ([2007年10月6日まで]
[5] その他の制限: for,if,caseなどは習いました。
お願いします。
0734デフォルトの名無しさん
2007/10/05(金) 17:48:441,2項ってなんだ?
0735デフォルトの名無しさん
2007/10/05(金) 18:11:40[2] 問題文:十進数で1000から10000までの値を36進数で示し、コンマ区切りでファイルresult.txtに格納するファイルを作成せよ。
ただし、1桁の数値は、0〜9、A〜Zであらわすものとする。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Wedit Win32 Vertion4.0
[3.3] 言語: C
[4] 期限: ([2007年10月5日 20:00まで]
[5] その他の制限: ポインタや構造体ファイルの入出力は習いました。
よろしくお願いします。
0736デフォルトの名無しさん
2007/10/05(金) 18:37:20#include <stdio.h>
static const char *str = "0123456789abcdefghijklmnopqrstuvwxyz";
int main(void){
FILE *fp = fopen("result.txt", "w");
int n;
char buf[16], *p, *q;
if(!fp)
return 1;
do{
scanf("%d", &n);
}while(n < 1000 || n > 10000);
for(p = buf; n/36 != 0; p++, n /= 36)
*p = str[n%36];
*p = str[n];
for(q = buf; p != q; p--)
fprintf(fp, "%c,", *p);
fprintf(fp, "%c\n", *p);
fclose(fp);
return 0;
}
0737デフォルトの名無しさん
2007/10/05(金) 18:51:38助かりました!
もうひとつ質問してもよろしいでしょうか?
0738デフォルトの名無しさん
2007/10/05(金) 18:55:59それ以外のことなら、こちらに。
"C言語なら俺に聞け(入門篇) Part 19"
http://pc11.2ch.net/test/read.cgi/tech/1190342593/
0739デフォルトの名無しさん
2007/10/05(金) 19:05:56この問題もお願いします。
問題文
下記のように2つの浮動小数点の値と名前の100人分のデータがコンマで区切られてファイルinput.datに入っている。
10.2,Hnako 18.2,Taro …、…、…… }100人分
以下の型の構造体のメンバ、Xおよびnameに上記を代入し、Xの大きいほうから並び替えて表示するプログラムを作成せよ。
typedef struct{
double X;
}B;
typedef struct{
char name[20];
B*b;
}A;
ただし、並び替えて表示する関数は、次のプロトタイプ形式で、すでに作成されいるものとする。
void sortA(A*);
0740デフォルトの名無しさん
2007/10/05(金) 19:39:060741デフォルトの名無しさん
2007/10/05(金) 19:46:18他の偉い人に任せる。
0742デフォルトの名無しさん
2007/10/05(金) 19:47:00のんびりやってたらなんか明らかにタイミング逃しますた
とりあえずせっかく書いたので載せとく。hitとblowの判定が多少簡単なはず。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
int num[9] = {0} , cnt , hit = 0 , blow = 0 , r , i;
char input , *result = "Lose...";
srand(time(NULL));
for (i=0; i<4; i++){
r = rand()%(9-i);
if (!num[r]) num[r] = i + 1;
else num[9 - num[r]] = i + 1;
}
for (cnt=0; cnt<12; cnt++,hit=blow=0){
putchar('>');
for (i=0; i<4; i++){
input = (char)getchar() - '1';
if (input < 0 || input >=9) {i--;continue;}
if (num[input] == i + 1) hit++;
else if (num[input]) blow++;
}
while (getchar() != '\n');
printf(" %dHIT , %dBLOW\n" , hit , blow);
if (hit == 4) {result = "Win!"; break;}
}
printf("You %s" , result);
return 0;
}
0743デフォルトの名無しさん
2007/10/05(金) 19:57:24[2] 問題文(含コード&リンク):英単語(英文字で最大15文字)を*が出るまで
読み込み、読み込んだ英単語の文字数を計算して、文字数分布(同一文字数の出現回数)
を表示するプログラム
ただし、文字数を計算するプログラムでは文字列を格納する領域は配列を使用する。
配列の要素を指定するときは、配列と添え字をしようしないで
配列の先頭番地を記憶するポインタ変数を宣言して使用する。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:10月8日まで
[5] その他の制限:制限は特にないです
よろしくお願いします。
0744デフォルトの名無しさん
2007/10/05(金) 20:36:16Cの勉強がてら書いてみた.
#include <stdio.h>
#include <string.h>
#define itemof(array, index) (*(array+index))
#define MAXSTRLEN 15
#define SCANFORMAT(n) _SCANFORMAT(n)
#define _SCANFORMAT(n) "%"#n"s"
int main(void){
int i, strlentable[MAXSTRLEN];
char str[MAXSTRLEN+1];
for(i=0;i<MAXSTRLEN;i++)
itemof(strlentable, i-1)=0;
while(1){
scanf(SCANFORMAT(MAXSTRLEN), str);
if(strcmp(str,"*")==0)
break;
else{
int _strlen=strlen(str);
itemof(strlentable, _strlen-1)++;
}
}
for(i=0;i<MAXSTRLEN;i++)
printf("count of strlen==%d =%d\n", i, itemof(strlentable, i-1));
}
0745デフォルトの名無しさん
2007/10/05(金) 20:37:02まてよ
もしかして,strlen()はつかっちゃいけないのか?
0746デフォルトの名無しさん
2007/10/05(金) 20:46:19ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5015.c
0747デフォルトの名無しさん
2007/10/05(金) 20:58:08おかげで理解しながら分かりました。
>>745さん
strlen()は使っても大丈夫です。
0748デフォルトの名無しさん
2007/10/05(金) 21:01:36使っても良かったか
ところでバグを見つけた.
最後のprintf()は
> printf("count of strlen==%d =%d\n", i, itemof(strlentable, i-1));
printf("count of strlen==%d =%d\n", i, itemof(strlentable, i));
だ
0749デフォルトの名無しさん
2007/10/05(金) 21:23:08[2] 問題文:3つの引数として渡された要素数を持つdouble型の3次元配列と同等の領域(3次元配列表記でアクセスできるdouble型値の格納領域)を確保し、
その領域の先頭アドレスを返す関数。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Wedit Win32 Vertion4.0
[3.3] 言語: C
[4] 期限: ([2007年10月6日]
[5] その他の制限:特に無し
よろしくお願いします。
0750デフォルトの名無しさん
2007/10/05(金) 21:39:39一応聞くけど,標準のmalloc()関数は使っていいの?
0751デフォルトの名無しさん
2007/10/05(金) 21:56:45大丈夫だと思います。
0752デフォルトの名無しさん
2007/10/05(金) 22:37:58malloc()使えるなら
double * _(int r1, int r2, int r3){ return (0<r1 && 0<r2 && 0<r3) ? (double*)malloc(sizeof(double)*r1*r2*r3) : NULL; }
でいいと思われる.
0753デフォルトの名無しさん
2007/10/05(金) 22:41:51詳しくお願いします。
0754デフォルトの名無しさん
2007/10/05(金) 22:50:140755デフォルトの名無しさん
2007/10/05(金) 22:53:060756デフォルトの名無しさん
2007/10/05(金) 22:58:17助かりました。
0757デフォルトの名無しさん
2007/10/05(金) 23:17:51[1] 授業単元: C言語
[2] 問題文:キューに関する問題。8つのマスに0〜9の数字を入力。-入力で最古のデータ削除。
先頭の数字hpが後から入れた数字tpに追い越されないこと。8つのマスがフル、または空になったら警告。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Cpad for Borland C++ Compiler ver.2.31
[3.3] 言語: C
[4] 期限: ([2007年10月09日]
[5] その他の制限:特に無し
すみませんがもしよろしければ、よろしくお願いします。
0758デフォルトの名無しさん
2007/10/06(土) 00:04:50>先頭の数字hpが後から入れた数字tpに追い越されないこと。
この条件の意味が今ひとつ分からんのだけど。
「追い越されない」って何ぞ?
普通にキューなら良いの?
0759デフォルトの名無しさん
2007/10/06(土) 00:44:26double ***d3_alloc(int x, int y, int z){
double ***ret=NULL, **index=NULL, *data=NULL;
int i;
data=malloc(sizeof(*data)*x*y*z);
index=malloc(sizeof(*index)*y*z);
ret=malloc(sizeof(*ret)*z);
if(data==NULL || index==NULL || ret==NULL){
free(data);
free(index);
free(ret);
return NULL;
}
for(i=0;i<y*z;i++) index[i]=&data[i*x];
for(i=0;i<z;i++) ret[i]=&index[i*y];
return ret;
}
void d3_free(double ***d3){
free(d3[0][0]);
free(d3[0]);
free(d3);
}
0760デフォルトの名無しさん
2007/10/06(土) 01:22:50レス無かったんで単なるキュー
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5018.txt
0761デフォルトの名無しさん
2007/10/06(土) 07:47:36[2] 問題文:2つの3次元ベクトル(a[3],b[3])を作り、その内積を計算/表示する
(ベクトル成分(a[0]etc.)はscanfで読み込むこと)
(内積(a[0]*b[0]+a[1]*b[1]+a[2]*b[2])はfor文で計算)
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: ([2007年10月7日まで]
[5] その他の制限: for,if,caseなどは習いました。
0762デフォルトの名無しさん
2007/10/06(土) 07:57:33int main(void)
{
double a[3], b[3], ip = 0;
int i;
printf("ベクトルaを入力:");
for(i=0; i<3; i++) {
scanf("%lf", a + i);
}
printf("ベクトルbを入力:");
for(i=0; i<3; i++) {
scanf("%lf", b + i);
}
for(i=0; i<3; i++) ip += a[i] * b[i];
printf("ベクトルaとベクトルbの内積は%f\n", ip);
return 0;
}
0763デフォルトの名無しさん
2007/10/06(土) 08:48:21ipってなんですか?
0764デフォルトの名無しさん
2007/10/06(土) 08:50:52自分で内積求めろって言っといてそれはないだろ
0765デフォルトの名無しさん
2007/10/06(土) 09:36:42本当に知らないんです。習ってませんし、教科書にも載ってませんでした。
でも課題で出たんです。
ipを別の文字に置き換えてはできないんですか?
家でプログラミングできないので確かめられません。
すみません。
エディタの体験版とってもできないんです
0766デフォルトの名無しさん
2007/10/06(土) 09:53:540767デフォルトの名無しさん
2007/10/06(土) 10:04:020768デフォルトの名無しさん
2007/10/06(土) 10:07:21結論だけ言えば、他の文字でも良い。
ipは「変数」または「オート変数」と呼ぶ。
まずは、「変数、C言語」あたりをキーワードにして、
検索かけてみると良いんじゃないかな?
0769デフォルトの名無しさん
2007/10/06(土) 10:14:23ipって必要なんですか?
if,if-else,switch,while,do-while,forしか習ってません。あとint,double,char。
0770デフォルトの名無しさん
2007/10/06(土) 10:24:48単純に、習ったことの理解が出来てないだけだから復習しなさい
ipはinner productの略かな、変数名だから別にcでもdでも何でも良い
0772デフォルトの名無しさん
2007/10/06(土) 10:45:020773デフォルトの名無しさん
2007/10/06(土) 11:06:47自分についたレスくらい嫁
0774デフォルトの名無しさん
2007/10/06(土) 11:12:26734 名前:デフォルトの名無しさん[sage] 投稿日:2007/10/05(金) 17:48:44
1,2項の行列で15分くらい悩んでる。
1,2項ってなんだ?
0775デフォルトの名無しさん
2007/10/06(土) 23:23:56瑞ウの数は再帰使bヲば簡単に解けb驍セ。
bナも負数が全く演ッそうにない=B
1の補数なら反転するだけだから分かるけど、
普通は2の補数だもんなぁ。
まぁ恐らく先生もそこまで(負数の事)考慮してないんだろうけどさ…。
0776デフォルトの名無しさん
2007/10/06(土) 23:34:040777デフォルトの名無しさん
2007/10/06(土) 23:56:04いまいちCの仕組み分かってないんだ。
0778デフォルトの名無しさん
2007/10/06(土) 23:59:000779デフォルトの名無しさん
2007/10/07(日) 00:04:14一応途中まで書いたものうpしました。
どうしても2の補数が表示出来そうにありません。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5020.txt
0780デフォルトの名無しさん
2007/10/07(日) 00:06:34int main(void)
{
int i, n;
n = 2 + 8 + 32 + 128 + 512 + 2048;
printf("\n%d = ", n);
for(i=sizeof(int)*4; i>=0; i--) putchar((n >> i) & 1 ? '1' : '0');
n = -1;
printf("\n%d = ", n);
for(i=sizeof(int)*4; i>=0; i--) putchar((n >> i) & 1 ? '1' : '0');
return 0;
}
こんな感じ>ビットシフト
0781デフォルトの名無しさん
2007/10/07(日) 00:42:40[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5021.txt
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月8日22:00まで
[5] その他の制限: 特にありません。
0782デフォルトの名無しさん
2007/10/07(日) 00:51:54書き方が悪いというか、独り言にしか見えなかった。
テンプレをすべて埋めろ!書き漏らすな!とまでは言わないけど、
居酒屋での愚痴じゃないんだからもう少しまともに書いた方がいいよ
#include<stdio.h>
int main(){
unsigned int i;
int n = -1;
for(i=1<<(sizeof(int)*8-1);i>0;i>>=1)printf("%d",!!(n&i));
return 0;
}
ビットシフトと言われて思いついてみたのを書いたけど、>>780の方がスマートで凹む orz
0783デフォルトの名無しさん
2007/10/07(日) 01:03:23申し訳ない、仰るとおりです。
今後気をつけます。
シフト演算子なんてものがあったんですね。
こんな簡単に書けるとは…。勉強になります。
0784デフォルトの名無しさん
2007/10/07(日) 01:13:06が1になることって保障されてます?
0785デフォルトの名無しさん
2007/10/07(日) 01:23:450786デフォルトの名無しさん
2007/10/07(日) 01:25:110787デフォルトの名無しさん
2007/10/07(日) 01:28:050788デフォルトの名無しさん
2007/10/07(日) 01:30:560789デフォルトの名無しさん
2007/10/07(日) 01:37:220790デフォルトの名無しさん
2007/10/07(日) 01:58:52void preorder(NodePointer node){
printf("%c ",node->key);
if(node->left != tail) preorder(node->left);
if(node->right != tail) preorder(node->right);
}
void inorder(NodePointer node){
if(node->left != tail) inorder(node->left);
printf("%c ",node->key);
if(node->right != tail) inorder(node->right);
}
void postorder(NodePointer node){
if(node->left != tail) postorder(node->left);
if(node->right != tail) postorder(node->right);
printf("%c ",node->key);
}
0791デフォルトの名無しさん
2007/10/07(日) 08:43:40用語を習ってなくて自分で調べても意味不明なのでよろしくお願いします
DBMSを使用せずに、Web掲示板をプログラミングすることを考える。
記事番号、記事タイトル、投稿日付時刻、投稿者名、投稿内容(全角400文字以内)をひとつのレコードとして保存管理するものとする。
【問題】
�@このレコードをプレーンテキストで保存するとしたとき、そのファイルの書式を設計せよ。
具体的にはレコードセパレータと、フィールドセパレータを何にするかを書き、どうしてそう設計するかを説明せよ。
�A具体的な例を3レコード示せ。
0792デフォルトの名無しさん
2007/10/07(日) 08:46:06期限は10月8日17:00までです
スミマセン
0793デフォルトの名無しさん
2007/10/07(日) 09:14:301:
レコード = [レコード全体のバイト数を表す十六進数数字列] ":"
(" " × [任意数] [次のカラムのバイト数を表す十六進数数字列] ":" [次のカラムの生データ]) × 5
(注意:記事番号、記事タイトル、投稿日付時刻、投稿者名、投稿内容の5個。)
ファイル全体 = (レコード "\n") × [レコード数]
設計理由:
・テキストエディタで開いて編集できる。
・特定のレコードまで読み捨てるとき、飛ばし読みが容易に出来る。(レーコードの終端文字を判断する必要がない。)
・カラムのデータをエスケープ等をすることなく生の状態で保存できる。
よって読み書きの度に発生するエスケープにかかるコストを削減できる。
・とりあえず宿題として何かをでっち上げないといけないから。
2:
45: 1:1 1c:スレタイも読めない奴は死ね。 8:20071007 a:まんすこう 6:死ね。
38: 1:2 8:ちわす。 8:20080628 a:通りすがり e:過疎ってルナ。
43: 1:3 a:名無しさん 8:20081225 a:名無しさん 16:面倒くさいお(^ω^;)。
0794デフォルトの名無しさん
2007/10/07(日) 09:16:36変な制限つける糞高校の先生は死ねばいいお。
0795デフォルトの名無しさん
2007/10/07(日) 10:14:38僕もわからないので火曜日に友達に聞きます
申し訳ないで。
0796デフォルトの名無しさん
2007/10/07(日) 10:25:14『申し訳ないです』の誤りです
すいません
0797デフォルトの名無しさん
2007/10/07(日) 11:17:57[2] 問題文:2次方程式の解:1次元変数c[2]を入力し、c[0]xの2乗+c[1]x+c[2]=0の
2つの解(実部と虚部:xre[2],xim[2])を表示するプログラムを作れ。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C言語
[4] 期限: ([2007年10月8日まで]
[5] その他の制限: for,if,switch、do-while
0798REI
2007/10/07(日) 19:21:11『現在の日付を取得してそれを8けたの数値とし変数bに代入する』
というのはどうすればいいんでしょうか。
OSはWindowsでC言語の授業です。
まわりは男の先輩ばっかりで聞きにくくて・・・。
来年は技術科から教育家政科に転科予定なのですが、
この単位を落とすと移れません。
勉強しても全く頭に入らずかなり泣きたい状況です。
自分がこんなに機械オンチだったなんて・・・。
助けて下さい。
0799デフォルトの名無しさん
2007/10/07(日) 19:39:20>>1 を参照。
それと、数値への変換というのがよくわからないが、
例えば2007年10月07日を変換すると 20071007 になるのかい?
0800デフォルトの名無しさん
2007/10/07(日) 20:46:14#include <stdio.h>
#include <time.h>
int main(void)
{
time_t timer;
struct tm *t_st;
int b;
time(&timer);
t_st = localtime(&timer);
b = (t_st->tm_year + 1900)*10000 + (t_st->tm_mon + 1)*100 + t_st->tm_mday;
printf("%d\n", b);
return 0;
}
0801デフォルトの名無しさん
2007/10/07(日) 21:38:080802デフォルトの名無しさん
2007/10/07(日) 21:50:09文字列にしろとは言ってない
0803デフォルトの名無しさん
2007/10/07(日) 21:54:370804デフォルトの名無しさん
2007/10/07(日) 23:48:02int main (void)
{
int a,b,average;
printf("aの値を入力してください>>>");
scanf("%d", &a);
printf("bの値を入力してください>>>");
scanf("%d", &b);
average=(double)(a + b)/2;
printf("平均は%fです\n",average);
return 0;
}
キャストを使って2つの整数の平均を出せとの問題なのですが
平均値に0.0000としか出ません
最後を%dで代入させると整数値だけは出るんですけど…
なぜかご教授いただけると有り難いです
0805デフォルトの名無しさん
2007/10/07(日) 23:53:090806デフォルトの名無しさん
2007/10/07(日) 23:55:43にしたら動くかな?
0807デフォルトの名無しさん
2007/10/07(日) 23:58:09書き直してみると正確に値がでました。ありがとうございます。
でも式に(double)とキャストを付けたら型変換で演算結果もdoubleにならないのかな…
0808デフォルトの名無しさん
2007/10/07(日) 23:59:51doubleに変換して演算した結果をintにいれてるじゃないか
0809デフォルトの名無しさん
2007/10/08(月) 00:01:16あ、なるほど…ありがとうございました。
0810REI
2007/10/08(月) 00:08:55せっかくアドバイスを頂いたのに遅くなってしまって申し訳ありませんでした。
799さん、気づきませんでした。
ごめんなさい。
そうですよね。
質問する側にもマナー!!(これから守れるように頑張ります。)
&そうです。2007年10月8日なら数値としての20,071,008になるということです。
800さん、ありがとうございます。
チューターの前できちんと説明できるようにするには、
あと2、3時間かかりそうですが、頑張ってみます。
こういう事のできる頭が欲しかった・・・。
ウ・・・ウラヤマシイ・・・。
親切な方がいて、かなり感激しています。
本当にありがとうございます。
勇気をだして書き込んで良かったです。
また皆様からしたら馬鹿な質問かもしれませんが、
させてください。
よろしくおねがいします。
0811REI
2007/10/08(月) 00:14:01考えて下さってありがとうございます。
他人事をこんなに真剣に考えていただいてうれしいです。
ココにはこんなにいっぱい優しい人がいるんですね。
0812デフォルトの名無しさん
2007/10/08(月) 01:41:240813↑ツンデレ?
2007/10/08(月) 02:45:530814デフォルトの名無しさん
2007/10/08(月) 02:52:380815デフォルトの名無しさん
2007/10/08(月) 02:53:460816デフォルトの名無しさん
2007/10/08(月) 04:08:47[2] 問題文:2次方程式の解:1次元変数c[2]を入力し、c[0]xの2乗+c[1]x+c[2]=0の
2つの解(実部と虚部:xre[2],xim[2])を表示するプログラムを作る。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C言語
[4] 期限: ([2007年10月8日まで]
[5] その他の制限: for,if,switch、do-while
お願いします
0817デフォルトの名無しさん
2007/10/08(月) 04:34:17#include <stdio.h>
#include <math.h>
int main(void)
{
int i;
double c[3], xre[2], xim[2] = {0}, j;
for(i=0; i<3; i++) {
printf("Input c[%d]:", i);
scanf("%lf", c + i);
}
j = c[1] * c[1] - 4 * c[0] * c[2];
if(j>=0) {
xre[0] = (-c[1] - sqrt(j)) / ( 2 * c[0]);
xre[1] = (-c[1] + sqrt(j)) / ( 2 * c[0]);
}
else {
xre[0] = xre[1] = -c[1] / (2 * c[0]);
xim[0] = sqrt(-j) / (2 * c[0]);
xim[1] = -sqrt(-j) / (2 * c[0]);
}
for(i=0; i<2; i++) {
printf("xre[%d] = %f xim[%d] = %f\n", i, xre[i], i, xim[i]);
}
return 0;
}
0818デフォルトの名無しさん
2007/10/08(月) 04:49:58助かりました
ありがとうございました
0819 ◆vLIz8KOkPM
2007/10/08(月) 11:25:23[2] 問題文
次の(1)(2) の処理を,この順に行うプログラムを作成しなさい
(1) ファイルから書籍データを読み込み,構造体に格納する.
ファイルは>>820
書籍データファイルのフォーマットは以下のように,「著者名, 書名, 出版社, 発行年」の4 つの属性がそれぞれカンマで区切られ,1 行に1 書籍のデータが格納されている.
H.M.Deitel & P.J.Deitel,C How to Program,Prentice Hall,2001
B.W.Kernighan & D.M.Ritchie,The C Programming Language,Prentice Hall,1988
(2) (1) で読み込んだ書籍データを発行年の昇順に並べ替え(すなわち,発行年の早いものほど前に来る),以下の形式でファイル(pro.txt)へ出力する.
各書籍データの区切りには空白行を1 つ入れること.
% ./kadai
% cat pro.txt
Author: B.W.Kernighan & D.M.Ritchie
Title: The C Programming Language
Publisher: Prentice Hall
Year: 1988
・
・
・
Author: M.Barr & A.Oram
Title: Programming Embedded Systems in C and C++
Publisher: O'Reilly & Associates
Year: 1999
%
[3.1] OS: Linux[3.2] コンパイラ名:gcc[3.3] 言語: c言語
[4]期限:2007年10月9日午前8時まで
[5]制限:構造体、配列、関数まで習いました
0820デフォルトの名無しさん
2007/10/08(月) 11:26:290821 ◆vLIz8KOkPM
2007/10/08(月) 11:26:35Title: The C Programming Language
Publisher: Prentice Hall
Year: 1988
Author: W.H.Press & B.P.Flannery & S.A.Teukolsky & W.T.Vetterling
Title: Numerical Recipes in C : The Art of Scientific Computing
Publisher: Cambridge University Press
Year: 1993
Author: G.M.Perry
Title: Absolute Beginner's Guide to C
Publisher: Sams
Year: 1994
Author: D.M.Etter
Title: Introduction to C
Publisher: Prentice Hall
Year: 1999
Author: M.Barr & A.Oram
Title: Programming Embedded Systems in C and C++
Publisher: O'Reilly & Associates
Year: 1999
0822デフォルトの名無しさん
2007/10/08(月) 11:28:50著名にカンマが含まれている場合は?
0823デフォルトの名無しさん
2007/10/08(月) 11:29:47>>819では
> 書籍データファイルのフォーマットは以下のように,「著者名, 書名, 出版社, 発行年」の4 つの属性がそれぞれカンマで区切られ,1 行に1 書籍のデータが格納されている.
って書いてあんのに,どうみてもフォーマットが違いますありがとうございました
0825 ◆vLIz8KOkPM
2007/10/08(月) 11:33:370827 ◆vLIz8KOkPM
2007/10/08(月) 11:37:56H.M.Deitel & P.J.Deitel,C How to Program,Prentice Hall,2001
J.R.Hanly & E.B.Koffman,Problem Solving and Program Design in C,Addison-Wesley,2002
D.M.Etter,Introduction to C,Prentice Hall,1999
H.H.Tan & T.B.D'Orazio,C Programming for Engineering and Computer Science,McGraw-Hill,2000
G.M.Perry,Absolute Beginner's Guide to C,Sams,1994
S.Prata,C Primer Plus,Sams,2001
S.P.Harbison III & G.L.Steele Jr.,C : A Reference Manual,Prentice Hall,2002
W.H.Press & B.P.Flannery & S.A.Teukolsky & W.T.Vetterling,Numerical Recipes in C : The Art of Scientific Computing,Cambridge University Press,1993
M.Barr & A.Oram,Programming Embedded Systems in C and C++,O'Reilly & Associates,1999
0828 ◆vLIz8KOkPM
2007/10/08(月) 11:39:01[2] 問題文
次の(1)(2) の処理を,この順に行うプログラムを作成しなさい
(1) ファイルから書籍データを読み込み,構造体に格納する.
ファイルは>>827
書籍データファイルのフォーマットは以下のように,「著者名, 書名, 出版社, 発行年」の4 つの属性がそれぞれカンマで区切られ,1 行に1 書籍のデータが格納されている.
H.M.Deitel & P.J.Deitel,C How to Program,Prentice Hall,2001
B.W.Kernighan & D.M.Ritchie,The C Programming Language,Prentice Hall,1988
(2) (1) で読み込んだ書籍データを発行年の昇順に並べ替え(すなわち,発行年の早いものほど前に来る),以下の形式でファイル(pro.txt)へ出力する.
各書籍データの区切りには空白行を1 つ入れること.
% ./kadai
% cat pro.txt
Author: B.W.Kernighan & D.M.Ritchie
Title: The C Programming Language
Publisher: Prentice Hall
Year: 1988
・
・
・
Author: S.P.Harbison III & G.L.Steele Jr.
Title: C : A Reference Manual
Publisher: Prentice Hall
Year: 2002
%
[3.1] OS: Linux[3.2] コンパイラ名:gcc[3.3] 言語: c言語
[4]期限:2007年10月9日午前8時まで
[5]制限:構造体、配列、関数まで習いました
0829デフォルトの名無しさん
2007/10/08(月) 11:42:50このスレは画像処理系の問題も質問してよろしいのでしょうか?
0830デフォルトの名無しさん
2007/10/08(月) 11:51:310831 ◆OJTev..Ns6
2007/10/08(月) 11:59:22削除ができるプログラミングを作成
[2] 環境
[2.1] OS:Windows
[2.2] コンパイラ名とバージョン:VC2005
[2.3] 言語: C
[3] 期限:できれば早目でオナガイ(´д`;)
(´д`)マッタクモッテワカリマセン
void InsertNode(List *list,char name,int sex,int age,int birth,int zipcode,char addr, int *tell)
{
Index ptr = Top;
Top = GetIndex(list);
SetNode(&list->n[Top], name,sex,age,birth,zipcode,addr,tell,ptr);
}
中略
int main(void)
{
Menu menu;
List list;
InitList(&list,100);
do{
Node x;
switch (menu = SelectMenu())
{
case Insert: x = Read("挿入");
InsertNode(&list,x.name,x.sex,x.age,x.birth,x.zipcode,x.addr,x.tell);
break;
エラーMSG
mainのInsertNodeの
8 番目の引数を 'int' から 'int *' に変換できません。(新しい機能 ; ヘルプを参照)
整数型からポインタ型への変換には reinterpret_cast、C スタイル キャストまたは関数スタイル キャストが必要です。
0832デフォルトの名無しさん
2007/10/08(月) 12:04:41の回答がまだないようだ…この問題でスレの品格が問われるのだが…
0833デフォルトの名無しさん
2007/10/08(月) 12:08:37そういう偉そうなことが言えるんなら、お前が解いてやれよw
0834デフォルトの名無しさん
2007/10/08(月) 12:16:21直リンしてみた
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5022.c
0835デフォルトの名無しさん
2007/10/08(月) 12:17:27問題文に中略とか使って説明省くような奴は今すぐ死んで教官に絞られて来い
0836デフォルトの名無しさん
2007/10/08(月) 13:08:09あっ、ごめ。勘違いしてC++で書いちゃった。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5023.txt
0837 ◆vLIz8KOkPM
2007/10/08(月) 13:10:49初心者でも理解しやすいプログラム(forとかifを使用して、mallocなどを使わず、構造体をシンプルに
struct bookdate{
char author[256]
char title[256]
char publisher[256]
int year
};
みたいな感じで書いていただけないでしょうか……?
0838デフォルトの名無しさん
2007/10/08(月) 13:16:51char *author,
*title,
*publisher;
int published_date;
} cite;
のほうがシンプルだと思うが
0839 ◆vLIz8KOkPM
2007/10/08(月) 13:18:36typedef struct _cite{
char *author,
*title,
*publisher;
int published_date;
} cite;
が理解できないんです・・・
0840デフォルトの名無しさん
2007/10/08(月) 13:24:26その問題文じゃ何も作れん。
サンプルコードも含めて問題全体をどっかにアップするなりしてくれ
0841デフォルトの名無しさん
2007/10/08(月) 13:26:32全く難解じゃないから少し勉強しろ
0842デフォルトの名無しさん
2007/10/08(月) 13:30:00間違ってC++で書いちゃったので、シンプルなCに書き換えました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5024.txt
0843デフォルトの名無しさん
2007/10/08(月) 13:55:400844デフォルトの名無しさん
2007/10/08(月) 14:02:07>void InsertNode(List *list,char name,int sex,int age,int birth,int zipcode,char addr, int *tell)
こんな引数だし。名前一文字か、っていう
エラー書いてあるし、多分書きかけの
0845デフォルトの名無しさん
2007/10/08(月) 14:08:18とりあえず書いてみて。
0846 ◆OJTev..Ns6
2007/10/08(月) 14:08:54問題 構造体を使用して”名前、性別、年齢、生年月日、郵便番号、住所、電話番号を表示させる
又、データの追加、削除ができるこでき一覧表示は各項目でソートされていること
0847デフォルトの名無しさん
2007/10/08(月) 14:10:09C++でも良いですか?私の今の気分はC++なんですが・・・(´・ω・`)
0848デフォルトの名無しさん
2007/10/08(月) 14:10:57なんか>>831の後ろに付いてるソースコードは無視して良いの?
0849デフォルトの名無しさん
2007/10/08(月) 14:13:40それ機能要件じゃん
本当にいいのか?
0850 ◆OJTev..Ns6
2007/10/08(月) 14:30:45すみません。。。Cで指令が出てるもんで(´・ω・`)
>>848
問題ないです(^ω^)
>>849
機能要件??
すみません、まだまだ未熟ですのでわからないですorz
0851 ◆OJTev..Ns6
2007/10/08(月) 14:35:460852デフォルトの名無しさん
2007/10/08(月) 14:39:32了解です。では私の気分をCに切り替えます。
0853デフォルトの名無しさん
2007/10/08(月) 14:41:14ちなみに年齢は、生年月日と今日の日付から算出可能。
というかそうすべきだと思うのですが・・・(´・ω・`)
0854デフォルトの名無しさん
2007/10/08(月) 14:49:09色々突っ込みどころが満載なわけだが
> 問題 構造体を使用して”名前、性別、年齢、生年月日、郵便番号、住所、電話番号を表示させる
> 又、データの追加、削除ができるこでき一覧表示は各項目でソートされていること
・構造体を使用することで,何かを表示させることはできない
・「データの追加,削除」のデータが曖昧.名前?性別?…それとも構造体?
・「一覧表示は各項目でソートされていること」はそもそも日本語おかしい
0855デフォルトの名無しさん
2007/10/08(月) 14:51:430856デフォルトの名無しさん
2007/10/08(月) 14:54:05>>1
0857デフォルトの名無しさん
2007/10/08(月) 15:11:28[2] 問題文(含コード&リンク):
原点(0,0)から初めて。<なら(左へ1移動) >なら(右へ1移動) ^なら(上へ1移動) vなら(小文字のvで下へ1移動)
を入力して最後にどこにいるかを出力するプログラムを作成する
入力例
<^^>>v<^v>
出力例
(1,1)
[3] 環境
[3.1] OS:xp
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: なし
0858デフォルトの名無しさん
2007/10/08(月) 15:15:50上、右が正方向でいいのか?
0859デフォルトの名無しさん
2007/10/08(月) 15:16:30ぶっちゃけ、どっちがいい?
0860デフォルトの名無しさん
2007/10/08(月) 15:16:45int main(void){
int x, y;
char buf[1024+1], *p;
scanf("%1024s", buf);
for(x=y=0, p=buf;*p!='\0';p++)
switch(*p){
case '<': x--; break;
case '>': x++; break;
case '^': y--; break;
case 'v': y++; break;
}
printf("(%d,%d)\n",x,y);
}
0861デフォルトの名無しさん
2007/10/08(月) 15:19:390862デフォルトの名無しさん
2007/10/08(月) 15:21:070863デフォルトの名無しさん
2007/10/08(月) 15:30:38[2] 問題文(含コード&リンク):
�@ 10進数を2進数に変換するプログラムと
�A 2進数を10進数に変換するプログラムを作れ
ただし最初の入力で1を入力すれば�@を2を入力すれば�Aを
例1
2進数変換or10進数変換 (2or10)->2
2進数に変換したい数字を入力してください->4
100
例2
2進数変換or10進数変換 (2or10)->10
10進数に変換したい数字を入力してください->100
4
[3] 環境
[3.1] OS:xp
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: なし
連続ですみません
0864デフォルトの名無しさん
2007/10/08(月) 15:32:28入力する数値の制限はないのか?
・負数ならどうなる?
・100万桁ならどうなる?
・無限大は入力できる?
とか
0865デフォルトの名無しさん
2007/10/08(月) 15:33:470866デフォルトの名無しさん
2007/10/08(月) 15:35:50負数は無いものとして
入力桁数は
両方10桁でお願いします
0867デフォルトの名無しさん
2007/10/08(月) 15:46:023行目の「ただし最初の入力で1を入力すれば�@を2を入力すれば�Aを」ですが
「ただし最初の入力で2を入力すれば�@を10を入力すれば�Aを」の間違いでした
すみません
0868デフォルトの名無しさん
2007/10/08(月) 16:22:08[2] 問題文(含コード&リンク): データベースを作成しなさい。(詳しくは下で)
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: gcc または VC++
[3.3] 言語: C
[4] 期限: 10/09 13:00 (10/12 16:00最終期限)
[5] その他の制限:
・検索、挿入、削除、変更、ソート、出力の6機能を備えること。
・出力は標準出力、入力は標準入力を使うこと。
・挿入、削除、変更が行われる度に、データベースファイルを更新すること。
・検索はレコードの各項目に対して行えること。検索結果は20件を超える場合は20件ずつ表示すること。
・検索結果を表示する際、前の20件表示、次の20件表示、検索結果から1件選んで削除・変更・出力できること。
・必要ならば作業ファイルを作成してもよい。ただし、プログラム終了時には削除すること。
・挿入は先頭、末尾、番号指定で行えること。
・削除は全体から番号指定で1件削除、検索結果の全件削除ができること。
・ソートはレコードの各項目に対して行えること。また、昇順・降順を選択できること。
・データベースはファイルに保存されること。ファイル名はDATABASE.TXTとする。
・レコードは480Byte固定長、先頭から次の順に定義する。(*は入力時省略可、+は入力させない事を意味する。)
削除フラグ+:半角数字1桁(初期値0、削除されたら1に変更) 書名:半角80字(全角40字) シリーズ*:半角80字(全角40字) 巻数*:半角数字3桁(000〜999、省略時999)
著者:半角80字(全角40字) 出版社:半角80字(全角40字) レーベル*:半角50字(全角25字)(省略時はXで埋める)
初版発行日:半角数字8桁(2007年1月1日ならば20070101) 価格:半角数字6桁(480円ならば000480、4ドル95セントなら100495)
ISBN:半角数字13桁(10桁の場合は余りを空白で埋める)
登録日時+:半角数字14桁(2007年1月1日0時30分59秒ならば20070101003059。操作時にシステム時計をみて自動的に記録。)
更新日時+:半角数字14桁(同上) 予約領域:52Byte(Xで埋める)
0869デフォルトの名無しさん
2007/10/08(月) 16:28:41わざわざ読みにくくするなよ・・・
結局ファイルフォーマットとデータフォーマットはどーなってんの
0870デフォルトの名無しさん
2007/10/08(月) 16:40:05・レコードは480Byte固定長、先頭から次の順に定義する。
(*は入力時省略可、+は入力させない事を意味する。)
削除フラグ+:半角数字1桁(初期値0、削除されたら1に変更。)
書名 :半角80字(全角40字)
シリーズ* :半角80字(全角40字)
巻数* :半角数字3桁(000〜999、省略時999)
著者 :半角80字(全角40字)
出版社 :半角80字(全角40字)
レーベル* :半角50字(全角25字)(省略時はXで埋める)
初版発行日 :半角数字8桁(2007年1月1日ならば20070101)
価格 :半角数字6桁(480円ならば000480、4ドル95セントなら100495)
ISBN :半角数字13桁(10桁の場合は余りを空白で埋める)
登録日時+ :半角数字14桁(2007年1月1日0時30分59秒ならば20070101003059。操作時にシステム時計をみて自動的に記録。)
更新日時+ :半角数字14桁(同上)
予約領域 :52Byte(Xで埋める)
ファイルフォーマットは区切り無くレコードを連続記録したものでOKです。
特に指定されてなければ、余りは空白で埋めます。
0871デフォルトの名無しさん
2007/10/08(月) 16:43:260872デフォルトの名無しさん
2007/10/08(月) 16:44:47[1] 授業単元:
[2] 問題文(含コード&リンク): ランダムに何文字かのアルファベットを入力したとき、
そこに含まれる母音の種類(a,i,u,e,o)と、
その総数を表すプログラム。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC++ 2005
[3.3] 言語: C++
[4] 期限: 明日まで
[5] その他の制限: なし
よろしくお願いします
0873デフォルトの名無しさん
2007/10/08(月) 16:48:43入力例と出力例をお願いします
0874デフォルトの名無しさん
2007/10/08(月) 16:53:59母音の種類:
その総数:0
0875デフォルトの名無しさん
2007/10/08(月) 16:55:160876デフォルトの名無しさん
2007/10/08(月) 16:56:500877デフォルトの名無しさん
2007/10/08(月) 16:58:440878872
2007/10/08(月) 17:05:50こんな感じでお願いします
//アルファベットを入力してください
How are you?
//母音は o a e o u です
//5 個の母音が含まれています
0879デフォルトの名無しさん
2007/10/08(月) 17:07:390880デフォルトの名無しさん
2007/10/08(月) 17:10:27つまり aiueo aiueo aiueo
なら
母音はaiueoaiueoaiueo
15 個の母音が含まれています
ってのでいいのね
0881デフォルトの名無しさん
2007/10/08(月) 17:12:130882デフォルトの名無しさん
2007/10/08(月) 17:13:16main(){int i,j,r;char s[80],c[10]={'a','i','u','e','o','A','I','U','E','O'};
while(1){r=0;scanf("%s",s);for(i=0;i!=80,s[i]!=0;i++)for(j=0;j!=10;j++)if(s[i]
==c[j])r++;printf("%d\n", r);}}
0884872
2007/10/08(月) 17:25:23正直、よく分かりません
>>882
すいません、エラー1です
// 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートし// ていません
0885デフォルトの名無しさん
2007/10/08(月) 17:49:47main()→int main()
0886デフォルトの名無しさん
2007/10/08(月) 17:50:18すまない、Cだと思ってた。C++でやりなおした。
#include <iostream>
int main()
{
const int B=5,L=80;
char s[L],c1[B]={'a','i','u','e','o'},c2[B]={'A','I','U','E','O'};
while(1)
{
int i,j,r[B];
std::cin >> s;
for(i=0;i!=B;i++) r[i]=0;
for(i=0;i!=L&&s[i]!=0;i++)
{
for(j=0;j!=B;j++) if(s[i]==c1[j]||s[i]==c2[j])r[j]++;
}
std::cout << "含まれてるボイン";
for(j=0;j!=B;j++) if(r[j]!=0) std::cout << c1[j]; cout << std::endl;
std::cout << "その数" << r[0]+r[1]+r[2]+r[3]+r[4] << std::endl;
}
return 0;
}
0887872
2007/10/08(月) 18:08:11ありがとうございました
しかしエラー3と出てしまいます
// (16) : error C2065: 'cout' : 定義されていない識別子です。
// (16) : error C2563: 仮パラメータ リストまたは関数へのポインタが、適合していません。
// (16) : error C2568: '<<' : オーバーロード関数のうち、どれを呼び出すのか決定できません。
0888デフォルトの名無しさん
2007/10/08(月) 18:09:170889デフォルトの名無しさん
2007/10/08(月) 18:09:36自分でも少しくらいチェック汁
std::cout
0890デフォルトの名無しさん
2007/10/08(月) 18:13:45[2] 問題文(含コード&リンク):
RC回路(4端子)のVo/Viと周波数fの関係を図示せよ。(Vo/Viは縦軸、周波数fは横軸)
R = 1kΩ、 C = 1μF
Vo/Vi = 1 / (1 + jωCR)
周波数fは、1、3、5、7、10、30、50、70、100・・・と増やしていく。
Cで計算した結果をExcelでグラフ化する。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 10月10日まで
[5] その他の制限:なし
よろしくお願いします
0891872
2007/10/08(月) 18:19:36ありがとうございました
0892デフォルトの名無しさん
2007/10/08(月) 18:55:19参考URLが欲しいところ
0893890
2007/10/08(月) 19:06:44|____
| \
| \
| \
| \
| \
| \
| \
| \
| \_____
|______________________f
0894890
2007/10/08(月) 19:09:36Excelで表したとき>>893のようなグラフが出来上がれば成功です
紙面で出された課題ですのでURLはありません
0895デフォルトの名無しさん
2007/10/08(月) 19:36:04[2] 問題文(含コード&リンク):15+6,20÷5,10*8,12*(5+10),10+2の計算問題で答えを入力して
最後に正解数を表示させる。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限:早めにお願いします
0896デフォルトの名無しさん
2007/10/08(月) 19:36:30永遠の17歳とか閣下とか聖徳太子とかが困る
0897852
2007/10/08(月) 19:44:03とりあえず私の読解力の限界にチャレンジしつつ、問題を解釈し
組んでみました。
久しぶりのCなので、ちょっと変かもしれません。
って、もう遅かったかな?
( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5026.txt
0898デフォルトの名無しさん
2007/10/08(月) 19:57:21#include<stdio.h>
#include<math.h>
int main(void){
const double R=1.0e+3, C=1.0e-6;
double Vo_Vi; // Vo / Vi
double f, omega, r;
int i, j, table[]={1,3,5,7};
for(i=1;i<=5;i++){
r = pow(10.0, i);
for(j=0;j<sizeof(table)/sizeof(*table);j++){
f = table[j] * r; // 周波数
omega = 2 * M_PI * f; // 周波数 → 角速度 変換
Vo_Vi = 1.0 / (1.0 + cos(omega * C * R)); // 注意!cos が -1 の時除算エラー
printf("%f , %.3e\n", f, Vo_Vi);
}
}
return 0;
}
0899デフォルトの名無しさん
2007/10/08(月) 20:08:27[2] 問題文(含コード&リンク):
�@ 10進数を2進数に変換するプログラムと
�A 2進数を10進数に変換するプログラムを作れ
ただし最初の入力で2を入力すれば�@を10を入力すれば�Aを
負数は無いものとし
入力桁数は両方10桁
例1
2進数変換or10進数変換 (2or10)->2
2進数に変換したい数字を入力してください->4
100
例2
2進数変換or10進数変換 (2or10)->10
10進数に変換したい数字を入力してください->100
4
[3] 環境
[3.1] OS:xp
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 無期限
[5] その他の制限: なし
よろしくお願いしますお願いします
0901デフォルトの名無しさん
2007/10/08(月) 20:59:01こんな感じでよろしいでしょうか?
( ´∀`)つttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5027.txt
0902デフォルトの名無しさん
2007/10/08(月) 21:01:0010桁の入力可
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5028.c
0903デフォルトの名無しさん
2007/10/08(月) 21:02:23なんで回答が着きにくいかってーと
Excelで図形を表示するとこまで頑張ると,COMつかわにゃならんからだ.
せめて数値計算だけでとどめて欲しい
0904デフォルトの名無しさん
2007/10/08(月) 21:19:27こんな多機能なものを標準入力から操作するって、正気とは思えん。
> ファイルフォーマットは区切り無くレコードを連続記録したものでOKです。
連続記録したものでなくてもOKてことか?更新毎に(順番を保持しつつ)ファイルに書き出すってことなら
連続記録だといちいちファイル全上書きになって非効率なんだが。
まあ12日までなら小細工してるヒマないかもだけどな。
0905890
2007/10/08(月) 21:22:00失礼しました
Excelはこちらでやりますので、Cで数値を示すところまでかまいません
>>898では、計算結果がおかしいので困っています。力を貸していただけると助かります
私の解釈が間違ってたらすいません
0906デフォルトの名無しさん
2007/10/08(月) 21:25:35どう見ても固定長レコードでseekや何かを使えってこったろ
削除は元のレコードに削除フラグを立てるだけ
更新は元のレコードだけを書き換える
挿入はケツに追加していくだけ
性能要件は無いから、仕様を満たすだけならインデクスを保守する必要は
ないだろうが、やれば評価は高くなるだろうな
0907デフォルトの名無しさん
2007/10/08(月) 21:31:36いやね、
> ・挿入は先頭、末尾、番号指定で行えること。
これがいやらしいとは思わんかw
0908デフォルトの名無しさん
2007/10/08(月) 21:35:00なるほど、すまん。それを見落としていたぜ。
0909895
2007/10/08(月) 21:36:24わかりません。
どなたか教えてください('A`)
0910デフォルトの名無しさん
2007/10/08(月) 21:41:46レス大変遅れて申し訳ありません。
本当にありがとうございました。
0911デフォルトの名無しさん
2007/10/08(月) 21:48:08#include<stdio.h>
int main(void)
{
typedef struct {
char* ques;
double ans;
} DATA;
DATA data[] = {{"15+6", 15+6}, {"20÷5", 20/5}, {"10*8", 10*8}, {"12*(5+10)", 12*(5+10)}, {"10+2", 10+2}};
int i, sum;
double input;
for(i=0, sum=0; i<sizeof(data)/sizeof(data[0]); i++)
{
printf("問題%d\n%s = ", i+1, data[i].ques);
scanf("%lf", &input);
if(input == data[i].ans)
{
printf("正解!\n");
sum++;
}
else
{
printf("不正解!\n");
}
}
printf("正解数:%d\n", sum);
return 0;
}
0912デフォルトの名無しさん
2007/10/08(月) 21:58:11#include<stdio.h>
#include<math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
int main()
{
const double ConstR = 1.0e+3, ConstC = 1.0e-6;
for (int i = 1; i <= 5; ++i) {
const int table[] = {1, 3, 5, 7, };
for (int j = 0; j < sizeof(table) / sizeof(* table); ++j) {
const double f = table[j] * pow(10, i); // 周波数
const double omegaCR = 2 * M_PI * f * ConstC * ConstR;
const double Vo_Vi = 1.0 / sqrt(1.0 + omegaCR * omegaCR);
printf("%g, %g\n", f, Vo_Vi);
}
}
return 0;
}
0913デフォルトの名無しさん
2007/10/08(月) 22:03:440914デフォルトの名無しさん
2007/10/08(月) 22:06:43気のせいです
0915912
2007/10/08(月) 22:10:280917デフォルトの名無しさん
2007/10/08(月) 22:19:35#define R (1*1.0e+3)
#define C (1*1.0e-6)
typedef struct _complex{ double r, i; } complex;
complex constructor(double r, double i){ complex _={r, i}; return _; }
double cabs(complex v){ return v.r*v.r+v.i*v.i; }
complex inverse(complex v){ double den=cabs(v); complex _={v.r/den, -v.i/den}; return _; }
complex VoVi(double freq){ return inverse(constructor(1, freq*C*R)); }
int main(void){
int freqBase;
int freqPer;
printf("freq(rad), Real(VoVi), Img(VoVi), Gain(VoVi)\n");
for(freqPer=1; freqPer<1.0e+9 ; freqPer*=10)
for(freqBase=1; freqBase<=7; freqBase+=2){
complex _=VoVi(freqBase*freqPer);
printf("%d, %10.10f, %10.10f, %10.10f\n", freqBase*freqPer, _, cabs(_));
}
}
こうか?
最近電気回路とか忘れた
0918デフォルトの名無しさん
2007/10/08(月) 22:30:22今後の勉強のために、添削また別解などをここでお願いすることは出来るのでしょうか?
0919デフォルトの名無しさん
2007/10/08(月) 22:32:25http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5031.zip
これでよかったら使え
0920デフォルトの名無しさん
2007/10/08(月) 22:36:40いいと思うよ。
ただ、そういう事情だと書いておいてくれると、切羽詰ってる
課題との優先順位がついて、助かる人がいるかもしれない。
0921デフォルトの名無しさん
2007/10/08(月) 22:40:42習ったところはif文とfor文、switch文とcontinue文まで習いました。
for文を一回か、二重ループにしないといけないのでわからないです。
どなたかわかる方、お願いします。
西暦と月を入力すると,以下のようなカレンダーを出力するプログラムを作成せよ.
例として,2007年7月のカレンダーを示す.
ヒント
1.閏年(うるうどし)にも対応すること.
1.西暦年が4で割り切れる年は閏年
2.ただし、西暦年が100で割り切れる年は平年
3.ただし、西暦年が400で割り切れる年は閏年
2.指定された年,月の一日(ついたち)の曜日を求めると良い.曜日を求めるには,Zellerの公式を使う.年も月も整数型の変数を用い,日の部分は1に置き換えること.
(年+年/4-年/100+年/400+(13*月+8)/5+日 )%7
1月と2月は前年の13月,14月として考える.
この式の答えと曜日の関係は以下の通り.
0:日曜日,1:月曜日,2:火曜日....,6:土曜日
3.色付け
printf("\033[31m%d",x);と記述すれば,変数xを赤で表示する.
printf("\033[34m%d",x);と記述すれば,変数xを青で表示する.
printf("\033[0m%d",x);と記述すれば,変数xを標準設定で表示する.
一度色指定すれば,次に色指定するまで設定が反映されることに注意する.
0922デフォルトの名無しさん
2007/10/08(月) 22:42:35C言語です。すいません
0923デフォルトの名無しさん
2007/10/08(月) 22:46:10>>1
0924デフォルトの名無しさん
2007/10/08(月) 22:48:46OSはknoopixEdu6をつかってます
0925デフォルトの名無しさん
2007/10/08(月) 22:51:32[2] 問題文(含コード&リンク):マクロ定義、サブ関数を使った四字熟語の読みをキーボード入力する課題
一刻千金( いっこくせんきん)
一騎当千( いっきとうせん)
一朝一夕 (いっちょういっせき)
if文,for文,while文,do文,switch文の五つの文を複数使うのが条件。(できれば全部です。
補足:無駄に長いプログラミングになっても大丈夫です。
[3] 環境
[3.1] OS:xp
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語: C
[4] 期限: 10月10日
[5] その他の制限: なし
よろしくお願いします(ペコリ
0926デフォルトの名無しさん
2007/10/08(月) 22:52:43他の質問者のように>>1のテンプレートに内容をを当てはめて質問するように
0927デフォルトの名無しさん
2007/10/08(月) 22:53:47エスパーが必要な書き方するな。
0928デフォルトの名無しさん
2007/10/08(月) 23:02:560929デフォルトの名無しさん
2007/10/08(月) 23:14:28ありがとうございます。
[1] 授業単元:プログラミング�T
[2] 問題文:下図の左のグラフ(頂点と辺からなる図)で、出発点を1とする一筆書きの書き順を全パターン生成しなさい。
[3] 環境
[3.1] OS:Windows XP(自宅) / Linux(学校)
[3.2] コンパイラ名とバージョン:Visual C++ 2005 Express Edition(自宅)
[3.3] 言語:C
[4] 期限:無期限
プログラミング歴約3ヶ月、教科書に柴田望洋著 明解C言語 入門編を使用おり、現在第七章まで学習が進んでいます。
この課題は既に提出済みなので、期限は存在しません。
ここにお願いしましたのは、今後の勉強のために、皆様にご指導いただけたらと思った次第であります。
アップロードしたファイルの中身は
・問題の詳細(画面をキャプチャしたファイルです)
・自分が作ったソースコード
・問題に対する考察
などが入っています。
添削や別解の案などがありましたらご教授下さい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5033.zip
0930デフォルトの名無しさん
2007/10/08(月) 23:14:31問題を少し変えます。
次の読みは何と読むでしょうか?
問題1:一刻千金
1:いっこくせんきん
2:いっこくせんかね
3:いっかくせんきん
上の文を表示させ、答えは「1」と正解番号をキーボード入力するようにしたいです
問題2:一騎当千
1.いっきとうせん
2.いっきせんとう
3.いっきうち
答え1
わかりにくいことをだらだらと書いて申し訳ございません。
0931デフォルトの名無しさん
2007/10/08(月) 23:18:060932デフォルトの名無しさん
2007/10/08(月) 23:21:08[2] 問題文(含コード&リンク):
数字を入力してそのひとつひとつを配列の中に入れる
入力される数字の桁数は不特定である
配列の要素は入力された数字がちょうど収まるようにする
配列に入れるのみで出力はしない
入力例
12345
これを
1 2 3 ・・・・・・
a[0] a[1] a[2] ・・・・・・
となるようにする
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:なし
[5] その他の制限: なし
0933デフォルトの名無しさん
2007/10/08(月) 23:21:42#include<stdio.h>
#include<stdlib.h>
int is_leap(int year){
return (year%400==0 || (year%100!=0 && year%4==0));
}
int week_day(int year, int month, int day){
if(month<=2) year--, month+=12;
return (year+year/4-year/100+year/400+(13*month+8)/5+day)%7;
}
int end_day(int year, int month){
int day_list[]={31,28,31,30,31,30,31,31,30,31,30,31};
if(month==2) return day_list[month-1]+is_leap(year);
return day_list[month-1];
}
int main(int argc, char *argv[]){
int year=2007, month=10, first_week_day, month_day;
int i, color_table[]={31,0,0,0,0,0,34};
if(argc>=2) year=atoi(argv[1]);
if(argc>=3) month=atoi(argv[2]);
first_week_day=week_day(year, month, 1);
month_day=end_day(year, month);
for(i=0;i<first_week_day;i++) printf("%*s", 3, "");
for(i=0;i<month_day;i++){
if( (first_week_day+i)%7==0 && i>0) printf("\n");
printf(" \033[%dm%2d", color_table[(first_week_day+i)%7], i+1);
}
printf(" \033[m");
return 0;
}
0934デフォルトの名無しさん
2007/10/08(月) 23:23:41不可能です
0935デフォルトの名無しさん
2007/10/08(月) 23:26:390936デフォルトの名無しさん
2007/10/08(月) 23:32:05#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
char buf[20+1], buf_len;
int *array=NULL, array_size=0, i;
while(fscanf(stdin, "%20[0-9]", buf)==1){
buf_len=strlen(buf);
array=realloc(array, sizeof(*array)*(array_size+buf_len));
for(i=0;i<buf_len;i++) array[array_size+i]=buf[i]-'0';
array_size+=buf_len;
}
printf("\nInfo: array size is %d\n", array_size);
return 0;
}
0938デフォルトの名無しさん
2007/10/08(月) 23:39:120939デフォルトの名無しさん
2007/10/08(月) 23:41:29何で微妙に大丈夫な数を挙げるんだよw
0940デフォルトの名無しさん
2007/10/08(月) 23:41:42入力してから配列を決めるので不特定にしたのですがそれだとできないということなので
桁数は20未満
20未満で入力された数に対しちょうど収まる配列を作ってそれに一桁ずつ入れていく
というのでどうでしょうか
0941デフォルトの名無しさん
2007/10/08(月) 23:56:07プログラマ暦25年のおっさんはちょっと感動したw
0942デフォルトの名無しさん
2007/10/09(火) 00:07:56ホラヨ
最近のgccなら通るだろ。
ムリならコンパイルオプションに「-std=c99」を追加。
そのオプション無かったらgccが古い。
しかしこいつは本当に出された課題の問題文そのままか?
C99な環境で宿題出す先生なんざ殴っていいと思う。
#include <stdio.h>
#include <string.h>
int main()
{
char tmp[32];
int i;
fgets(tmp,30,stdin);
for(i = 0;i < strlen(tmp);i++){
if(tmp[i] == '\r' || tmp[i] == '\n'){
tmp[i] = '\0';
break;
}
}
char buf[strlen(tmp)];
for(i = strlen(tmp) - 1;i >= 0 ;i--)buf[i] = tmp[i];
//for(i = 0;i < sizeof(buf);i++) printf("[%d]:%c\n", i, buf[i]); //sample output
return 0;
}
あー・・・今気づいたが、配列に入れる「数字」が「数値(intとか?)」のことなら、
テケトーに改変してくれ。
0943デフォルトの名無しさん
2007/10/09(火) 00:54:05ちょw1億じゃなくて1億桁w
多倍長演算ライブラリでもさすがに無理じゃね?
0944デフォルトの名無しさん
2007/10/09(火) 00:58:34[2] 問題文(含コード&リンク):3つの四字熟語の読みをキーボード入力すること。
読みが正解なら正解、間違いなら不正解と表示させたいです。
1、一刻千金 (いっこくせんきん)
2、一騎当千 (いっきとうせん)
3、一朝一夕 (いっちょういっせき)
C言語歴1ヶ月の自分が分かるプログラムにしてくれると嬉しいです。
if文、for文、switch文,while文,do文は一通り学習しましたが
組み合わせ方がわかりません;
[3] 環境
[3.1] OS:windows xp
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 10月9日
[5] その他の制限: なし
わかりにくい書き方、無駄なレスを付けてしまい本当に申し訳ありません;
0945デフォルトの名無しさん
2007/10/09(火) 02:08:31#include<stdio.h>
#include<string.h>
main()
{
int n=1,h=0,x;
char in[1000];
char *q[3]={"一刻千金","一騎当千","一朝一夕"};
char *a[3]={"いっこくせんきん","いっきとうせん","いっちょういっせき"};
printf("読みがなを入力しなさい。\n");
while(n<=3){
printf("問 %d: %s\n",n,q[n-1]);
scanf("%s",in);
if(!strcmp(in,a[n-1]))
printf("正解\n");
else
printf("不正解\n");
x=getchar();
n++;
}
}
ありがとうございます!!
すごいです☆
ちなみに、コンパイラは何を使っているのですか?
0948デフォルトの名無しさん
2007/10/09(火) 02:19:54問い合わせてみたところ、以下のような回答がありました。
「ブブー。それ不許可。必ずレコード連続記録。ファイルサイズが480の倍数にならないと減点対象だからね。」
「非効率でもいいから仕様通りに作っといて。僕なら絶対に末尾へ挿入以外は使わないけど。」
0949デフォルトの名無しさん
2007/10/09(火) 03:19:440950852
2007/10/09(火) 05:08:01gcc3.4で試しました。
VC2005は持ってないので試してません。エラーが出たらメッセージを
貼ってもらえれば、お手伝いできるかもしれません。
0951デフォルトの名無しさん
2007/10/09(火) 12:32:02[2] 問題文(含コード&リンク):1から100までの数字をランダムで一つだけ表示せよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C
[4] 期限: 2007/10/9
[5] その他の制限: 自分でやってみましたが実行すると一回目はランダムで数字が選ばれるのですが、何度も実行すると10、9、8、7のように数字がランダムではなく一つずつ選ばれる数字が小さくなるだけでランダムになりません。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NUM 100
int main(void)
{
int a[NUM],i,index;
for(i=0;i<NUM;i++)
a[i]=i+1;
srand((unsigned)time(NULL));
index=rand()/(RAND_MAX + 1.0)*(NUM-1);
printf("%d\n",a[index]);
return(0);
}
0952デフォルトの名無しさん
2007/10/09(火) 12:45:50srand((unsigned)time(NULL));というのは処理系によって
rand()の発生系列をどのように変えるのか違うけど、BCC5.5の
場合はその通りたまたま1秒に1ずつ減っていくように計算結果が
変わるだけでしょう。
不満なら
srand((unsigned)time(NULL));
srand((unsigned)rand());
とでもすればよい。
0953デフォルトの名無しさん
2007/10/09(火) 12:52:430954デフォルトの名無しさん
2007/10/09(火) 13:09:59>index=rand()/(RAND_MAX + 1.0)*(NUM-1);
rand()/(RAND_MAX + 1.0)は0以上1未満の実数を出すので、これをNUM-1にかけるとNUM-2までの数しかでない
index=rand()/(RAND_MAX + 1.0)*NUM;
こうすると0以上NUM未満(NUM-1以下)のNUM個の数が出る
>for(i=0;i<NUM;i++)
a[i]=i+1;
>printf("%d\n",a[index]);
→printf("%d\n",index+1);
>>953
ループ内じゃないだろ
0955sage
2007/10/09(火) 14:15:29[2] 問題文(含コード&リンク):
あるクラスの10人の国語、数学、理科、社会、英語の点数のデータをまとめたファイルがある。
(japanese.dat,math.dat,science.dat,sociology.dat,english.dat)。
ファイル名を入力するとそのファイルの点数データを読み出し、
画面に出力する。ファイル名を入力する前に、入力するファイル数を入力し、
そのファイル数だけ操作を繰り返し行う。最後に入力したファイル名の点数と
人毎の平均点をdataout.datに出力するプログラムを作成せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] cygwin
[3.3] C++
[4] 今日中
入出力はファイルで行います。
期限が迫っていますが全くわかりません。。どなたかよろしくお願いします
C++です。
0956デフォルトの名無しさん
2007/10/09(火) 14:37:450957デフォルトの名無しさん
2007/10/09(火) 14:59:40[2] 問題文(含コード&リンク):24文字のメッサージュを復元するための受信データ数を計算し、必要な受信データをデータファイルから配列に読み込み、ユーザーMの拡散符号と受信信号を利用して、情報シンボルを復元するプログラム。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 本日の19時。
[5] その他の制限: 直交系列に関する問題です。不明点は質問され次第答えます。よろしくお願いします。
0958デフォルトの名無しさん
2007/10/09(火) 15:17:34ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5035.cpp
0959デフォルトの名無しさん
2007/10/09(火) 15:19:39申し訳ありませんでした。1,2項とは問題のことでした。それを書いてなかったので解けるはずありませんでした。
[1] 授業単元: プログラミング
[2] 問題文:1,2項の行列とベクトルx[3](成分(1,5,10))の積と表示
1,以下の3×3行列(2次元変数)を作る(for文を用いる)
0 1 2
a[i][j]=10 11 12
20 21 22
2,3×3の単位行列a[3][3]を作って表示する
この2つ(1,2項)を使って問題文の1,2項の行列とベクトルx[3](成分(1,5,10))の積と表示してください
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: ([2007年10月9日16:30まで]
[5] その他の制限: for,if,caseなどは習いました。
すいませんでした。多いですがお願いします。
0960デフォルトの名無しさん
2007/10/09(火) 15:55:051,
#include<stdio.h>
void main()
{
int a[3][3],i,j;
a[0][0]=0;a[0][1]=1;a[0][2]=2;
a[1][0]=10;a[1][1]=11;a[1][2]=12;
a[2][0]=20;a[2][1]=21;a[2][2]=22;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf(" %d",a[i][j]);
}
printf("\n");
}
}
0961デフォルトの名無しさん
2007/10/09(火) 15:57:25ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5038.c
0962デフォルトの名無しさん
2007/10/09(火) 15:58:121,
#include<stdio.h>
void main()
{
int a[3][3],i,j;
a[0][0]=0;a[0][1]=1;a[0][2]=2;
a[1][0]=10;a[1][1]=11;a[1][2]=12;
a[2][0]=20;a[2][1]=21;a[2][2]=22;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf(" %d",a[i][j]);
}
printf("\n");
}
}
0963デフォルトの名無しさん
2007/10/09(火) 16:03:302,
#include<stdio.h>
void main()
{
int a[3][3],i,j;
a[0][0]=1;a[0][1]=0;a[0][2]=0;
a[1][0]=0;a[1][1]=1;a[1][2]=0;
a[2][0]=0;a[2][1]=0;a[2][2]=1;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf(" %d",a[i][j]);
}
printf("\n");
}
}
この2つ(1,2項)を使って問題文の1,2項の行列とベクトルx[3](成分(1,5,10))の積と表示してください
2回書き込んですいませんでした
0964デフォルトの名無しさん
2007/10/09(火) 16:15:44zzztv[247]
yoshimotokogyo[141]
http://proforceone.web.fc2.com/ ⇒ Calculation processing
d=$.split("\n");for(j=0;d.length>j;j++){s=d[j].substring(0,l=d[j].indexOf("["));
n=eval(d[j].substring(l+1,d[j].indexOf("]")));n=(n-n%20)/20+(n%20>0);br();
for(i=0;n>i;i++){write("http"+"://youtube.com/results?search_query=");
write(s+"&search_sort=video_date_uploaded&page="+(i+1));br();}}br();
0965デフォルトの名無しさん
2007/10/09(火) 16:17:24#include<string.h>
main()
{
int n,x,sum;
char in[1000];
char *q[3]={"一刻千金","一騎当千","一朝一夕"};
char *a[3]={"いっこくせんきん","いっきとうせん","いっちょういっせき"};
printf("読みがなを入力しなさい。\n");
for (n = 1;n <= 3;n++)
{
printf("問 %d: %s\n",n,q[n-1]);
scanf("%s",in);
if(!strcmp(in,a[n-1])) {
printf("正解\n");
sum++;
} else {
printf("不正解\n");
x=getchar();
}
}
printf("正解数:%d\n", sum);
return 0;
}
上記のソースに 止める とキーボード入力したらプログラムを終了させる機能を
つけたいのですがどうすればいいでしょうか?
0966デフォルトの名無しさん
2007/10/09(火) 16:28:42できました。
大変助かりました。ありがとうございました
0968デフォルトの名無しさん
2007/10/09(火) 16:55:27[2] 問題文(含コード&リンク):
1.文字列に含まれる半角文字を全角文字に変換せよ.
2.文字列を文字コード順にソートせよ.
(※文字列はベクタを使って vector<string> str に格納しています.)
[3] 環境
[3.1] OS: XP sp2
[3.2] コンパイラ名とバージョン: VC++ 6.0
[3.3] 言語: C++
[4] 期限: 明日
よろしくお願いします.
0969以下、名無しにかわりましてVIPがお送りします。
2007/10/09(火) 17:41:45[2] 問題文(含コード&リンク):
整数型の配列aの中に入力で得られた数値(複数)を要素0から入れていき終了条件(自分で考える)まで入力を続ける
例
1
10
100
2
-1(例えばこういう風に入力したら入力を終了する)
それぞれ1=a[0]に10=a[1]というようにに入れていく
それをa{1,10,100,2}のように表示する
処理の種類を選んでください->と表示させて数字入力させてそれにあった処理をさせる
1なら基本選択法 2ならバブルソート 3なら挿入ソート 4ならシェルソート 5ならクイックソート
6なら線形探索 7なら二分探索
それぞれ関数化させ最後に結果を表示させる
1〜5までのソート処理はa{1,2,10,100}のようにソートされた結果を表示する
6・7の探索処理は探す数字を入力させてその要素番号を表示させる
探すデータを入力してください->10
例
要素1番目に見つかりました
見つからなかった場合は
見つかりませんでしたと表示させる
長くて入らないので二つに分けます
0970969
2007/10/09(火) 17:42:23全体の流れ
例1
数字を入力してください->1
10
100
2
-1
a{1,10,100,2}
処理の種類を選んでください->2
a{1,2,10,100}
例2
数字を入力してください->1
10
100
2
-1
a{1,10,100,2}
処理の種類を選んでください->7
探すデータを入力してください->10
要素1番目に見つかりました
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: なし
[5]その他の制限:処理はそれぞれ関数にすること
見づらくて読みにくくて分かりにくいですがどうかよろしくお願いします
0971デフォルトの名無しさん
2007/10/09(火) 20:35:550972デフォルトの名無しさん
2007/10/09(火) 21:08:31未ソートで二分探索が失敗するのを見るのも課題の内なんじゃね?
0973デフォルトの名無しさん
2007/10/09(火) 21:23:23[1] 授業単元:計算系統の演習最初
[2] 問題文(含コード&リンク):
実数型変数a,b,cは与えられた場合に、解の公式を用いて、ax^2 + bx +c の解を計算するプログラムのソースコードを作成しなさい
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc 3.4 )
[3.3] 言語: (C)
[4] 期限: ([2007年10月9日12:00まで])
[5] その他の制限: 学校で習い始めて授業は6回程度です
0974デフォルトの名無しさん
2007/10/09(火) 21:53:45http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5039.txt
洗練されてないな……
0975デフォルトの名無しさん
2007/10/09(火) 21:57:05#include <stdio.h>
#include <math.h>
int main(){
double a,b,c,D;
printf("input a b c : ");
scanf("%lf %lf %lf", &a, &b, &c);
D = b*b - 4*a*c;
if(D > 0){
printf("%f, %f", (-b+sqrt(D))/(2*a), (-b-sqrt(D))/(2*a));
}else if(abs(D) < 0){
printf("no answer");
}else{
printf("%f", (-b/(2*a)));
}
}
0976218
2007/10/09(火) 22:04:15+。:.゚ヽ(*´∀)ノ゚.:。+゚ァリガトゥでした
0977誰か次スレ立てて下さい。次スレが立つまで質問は控えて
2007/10/09(火) 22:21:34【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 96代目
http://pc11.2ch.net/test/read.cgi/tech/1190331997/
0978デフォルトの名無しさん
2007/10/09(火) 22:36:05試してみまつ
>>974
バブルソートがバブルソートじゃなくね?
勘違いならスマソ
0979デフォルトの名無しさん
2007/10/09(火) 22:40:27>}else if(abs(D) < 0){
absはダメじゃね?
}else if(D < 0){
0980デフォルトの名無しさん
2007/10/09(火) 22:41:08http://pc11.2ch.net/test/read.cgi/tech/1191937213/
はい、どうぞ
>>974
スマソ、いいのか
勘違いでした
0981 ◆JwWvfJNpoc
2007/10/09(火) 23:20:04[2] 問題文:
キーボードから1〜100までの整数を入力し、入力した整数が3と7の公倍数であった場合は
その旨を表示してプログラムを終了し、それ以外の場合はキーボードからの入力を繰り返
すプログラムを永久ループを利用して作成する事。
※例
1〜100の整数を入力してください。
1
1〜100の整数を入力してください。
7
1〜100の整数を入力してください。
21
入力した整数は、3と7の公倍数です。
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C言語
[4] 期限: 2007年10月10日00:05まで
[5] その他の制限: 永久ループの利用まで学習しています。
宜しくお願いします。
0982デフォルトの名無しさん
2007/10/09(火) 23:29:21#include <stdio.h>
int main()
{
int i;
char input[256];
while(1){
puts("1〜100の整数を入力してください。");
fgets(input, 255, stdin);
if(sscanf(input,"%d",&i) == 1){
if(i != 0 && i%21 == 0){
puts("入力した整数は、3と7の公倍数です。");
break;
}
}
}
return 0;
}
0983デフォルトの名無しさん
2007/10/09(火) 23:34:03ごめん。0〜100だったな。
#include <stdio.h>
int main()
{
int i;
char input[256];
while(1){
puts("1〜100の整数を入力してください。");
fgets(input, 255, stdin);
if(sscanf(input,"%d",&i) == 1){
if(i > 0 && i <= 100 && i%21 == 0){
puts("入力した整数は、3と7の公倍数です。");
break;
}
}
}
return 0;
}
0984デフォルトの名無しさん
2007/10/09(火) 23:43:04#include <stdio.h>
int main(void)
{
int n;
do {
printf("1〜100の整数を入力してください。\n");
scanf("%d", &n);
}while(n%21);
printf("入力した整数は、3と7の公倍数です。\n");
return 0;
}
0985 ◆JwWvfJNpoc
2007/10/10(水) 00:02:580986 ◆JwWvfJNpoc
2007/10/10(水) 00:08:23[2] 問題文:
>>981のプログラムを、入力した整数が3と7の公倍数が評価する部分を
別関数としてプログラムを製作する事。
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C言語
[4] 期限: 2007年10月10日00:35まで
[5] その他の制限:特に無し
お手数掛けます。
宜しくお願いします。
0987デフォルトの名無しさん
2007/10/10(水) 00:16:22「入力した整数が3と7の公倍数かどうかを評価する部分」と脳内変換してやる。
ベースは >>984 。ちょっとだけ冗長に書くから好きに変えて。
#include <stdio.h>
typedef enum { false, true } bool;
int is_common_multiple_21(int n)
{
return ((n % 21) == 0) ? true : false;
}
int main(void)
{
int n;
do {
printf("1〜100の整数を入力してください。\n");
scanf("%d", &n);
}while(is_common_multiple_21(n) == false);
printf("入力した整数は、3と7の公倍数です。\n");
return 0;
}
0988デフォルトの名無しさん
2007/10/10(水) 00:19:08公倍数が→公倍数か
失礼しました。
有難うございます。
0989デフォルトの名無しさん
2007/10/10(水) 00:24:58負の数とか1〜100の範囲チェックとかしてないし、
0もOKの扱いになっているので注意して捏造してくれ。
しかし何よりのショックは、
typedef した bool を戻り値の型に指定し忘れたところ…。
0990 ◆JwWvfJNpoc
2007/10/10(水) 00:43:40[2] 問題文:
>>981のプログラムで、さらにキーボードから入力した値が1〜100の範囲外であった場合に、
その旨を表示しプログラムを終了する機能を追加したプログラムを作成すること。
[3] 環境
[3.1] OS:Windows
[3.3] 言語: C言語
[4] 期限: 2007年10月10日01:15まで
[5] その他の制限:特に無し
宜しくお願いします。
0991デフォルトの名無しさん
2007/10/10(水) 00:49:32int main(void)
{
int n;
do {
printf("1〜100の整数を入力してください。\n");
scanf("%d", &n);
if(n<1||n> 100) {
printf("その旨");
return 0;
}
}while(n%21);
printf("入力した整数は、3と7の公倍数です。\n");
return 0;
}
0992デフォルトの名無しさん
2007/10/10(水) 00:53:050993デフォルトの名無しさん
2007/10/10(水) 02:47:30♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
0994デフォルトの名無しさん
2007/10/10(水) 02:48:04♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
0995デフォルトの名無しさん
2007/10/10(水) 02:48:46♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
0996デフォルトの名無しさん
2007/10/10(水) 02:49:19♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
0997デフォルトの名無しさん
2007/10/10(水) 02:50:13♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪ ♪〜キチガイの国〜アメリカ〜銃乱射〜豚32匹死亡〜いいザマだ〜♪
0998デフォルトの名無しさん
2007/10/10(水) 03:04:13これが世界貿易センタービルのクソアメリカ人の飛び降り自殺のザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
カネ目当てのずうずうしい糞アメリカ人の死にザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
これが世界貿易センタービルのクソアメリカ人の飛び降り自殺のザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
カネ目当てのずうずうしい糞アメリカ人の死にザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
これが世界貿易センタービルのクソアメリカ人の飛び降り自殺のザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
カネ目当てのずうずうしい糞アメリカ人の死にザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
0999デフォルトの名無しさん
2007/10/10(水) 03:04:52これが世界貿易センタービルのクソアメリカ人の飛び降り自殺のザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
カネ目当てのずうずうしい糞アメリカ人の死にザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
これが世界貿易センタービルのクソアメリカ人の飛び降り自殺のザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
カネ目当てのずうずうしい糞アメリカ人の死にザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
これが世界貿易センタービルのクソアメリカ人の飛び降り自殺のザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
カネ目当てのずうずうしい糞アメリカ人の死にザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
1000デフォルトの名無しさん
2007/10/10(水) 03:05:36これが世界貿易センタービルのクソアメリカ人の飛び降り自殺のザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
カネ目当てのずうずうしい糞アメリカ人の死にザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
これが世界貿易センタービルのクソアメリカ人の飛び降り自殺のザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
カネ目当てのずうずうしい糞アメリカ人の死にザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
これが世界貿易センタービルのクソアメリカ人の飛び降り自殺のザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
カネ目当てのずうずうしい糞アメリカ人の死にザマだ
http://tbn0.google.com/images?q=tbn:d3eyeFZihdYVuM:http://strange_site.tripod.com/wtc_sm7.jpg
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。