C/C++の宿題を片付けます 76代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/11/06(月) 09:04:35【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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
【前スレ】
C/C++の宿題を片付けます 75代目
http://pc8.2ch.net/test/read.cgi/tech/1161257941/
【過去スレ一覧】
http://makimo.to/cgi-bin/search/search.cgi?q=C%2B%2B%82%CC%8Fh%91%E8&andor=AND&sf=2&H=&view=table&D=tech&shw=2000
0002デフォルトの名無しさん
2006/11/06(月) 10:12:390003デフォルトの名無しさん
2006/11/06(月) 11:07:320004デフォルトの名無しさん
2006/11/06(月) 20:56:110005デフォルトの名無しさん
2006/11/06(月) 21:03:21[2] 整数 m と d をを入力し, m 月 d 日が 1 年の何日目にあたるかを表示するプログラムを作成せよ. 例えば, 2 と 1 を入力すると, "2 月 1 日は 1 年の 32 日目です" 等と表示するようにせよ.
閏年は考慮しなくてよい. また, 間違った月日 (例えば, m=13 や m= 4, d=31 等) が入力された場合には, 入力が間違っている旨を表示して終了するようにせよ.
※ m月d日 → 1月〜m-1月の日数の和を求め, それに d を足せばよい.
[3]
[3.1] windowsXP sp2
[3.2] cygwin
[3.3] C
[4] 2006年 10月6日(今日中にアップロード)
[5] 配列って分野の宿題です。なるべく簡単な書き方でお願いします。
0006デフォルトの名無しさん
2006/11/06(月) 21:07:14閏年はどう扱う?
0007デフォルトの名無しさん
2006/11/06(月) 21:07:464行目が読めないのか?
0008デフォルトの名無しさん
2006/11/06(月) 21:08:43友達がばれたとか言ってたけど釣り?
0009デフォルトの名無しさん
2006/11/06(月) 21:10:29すまん。読めてなかった。吊ってくるorz
0010デフォルトの名無しさん
2006/11/06(月) 21:11:56利用させてもらうこともあるけど、
書き方とか定義する文字とか変えて絶対自分だって分からないようにしてる。
0011デフォルトの名無しさん
2006/11/06(月) 21:17:16#include<stdio.h>
#include<stdlib.h>
int main(void){
int day_list[]={0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int day_sum;
int m, d, i;
printf("Input date month day :");
scanf("%d %d", &m, &d);
if(m<1 || m>12 || d<1 || d>day_list[m]){
printf("\n入力が間違っています\n");
exit(1);
}
day_sum=d;
for(i=0;i<m;i++)
day_sum+=day_list[i];
printf("%d 月 %d 日は 1 年の %d 日目です\n", m, d, day_sum);
return 0;
}
0012デフォルトの名無しさん
2006/11/06(月) 21:35:22とか
printf
の
f
って何?
0013デフォルトの名無しさん
2006/11/06(月) 21:39:16宿題なのか?
f(ormat)
0014デフォルトの名無しさん
2006/11/06(月) 21:40:180015デフォルトの名無しさん
2006/11/06(月) 21:40:31formatじゃね?
0016デフォルトの名無しさん
2006/11/06(月) 21:44:27最近は、本当は意味なんてないんじゃないかと思い始めてた
0017デフォルトの名無しさん
2006/11/06(月) 21:48:400018デフォルトの名無しさん
2006/11/06(月) 21:54:05意味なんてあるわけないじゃん
0019デフォルトの名無しさん
2006/11/06(月) 21:58:01char とかstrlen とか、Cの用語には読み方が分かれるものが多いね。
0020C言語の問題くれよ(GUI無しで)
2006/11/06(月) 21:58:47<豆知識>
atof → あ、豆腐 → 豆腐は柔らかい → 固定されていない → 浮動小数点数に変換
間違っても ascii to float ではない
0021デフォルトの名無しさん
2006/11/06(月) 22:16:370022デフォルトの名無しさん
2006/11/06(月) 23:29:55表示させようとしたらそこだけバグるんだけど。
例えばm=sum/n が平均だとすると
mはちゃんとした数字出るけどsumはバグってる。
sumそのままprintしようとしちゃいけないんでしょうか。
これだけしか書かなくて分かるだろうか。
0023デフォルトの名無しさん
2006/11/06(月) 23:32:10わからん。テンプレ嫁。
まぁ書式指定子がどっかおかしいんだろうとは思うが。
0024デフォルトの名無しさん
2006/11/06(月) 23:35:55表示部分と変数宣言だけでも晒すべし
0025デフォルトの名無しさん
2006/11/06(月) 23:43:16そもそも固定小数点型なんてあったっけ?
0026デフォルトの名無しさん
2006/11/06(月) 23:44:24ネタにマジレスかこわるい
0027デフォルトの名無しさん
2006/11/06(月) 23:45:28整数型が狭義の固定小数点型
0028デフォルトの名無しさん
2006/11/06(月) 23:46:35>>25がマジレスだと思ってるのか?
0029デフォルトの名無しさん
2006/11/06(月) 23:48:14うまくいかないのがほんの一部だけで、全部晒すと効率悪いと思って
>>24
#include<limits.h><math.h><stdio.h>(全部)
int i,x[n];
double sum,m,s,v;
中略
for(sum=0.0,i=0;i<n;i++)
{
sum += x[i];
}
m=sum/n;
for(sum=0.0,i=0;i<n;i++)
{
sum += (x[i]-m)*(x[i]-m);
}
v=sum/n;
s=sqrt(v);
printf("合計%f\n",sum);
printf("平均%f\n",m);
printf("標準偏差%f\n",s);
return終わり
です
0030デフォルトの名無しさん
2006/11/06(月) 23:54:290031デフォルトの名無しさん
2006/11/06(月) 23:54:46書いてあるとおりに動いているだけじゃないのか?
sum を上書きしてしまってるの忘れてるとかな
0032デフォルトの名無しさん
2006/11/06(月) 23:55:02sumがバグってるとはどのような状況か?
異常なものが表示されるのか、
表示されないのか、
暴走するのか?
はっきりさせろ。
0033デフォルトの名無しさん
2006/11/06(月) 23:55:04出来ればどうバグってるのか教えておくれ。
オレはてっきり出力が”あqwせdrftgyふじこ”になってるんだと
思ってたんだけど、違うっぽいし。
あとドットとか本でした見た事なかったよ。
0034デフォルトの名無しさん
2006/11/07(火) 00:02:39親切にありがとうございます。
気付きました。
0035デフォルトの名無しさん
2006/11/07(火) 00:41:28[2] 問題文(含コード&リンク):
オイラーの予想:
オイラー(Euler, 1707年-1783年)は、1769年頃に、
「a^5+b^5+c^5+d^5=e^5を満足する正の整数はない」という予想を立てた。
コンピュータを用いて、偉大な数学者であるオイラーの予想を覆せ。
また、このプログラムは多少時間がかかることが予想されるので、
効率よくプログラムを組むこと。そのため、すべてを計算すると大変なので、
a<b<c<d<e<200を仮定してよい。
ヒント:
カウンタ変数を5つ用意して5重ループを構成する。
ループ数が多くなるので計算量に注意されたい。
200^5程度の値になると、通常のint型の表現範囲を超えるので注意すること。
答えは、次のとおり
a=27,b=84,c=110,d=133,e=144
a^5=14348907,b^5=4182119424,c^5=16105100000,d^5=41615795893,e^5=61917364224
c^5,d^5,e^5は、int型の表現範囲を超えているので、注意してください。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 6.0
[3.3] 言語: C++
[4] 期限: 2006年11月7日まで
[5] その他の制限: この答え以外でも存在したら表示して欲しいです。
0036デフォルトの名無しさん
2006/11/07(火) 00:49:32意地悪で聞いてるわけじゃなくて,手元にある程度プログラムが出来てるのか確かめておきたい
0037デフォルトの名無しさん
2006/11/07(火) 00:55:47このプログラムは出来ています。
他の答えをだすプログラムを知りたくて。
0038デフォルトの名無しさん
2006/11/07(火) 00:58:05単純に考えて・・・
0039デフォルトの名無しさん
2006/11/07(火) 01:05:39ありがとうございます。
0040デフォルトの名無しさん
2006/11/07(火) 01:40:13ってのがあったけど200超えてるしな。
0041デフォルトの名無しさん
2006/11/07(火) 01:51:37ありがとうございました。
0042デフォルトの名無しさん
2006/11/07(火) 01:57:39[2] 問題文(含コード&リンク):3元連立方程式をガウスザイデル法で解くプログラムを作成せよ
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Microsoft Visual C++ 6.0
[3.3] 言語: C
[4] 期限:水曜日まで
[5] その他の制限:
参考書にアルゴリズムは色々書いてあるけど
これをどうやってプログラムで書けばいいか分かりません・・・
0043デフォルトの名無しさん
2006/11/07(火) 02:10:00http://www.vector.co.jp/soft/dl/data/prog/se002453.html
この中のgseidel.c
というのはあまりにやっつけだろうか
0044c不明な人
2006/11/07(火) 13:10:25[2] 問題文(含コード&リンク):二つの整数n , r をキーボードから入力し,組合せの数nCrを画面表示するプログラムを作成
しなさい.ただし,組合せの数を求める関数のプロトタイプを「int combination(int, int)」,
整数値の階乗を求める関数のプロトタイプを「int kaijo(int)」としてプログラムすること. n や
r を大きくとるとオーバフローすることがあるが,本課題では考慮しなくてよい.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2006年11月10日まで]
[5] その他の制限:なし
よろしくお願いします。。。
0045デフォルトの名無しさん
2006/11/07(火) 13:15:45前スレで見たよ、それ
0046デフォルトの名無しさん
2006/11/07(火) 13:17:20をプログラムで書こうとして、
((x[i]-x[i+1])(x[i+2]-x[i+1])+(y[i]-y[i+1])(y[i+2]-y[i+1]))
/sqrt(((x[i]-x[i+1])^2+(y[i]-y[i+1])^2))*((x[i+2]-x[i+1])^2+(y[i+2]-y[i+1])^2)))
と書いてみたのですが、エラーばっかりです。
x[i+1]と言う表現はダメなんでしょうか?
どのように表現すればいいでしょうか?
また、^2という表現も使えないのでしょうか?
どのように記述すればよいでしょうか?
言語はcです
0047c不明な人
2006/11/07(火) 13:19:401] 授業単元:情報処理�U
[2] 問題文(含コード&リンク):x を-2.8 以上2.8 以下の範囲で0.02 ずつ変化させ, y = cos x 及びy = sin x の値を画面表
示するプログラムを作成しなさい.ただし, y = cos x 及びy = sin x は,次式に示す多項式
cosx=1-x^2/2!+x^4/4!-x^6/6!+x^8/8!-x^10/10!
sinx=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-x^11/11!
により計算すること.また,これらの計算を行う関数のプロトタイプをそれぞれ「double
mycos(double)」,「double mysin(double)」とし,課題1(↑の44の問題です。)で作成した「kaijo()」関数を利用す
ること.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2006年11月10日まで]
[5] その他の制限:なし
改めてよろしくお願いしますm(__)m
0048デフォルトの名無しさん
2006/11/07(火) 13:29:27>・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
配列宣言してないんじゃないのって気がするがな
そもそもそこで配列を使いたい理由がわからん
0050デフォルトの名無しさん
2006/11/07(火) 13:30:31[2] 問題文(含コード&リンク): 引数で受け取った全角文字列を逆順に入れ替える
int reverse_string(char *str)を作成せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Borland C++ Compiler 5.5
[3.3] 言語: C
[4] 期限:2006年11月8日
半角英数字はうまくいくのですが2バイト文字の場合がわかりません。
よろしくお願いします。
005150
2006/11/07(火) 13:31:48int reverse_string(char *str)
{
char *p,tmp;
p=str;
for(;*p !='\0';p++);
for(;p-str>0;str++){
tmp=*(--p);
*p=*str;
*str=tmp;
}
return 0;
}
main(void)
{
char str[50]="C言語";
printf("reverse_string関数実行前\n%s\n",str);
printf("reverse_string関数実行後\n");
reverse_string(str);
printf("%s\n",str);
return 0;
}
0052デフォルトの名無しさん
2006/11/07(火) 13:36:02#define M 4096
double x[M], y[M], z[M];
で確保してあります。
error C2064: 関数ポインタとして評価されない式を使って、関数を呼び出そうとしました。
error C2296: '^' : 不正な左オペランドです。
こんな感じです。
>そもそもそこで配列を使いたい理由がわからん
配列に連続した座標が入っているので。
一つずつ動かして判定したいのです。
0053デフォルトの名無しさん
2006/11/07(火) 13:36:25期限もまだあることだし
0054デフォルトの名無しさん
2006/11/07(火) 13:40:51error C2296: '^' : 不正な左オペランドです。 というエラーメッセージを見る
↓
^2という表現は使えないのかな と気づく←ここまで出来てる
↓
C 演算子でググる
↓
^はxorに使われていることを知る
↓
じゃあべき乗はどう表すのか疑問に思う
↓
C べき乗でググる
↓
math.hのpowを使うことが分かる
はぁ・・・
0055デフォルトの名無しさん
2006/11/07(火) 13:44:110056デフォルトの名無しさん
2006/11/07(火) 13:46:04>>1
005746
2006/11/07(火) 13:56:11ありがとうございます。
べき乗については解決いたしました。
(x[i]-x[i+1])
のみだとエラーは出ないのですが、
(x[i]-x[i+1])(x[i+2]-x[i+1])
と書くと
error C2064: 関数ポインタとして評価されない式を使って、関数を呼び出そうとしました。
となります。
なぜなんでしょうか???
0058デフォルトの名無しさん
2006/11/07(火) 14:00:26[1] cis english 2
[2] 問題文
英文を入力し,その英文の単語を全て出力するソースコード
[3] 環境
[3.1] OS: WindowsXP
[3.2]gcc
[3.3] C
[4] 期限:2006年11月12日12:00まで
[5] その他の制限:なし
0059デフォルトの名無しさん
2006/11/07(火) 14:02:19.,!?;:"'取り除くだけで答えになってしまうんじゃないだろうか
出てきた単語は昇順に並べ替えるとか 指定ないの?
0060デフォルトの名無しさん
2006/11/07(火) 14:05:24[2] 問題文:
ガウスの消去法を用いたプログラムで微分方程式を解く
f(0)=0,f(pi/2)=1の条件でf''(x)+f(x)を解け
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン: gcc 2.95
[3.3] 言語: C言語
[4] 期限: レポート提出があるので可能なら今日、できれば明日まで
[5] その他の制限: 特にありません
現在
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2897.c
までプログラムが進んでいます
数値の入力の直後にセグメンテーション違反です。と表示され終了してしまいます
微分方程式を解くときの数値などは問題ないはずなのですが、
17行目のscanfのところで止まってしまいます。
このエラーをどうにかする方法はないでしょうか?力を貸して頂ければ幸いです
0061デフォルトの名無しさん
2006/11/07(火) 14:06:15釣り?
掛け算は*だべ。
006260
2006/11/07(火) 14:07:48微分方程式が間違っていました
正しくはf''(x)+f(x)=0です
0064デフォルトの名無しさん
2006/11/07(火) 14:10:31いい意味でアメリカのラテン系移民の英語みたいなガッツを感じます。
0065デフォルトの名無しさん
2006/11/07(火) 14:59:05脳内コンパイラ
#include<stdio.h>
main() {
int kotae,n,r;
printf("nCrを計算するにゃん\n");
printf("nの値を入力するにゃん\n(n>=0にゃん)");
scanf("%d",&n);
if(n<0){
printf("死ねにゃん");
exit(1);
}
printf("rの値を入力するにゃん\n(0<=r<=nにゃん)\n");
scanf("%d",&r);
if(r>n||r<0){
printf("死ねにゃん");
exit(1);
}
printf("計算開始にゃん\n");
kotae = combination(n,r);
printf("答えは%dにゃん\a",kotae);
}
int kaijo(int x) {
if(x=1||x=0){return 1};
return x*kaijo(x-1);
}
int combination(int n, int r) {
int c;
c = kaijo(n)/(kaijo(r)*kaijo(n-r));
return c;
}
0066デフォルトの名無しさん
2006/11/07(火) 15:06:41int kaijo(int x) {
if(x=0)
return 1;
return x*kaijo(x-1);
}
0067デフォルトの名無しさん
2006/11/07(火) 15:07:24if ( x == 0 ) だろうが
0068デフォルトの名無しさん
2006/11/07(火) 15:07:28int kaijo(int x) {
if(x==0)
return 1;
return x*kaijo(x-1);
}
0069デフォルトの名無しさん
2006/11/07(火) 15:31:33#include <math.h>
main(){
double i,y1,y2;
for (i=-2.8;i<=2.8;i=i+0.02){
省略
指定された書式で思い思いに表示してください
}
}
double mycos(double x){
int n;
double y=0;
for(n=10;n>=2;n=n-4){
y=y-pow(x,n)/kaijo(n)+pow(x,n-2)/kaijo(n-2);
}
return y;
}
double mysin(double x){
int n;
double y=0;
for(n=11;n>=3;n=n-4){
y=y-pow(x,n)/kaijo(n)+pow(x,n-2)/kaijo(n-2);
}
return y;
}
展開式はアンロールしたよ その方が早いから(言い訳
0070デフォルトの名無しさん
2006/11/07(火) 16:27:450071デフォルトの名無しさん
2006/11/07(火) 16:28:26[2] 問題文(含コード&リンク):
#include <stdio.h>
#include<string.h>
int main(void)
{
int i;
char str_num[10] = "123456789";
char str_alpha[6] = "abcde";
for(i=0;i<10;i++){
strcpy(str_num, "123456789"); /* �@ */
strncpy(str_num, str_alpha, i); /* �A */
printf("i=%d, str_num:\"%s\"\n", i, str_num); /* �B */
}
return 0;
}
このプログラムの
�@をstrcpy(str_alpha, "abcde");
�Aをstrncpy(str_alpha, str_num, i);
�Bをprintf("i=%d, str_alpha=\"%s\"\n", i, str_alpha);
とした場合の実行結果について説明し、strncpy()の動作について説明
しなさい。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: 分かりません
[3.3] 言語: C
[4] 期限: 明日の朝まで
よろしくお願いします。
0072デフォルトの名無しさん
2006/11/07(火) 16:44:00ちょwwww分かれwwwwww
0074デフォルトの名無しさん
2006/11/07(火) 17:09:23kore.jikkou.sure.ba.ii.dake.jamaica!
0075sage
2006/11/07(火) 17:21:14[2] 問題文 番号と名前をメンバとする構造体を作成し、3件分のデータ表示を行うプログラムを作成せよ。
番号は3桁までとし、3桁を超える場合やすでに入力済みの数字が入力された場合はエラーを表示せよ。
[3.1] OS:unix
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:[2006年11月9日まで]
[5] その他の制限:なし
特に番号の重複エラーの処理がよくわからないのでよろしくお願いします。
007671
2006/11/07(火) 17:24:41もちろん実行したのですが、
/* �@ */
/* �A */
/* �B */
を変えることによって、なぜこの様な実行結果になったかを説明しないと
いけないのです。
なぜこの様な実行結果になったかが解らなくて。
0077デフォルトの名無しさん
2006/11/07(火) 17:36:39strcpy.to.strncpy.wo.google
0078デフォルトの名無しさん
2006/11/07(火) 18:32:35[2] 問題文(含コード&リンク): 数字を二つ入力したとき、その二つの数字の間の全ての数の和(シグマ計算)
を出力する(1と10を入力すると55、のような)プログラムをif と gotoを用いて2パターン以上作成せよ。
[3] 環境
[3.1] OS: (Windows
[3.2] コンパイラ名とバージョン: 初心者なもので何のことか…
[3.3] 言語: C++
[4] 期限: ([今年11月10日まで]
[5] その他の制限:超初心者なのでなるべく単純な方法でお願いします。m(_ _ )m
0079デフォルトの名無しさん
2006/11/07(火) 18:38:32ヒント web: manpage of strcpy
0080デフォルトの名無しさん
2006/11/07(火) 19:37:49作ってはみたが、時間がかかりすぎる。
それでもいいなら、アップする
CPU600MHz → 推定12時間以上?アリエネ
枝狩りのアルゴリズム考えないとな
0081デフォルトの名無しさん
2006/11/07(火) 19:38:53#include <stdlib.h>
main(){
int s,m,n;
scanf("%d",&m);
scanf("%d",&n);
s=(m+n)*(abs(m-n)+1)/2;
printf("%d",s);
}
0082デフォルトの名無しさん
2006/11/07(火) 19:42:301)
#define go int
#define gogo if(
#define toog )
#include<stdio.h>
go amain(){
go gog,gg,tot=0;scanf("%d%d",&gog,&gg);
goto to;gdg:++gog;goto to;togo:tot += gog;goto gdg;
to:gogo gog <= gg toog goto togo;printf("%d\n",tot);
}
2)
#define go int
#define gogo if(
#define toog )
#include<stdio.h>
go og(go gg){gg/10&&og(gg/10);putchar(gg%10+48);}
go main(){
go gog,gg,tot=0;scanf("%d%d",&gog,&gg);
goto to;gdg:++gog;goto to;togo:tot += gog;goto gdg;
to:gogo gog <= gg toog goto togo;
og(tot);
}
008381
2006/11/07(火) 19:49:050084デフォルトの名無しさん
2006/11/07(火) 19:50:53if(1) goto owari;
owari:
0085デフォルトの名無しさん
2006/11/07(火) 20:01:54先生がイラつくこと間違い無しの良解答だな
0086デフォルトの名無しさん
2006/11/07(火) 20:11:45最近の教科書にはどんどん使いましょうとか書いてあるのか。
0087デフォルトの名無しさん
2006/11/07(火) 20:12:200088デフォルトの名無しさん
2006/11/07(火) 20:19:26#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define BUF_SIZE 1024
typedef struct tag_word_list{
char *word_data;
struct tag_word_list *next;
}word_list;
void word_add(const char *one_word, word_list **start){
word_list *wl;
for(wl=*start;wl!=NULL;wl=wl->next)
if(strcmp(one_word, wl->word_data)==0) return;
wl=malloc(sizeof(word_list));
wl->word_data=strdup(one_word);
wl->next=*start;
*start=wl;
}
int main(void){
char one_word[BUF_SIZE], dummy[BUF_SIZE];
word_list *wl=NULL;
while(!feof(stdin)){
one_word[0]='\0';
if(fscanf(stdin, "%[a-zA-Z-]", one_word)==1) word_add(one_word, &wl);
fscanf(stdin, "%[^a-zA-Z-]", dummy);
}
for(;wl!=NULL;wl=wl->next)
printf("%s\n", wl->word_data);
return 0;
}
0089デフォルトの名無しさん
2006/11/07(火) 20:31:37以下の様なプログラムを作りなさい。
・メイン関数の引数を用いてユーザ名とパスワードの前半部分を入力する。
・scanfを用いてパスワードの後半部分の入力を要求する。
・前半部分と後半部分を連結して1つのパスワードにする。
・前もって決めたパスワードと一致するか調べ、一致する場合には「OK, ユーザ名」のメッセージを
表示し、一致しない場合はパスワードの文字数を表示する。
以下、自分で考えてみたプログラムです。
#include<stdio.h>
#include<string.h>
#define MAX 20
int main(int argc, char *argv[]) /* ユーザ名をargv[1]としてパスワードの前半をargv[2]とします。*/
{char x[MAX], y[MAX], password[MAX]=abcd;
int i, k, flag=1;
scanf("%s", x);
y[MAX] = *strcat(argv[2], x);
k = strlen(strcat(argv[2], x));
for(i=0;i<=3;i++){
flag *= (y[i] == password[i]);}
if(flag == 1)
printf("OK, %s\n", argv[1]);
else
printf("パスワードの長さ:%d", k);}
ユーザ名はVVVでパスワードの前半はabで実行しパスワードの後半はcdを入力してみたのですが、
ちゃんとなりませんでした。どこをどのように訂正すれば良いのでしょうか?
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2006年11月8日18:00まで
[5] その他の制限: C言語を始めて4ヶ月程度なのであまり上級な知識は避けて頂けると助かります。
0090デフォルトの名無しさん
2006/11/07(火) 20:34:42#include <stdio.h>
#include <time.h>
void p(int i) { printf("%d ", i); fflush(stdout); }
int proc(void)
{
int a, b, c, d, e; double x, y, z, f[200];
for (e = 1; e < 200; e++)
f[e] = (double)e * e * e * e * e;
for (e = 1; e < 200; e++)
for (p(e), d = 1; d < e; d++)
for (c = 1; c < d && (z = f[c] + f[d]) < f[e]; c++)
for (b = 1; b < c && (y = f[b] + z) < f[e]; b++) {
for (a = 1; a < b && (x = f[a] + y) < f[e]; a++)
;
if (x == f[e])
return !printf("\na=%d b=%d c=%d d=%d e=%d\n",
a, b, c, d, e);
}
return printf("not found\n");
}
int main(void)
{
clock_t t = clock();
proc();
printf("%g\n", difftime(clock(), t) / CLOCKS_PER_SEC);
return 0;
}
0091デフォルトの名無しさん
2006/11/07(火) 20:39:180092デフォルトの名無しさん
2006/11/07(火) 20:42:01[2] 問題文(含コード&リンク): 引数で受け取った全角文字列を逆順に入れ替える
int reverse(char *str)を作成せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限:明日まで
[5] その他の制限: インクルードはstdio.hのみでお願いします。
「C言語プログラミング」と文字列に入れたら「グンミラグロプ語言C」と出力されるようにお願いします。
0093デフォルトの名無しさん
2006/11/07(火) 20:43:08[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):ある商店でメロンを販売している。この商店では購入個数が増えると1個あたりの単価が安くなる。メロン1個の仕入価格は1000円である。またメロンの購入個数と単価の関係は以下のようになっている。
5個未満:1個あたり2000円
10個未満:1個あたり1900円
15個未満:1個あたり1500円
20個未満:1個あたり1400円
20個以上:1個あたり1200円
客がn人買いにきたとして、格客の購入個数を入力し、それぞれの支払い価格と商店の総販売価格と総利益出力するプログラムを作成せよ。nはプログラム開始時に読み込むこと。
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C++
[4] 期限:明日
0094デフォルトの名無しさん
2006/11/07(火) 20:47:19password[MAX]=abcd;
↓
password[MAX]="abcd";
y[MAX] = *strcat(argv[2], x);
↓
sprintf(y, "%s%s", argv[2], x);
for(i=0;i<=3;i++){
flag *= (y[i] == password[i]);}
↓
flag=(strcmp(y, password)==0);
0095デフォルトの名無しさん
2006/11/07(火) 20:59:06return忘れてるぞ
0096デフォルトの名無しさん
2006/11/07(火) 20:59:26文字コードの指定はないのか?
内部で判別するの?
シフトJIS限定?
0097デフォルトの名無しさん
2006/11/07(火) 21:03:46>引数で受け取った全角文字列を逆順に入れ替える
>〜と出力されるように
どっちだ?
むしろ出力したら駄目なんじゃないかな?かな?
009892
2006/11/07(火) 21:04:37009989
2006/11/07(火) 21:17:45>>94
あ、「"」つけるの忘れてました。
y[MAX] = *strcat(argv[2], x);
↓
sprintf(y, "%s%s", argv[2], x);
についてですが、sprintfは、まだ習って無いです。strcatを使って出来ないですかね?
strcatにアスタリスクを付けなければ、うまくいきそうなのですが、
それだとコンパイルに通らないですし。
>>95
あ、リターンも忘れてました。
0100デフォルトの名無しさん
2006/11/07(火) 21:21:46010192
2006/11/07(火) 21:21:48int reverse(char *str)
{
char *p, tmp;
p = str;
for( ; *p != '\0' ; p++);
for( ; p-str > 0 ; str++){
tmp = *(--p);
*p = *str;
*str = tmp;
}
return 0;
}
main(void)
{
char str[30]="abcde";
printf("reverse関数実行前\n%s\n",str);
printf("reverse関数実行後\n");
reverse(str);
printf("%s",str);
return 0;
}
1バイト文字をreverse関数で逆順に並べ替えて、main関数で出力はできたのですが、
2バイト文字だと文字化けしてしまいます。
0102デフォルトの名無しさん
2006/11/07(火) 21:23:27今逆行列を求めるプログラムを作っていて
完全陰解法とSOR法では作り終えてるんですが
行列を増やすとそれほど精度が出ない(発散してしまう)ので困っています。
他に逆行列(n元一次方程式)を解く方法はないのでしょうか?
またよいサイトなどありましたら教えてください。
0103!=94
2006/11/07(火) 21:24:40> strcatにアスタリスクを付けなければ、うまくいきそうなのですが、
うん、strcatでもいけるんだな。
ただ、strcatは何を返すの?そして、*演算子は何をするもの?
char y[MAX];
と定義した変数yの型は何?配列とポインタ理解してる?
0104デフォルトの名無しさん
2006/11/07(火) 21:30:18int reverse(char *str)
{
char *p, tmp;
p = str;
for( ; *p != '\0' ; p++);
for( ; p-str > 0 ; str+=2){
tmp = *(--p,--p);
*p = *str;
*str = tmp;
tmp = *(p+1);
*(p+1) = *(str+1);
*(str+1) = tmp;
}
return 0;
}
010592
2006/11/07(火) 21:39:072バイト文字が正常に逆順に出力されました。
宿題ではないのですが、
もしこれが1バイト文字、2バイト文字が混合されていた場合はどうすればいいのでしょうか?
0106デフォルトの名無しさん
2006/11/07(火) 21:41:17[1] 情報演習のスキル�T
[2] 素数を求めるプログラム
[3] 環境
[3.1] OS: WindowsXP
[3.2] cygwin
[3.3] C
[4] 期限: 11月14日
お願いします。
0107デフォルトの名無しさん
2006/11/07(火) 21:42:34文字コードがわからなきゃムリ
0108デフォルトの名無しさん
2006/11/07(火) 21:44:441) 固定長のwchar_tに変換して処理→単一の処理、変換の必要あり
2) 文字種(1バイト文字か2バイト文字か)を判別して処理→エンコードごとに処理が別、変換の必要なし
0109デフォルトの名無しさん
2006/11/07(火) 21:45:48UNICODEは全部2バイトだから判別する必要なし
JISはエスケープシーケンスの切り替えを検出
シフトJISは2バイト文字の1バイト目かどうか調べる
EUCは最上位ビットを検査
0110デフォルトの名無しさん
2006/11/07(火) 21:51:270111デフォルトの名無しさん
2006/11/07(火) 21:53:32#include <stdio.h>
int main()
{
char s[8]
puts("素数を入力してください");
gets(s);
return 0;
}
0112再帰式
2006/11/07(火) 21:56:05[2] 問題文(含コード&リンク):x^3-2x+5=0の近似解を反復法により計算せよ。
参考URL(反復法):http://ja.wikipedia.org/wiki/%E5%8F%8D%E5%BE%A9%E6%B3%95_(%E6%95%B0%E5%80%A4%E8%A8%88%E7%AE%97)
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語:C
[4] 期限:明日の午前中までにお願いいたします
�@
#include <stdio.h>
#include <math.h>
#define g(x) (pow(x, 3)+2*x-5)/(2*pow(x, 2))
int main(void)
{ double e,f,x,x1;
e=pow(10,-7.0);
f=fabs(x1-x);
x1=1000;
while(f > e)
{ f=fabs(x1-x);
x=x1;
x1=g(x);
}
printf("解は%1.16lf\n",x1);
return 0;
}
0113再帰式
2006/11/07(火) 21:57:49#include <stdio.h>
#include <math.h>
int main(void)
{
double e,f,x,x1,Xn;
e=pow(10,-7.0);
f=fabs(x1-x);
x1=1000;
while(f > e)
{
Xn=(pow(x, 3)+2*x-5)/(2*pow(x, 2));
f=fabs(x1-x);
x=x1;
x1=Xn;
}
printf("解は%1.16lf\n",x1);
return 0;
}
�@と�Aの違いはどこなのでしょうか?
できれば�Aで実行して成功させたいのですが、どこがおかしいのか分かりません。
アドバイスお願いいたします。
0114デフォルトの名無しさん
2006/11/07(火) 21:59:52/*
pが指すマルチバイト文字の長さを返す
このへんはmbrlenとか使ったほうがいい気もするけど
stdio.hしか使うなという条件を守るために使わない
*/
size_t mblen(const char*p){
/* S-JIS決め打ち */
return (*p&0x80) ? 2 : 1;
}
/*
指定したメモリブロックをreverseする
*/
void memrev(char*str,size_t n){
char*p = str+n;
if(str == p)return;/*C言語のポインタの有効範囲の仕様を守るため*/
for(;str < --p;++str){
char c=*str;*str=*p;*p=c;
}
}
/*
マルチバイト文字を考慮したreverse
*/
void reverse(char*str){
int len = 0;
while(str[len]){
int c = mblen(str+len);
memrev(str+len,c);
len+=c;
}
memrev(str,len);
}
0115デフォルトの名無しさん
2006/11/07(火) 22:00:52#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int *sieve_of_eratosthenes(int upper) {
int i, notprime, *integers = (int*)malloc(sizeof(int) * (upper + 1));
for (i = 2; i <= upper; i++) integers[i] = 1;
integers[0] = integers[1] = 0;
for (i = 2; i <= upper / 2; i++) {
notprime = i;
while ((notprime += i) <= upper) integers[notprime] = 0;
}
return integers;
}
int is_prime(int n) {
int *sieve = sieve_of_eratosthenes(n), ret = sieve[n];
free(sieve);
return ret;
}
int main(void) {
int upper_num, *sieve, i;
printf("MAX?:");
scanf("%d", &upper_num);
sieve = sieve_of_eratosthenes(upper_num);
for (i = 2; i <= upper_num; i++)
if (sieve[i]) printf("%4d", i);
free(sieve);
}
0116デフォルトの名無しさん
2006/11/07(火) 22:07:10[2] 問題文(含コード&リンク):第1因数に含まれる第2因数と第3因数の間にある文字列を返す関数を作る(因数はすべて文字列)
[3] 環境
[3.1] Linux
[3.2] gcc 3.4
[3.3] C
[4] 期限: 11/9
[5] その他の制限:特になし
0117デフォルトの名無しさん
2006/11/07(火) 22:07:52for (i = 2; i <= upper / 2; i++) {
+ if (!integers[i]) continue;
notprime = i;
これがないと篩になってないかと。
0118デフォルトの名無しさん
2006/11/07(火) 22:10:47なんで表示してるの?
011992
2006/11/07(火) 22:16:580120デフォルトの名無しさん
2006/11/07(火) 22:20:01#include<stdio.h>
int get_price(int number){
if(number<5) return 2000;
if(number<10) return 1900;
if(number<15) return 1500;
if(number<20) return 1400;
return 1200;
}
int main(void){
int i, n, m;
int total_price=0, total_profit=0;
printf("客の人数を入力してください ");
scanf("%d", &n);
for(i=0;i<n;i++){
printf("購入個数を入力してください ");
scanf("%d", &m);
total_price+=m*get_price(m);
total_profit+=m*(get_price(m)-1000);
printf("\n支払い価格 %d 円\n", m*get_price(m));
}
printf("\n総販売価格 %d 円\n総利益 %d 円\n", total_price, total_profit);
return 0;
}
0121デフォルトの名無しさん
2006/11/07(火) 22:28:41堅苦しいことを言えば、そもそもwchar_tはUnicodeと決まっているわけではないし、
文字集合がUnicodeでも、符号化にUTF-8やUTF-16を使っていれば、固定長とは限らないわけで。
0122デフォルトの名無しさん
2006/11/07(火) 22:59:42これはシンタックスエラーな問題文ですね
0123デフォルトの名無しさん
2006/11/07(火) 22:59:58y[0]='\0';
strcat(y, argv[2]);
strcat(y, x);
または
strcpy(y, argv[2]);
strcat(y, x);
0124デフォルトの名無しさん
2006/11/07(火) 23:00:43s/因数/引数/g
でいいのかな?
0125デフォルトの名無しさん
2006/11/07(火) 23:05:19というより、いろんな意味に取れるのが問題かと…
>>116 のやりたい事は何となく分かるんだけどね
コマンド
./a.out futongafuttonda uton utton
実行結果
gaf
ってところか
0126デフォルトの名無しさん
2006/11/07(火) 23:09:09>関数を作る
main も関数には違いないけど、多分題意とは違うとおもふ。
0128デフォルトの名無しさん
2006/11/07(火) 23:53:22事前に200までの5乗を計算するだけでも現実的時間で終わるよ
0129デフォルトの名無しさん
2006/11/07(火) 23:55:100130デフォルトの名無しさん
2006/11/07(火) 23:58:44計算するアルゴリズムはほとんど一緒なんだが、
多倍長整数の計算が遅くて><
double で計算するなんて思いつきもしなかった…
0131デフォルトの名無しさん
2006/11/08(水) 00:06:240132デフォルトの名無しさん
2006/11/08(水) 00:09:37long long使ってもいいんじゃない?
>>35はVC++6.0だからわからんけど、最近のなら対応してる
0133OS
2006/11/08(水) 00:16:50[2] 問題文(含コード&リンク):
第4回課題 セルオートマトンの動作推移を表現する。
・渋滞の様子をC++を使って表現する。
・空白セルと塗りつぶしセルの二つを用意し、塗りつぶしセルは、前が空白セルの場合は、進むことが出来るが、塗りつぶしセルの場合は、進むことが出来ない。(進行方向は左。)
・時間経過と共に、どのような推移をするのかを示す。(塗りつぶしセルがなくなった時点で終了。)
・結果表示は、別ウィンドウが望ましいが、コマンドライン上で構わない。
以下に、例を示す。
問題 □□■□■□が与えられるとする。
t=1 □■□■□□
t=2 ■□■□□□
t=3 □■□□□□
t=4 ■□□□□□
終了
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: C、C++ (出来ればC++が望ましい。)
[4] 期限: 2006年11月8日 23:59まで(出来れば23時まで。)
[5] その他の制限: 特になし
0134OS
2006/11/08(水) 00:18:380135 ◆rqrMes8uog
2006/11/08(水) 00:50:42[2] 問題文(含コード&リンク):
最初にあなたは 1 から 99 までの範囲で数を一つ頭に思い浮かべます.
推測値を提示し,その推測が当たっているかどうか,
当たっていなければより大きいか小さいかを繰り返し質問して,
あなたからの答に基づいて推測値を改善し,
最終的にあなたが思い浮かべた数を言い当てるプログラムを作成しなさい.
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語:C++
[4] 期限: 2006年11月8日(水)23:59まで
[5] その他の制限:
・質問への答え方では,「当たりなら0,もっと小さければ1,
もっと大きければ2を入力してください」といったルールを示す。
・質問に対する想定外の答え方には警告を出す
・正しい数を当てるまでにかかった回数を数えて,その回数に応じたメッセージを出す.
・コンピューターからの最初の質問は「50ですか?もっと大きい?小さい?」とする。
以上です。C++を始めたばかりです。
>>133と期限がかぶってしまいまして、すいません。
どうか宜しくお願いします!
0136デフォルトの名無しさん
2006/11/08(水) 01:10:29VC6なら型名は__int64、printfの変換指定子は%I64dね。
0137デフォルトの名無しさん
2006/11/08(水) 01:41:55すまん、俺自身セルオートマトンをいまいち理解してないのだが、
これって塗りつぶしセルが時間に従って左側に移動しているだけであって、
空白セル云々は関係ないように見えるんだが(例を見る限り)
0138デフォルトの名無しさん
2006/11/08(水) 01:43:16http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2898.cpp
0139デフォルトの名無しさん
2006/11/08(水) 02:09:29http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2899.txt
0140デフォルトの名無しさん
2006/11/08(水) 02:32:07鬼才だなwワロタww
0141デフォルトの名無しさん
2006/11/08(水) 02:53:580142デフォルトの名無しさん
2006/11/08(水) 02:59:18確かに。マイテンプレを修正しておく。
0143デフォルトの名無しさん
2006/11/08(水) 02:59:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2900.c
0144デフォルトの名無しさん
2006/11/08(水) 03:00:010145デフォルトの名無しさん
2006/11/08(水) 03:06:06そもそも機能を覚えさせようとしてるだけであって
推奨してるわけではないだろう
goto文の是非にあたってはここで議論すべきないようではないし
0146 ◆rqrMes8uog
2006/11/08(水) 03:24:130147OS
2006/11/08(水) 04:49:05おそらく、発展問題として、今後
□□■
は
□■□
となるが、
■□■
は
■■□
となる左側で止めてしまう場合があるのです。
この問題は、渋滞の研究に使うものなので、□は、動ける場所、■は、渋滞していて動けない場所というものです。
0148OS
2006/11/08(水) 05:01:07発展問題に、左側で止めた場合、n秒後に、止めが解除されるとしてプログラムを作れというものもあります。
nは、コマンドラインから入力。(入力方式は問わない。)
(例)
t=1 ■□■
t=2 ■■□
t=3 ■■□
t=4 ■■□
t=5 ■□□
この場合、n=2と指定します。■■□の状態で、2秒、膠着状態が続いてますので。
今、この場合のプログラムも考えてますが、どうも徹夜気味です。宜しくお願いします。
0149デフォルトの名無しさん
2006/11/08(水) 11:51:13[2]
● 2つの自然数を入力して、その間にある素数を表
示するプログラムを作成しましょう。
■ プロジェクト名:07prime ファイル名:07prime.c
■ 入力:整数(自然数)を2つ
■ 大小関係が逆でも対応できるようにすること。
■ 処理:2つの自然数の間で素数の場合、その数を表示
する
■ 素数:1と自分自身以外は割り切れない数
■ 出力:素数の値
■ 自分の学籍番号下4桁と下4桁+100で試してみよう
■ ソースコードを印刷し、自分の学籍番号下4桁と下4桁
+100の結果を記入して、提出しましょう
[3]WindowsXP
[4]11月13日
0150115
2006/11/08(水) 12:12:35>>149
#include <stdio.h>
int main(void) {
int i, j, min, max, temp;
scanf("%d%d", &min, &max);
if (min > max) {
temp = min;
min = max;
max = temp;
}
for (i = min; i <= max; i++) {
for (j = 2; j <= i; j++) if (i % j == 0) break;
if (i == j) printf("%5d", i);
}
return 0;
}
0152デフォルトの名無しさん
2006/11/08(水) 12:33:05画面表示までやるのか、表示はgnuplotに任せちゃっていいのか
0153デフォルトの名無しさん
2006/11/08(水) 13:19:40>>69
69は0.02になってるけどな
表示くらい自分でできるだろ
0154デフォルトの名無しさん
2006/11/08(水) 15:30:08[2] 問題文(含コード&リンク): 名前と5教科の点数(国語、数学、社会、理科、英語)と
基準点を入力して、基準点以上の該当科目と点数を表示する関数
void search(int *mark,int std)を作成せよ。
mark:点数配列 std:基準点
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:VC6.0
[3.3] 言語: C
[4] 期限: 決まってないです。
[5] その他の制限: 現在、配列とポインタのところをやっています。
よろしくお願いします。
0155デフォルトの名無しさん
2006/11/08(水) 15:39:02それで間違いないの?
0156154
2006/11/08(水) 16:00:35国語の点数:「40」
数学の点数:「50」
社会の点数:「60」
理科の点数:「70」
英語の点数:「80」
基準点:「60」
テストユーザーさんの60点以上の科目は〕
(社会の点数:60
理科の点数:70
英語の点数:80)
〔〕の処理をmain関数で、
「」をscanfでキーボードから入力し
()の部分をsearch関数内でやるのだと思うのですが
0157デフォルトの名無しさん
2006/11/08(水) 16:13:17[2] 問題文(含コード&リンク):
1、自然数n を一つ読み込み、n が2 でも3 でも割り切れない場合は「!」を、
そうでない場合は「@」を画面に書き出すプログラムを作成せよ。
2、自然数n を一つ読み込み、それに続いて画面に2, 4, 6, ... 2n を(都合n 個)
画面に書き出すプログラムを作成せよ。
3、自然数n を一つ読み込み、それを2 で何回割ると0 になるかを数え、その回
数を画面に書き出すプログラムを作成せよ。なお、割り算において割り切れ
ない場合は結果を切り捨てて整数にするものとする。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: (不明)
[3.3] 言語: (C++)
[4] 期限: 明日の正午までには…
お願いいたします。授業内容が早すぎてまともにできません…
0158デフォルトの名無しさん
2006/11/08(水) 16:16:11授業が早いなんて信じられない
0159デフォルトの名無しさん
2006/11/08(水) 16:20:24void func1(int n)
{
printf("%c\n",(n%2 != 0 && n%3 != 0) ? '!' : '@');
}
void func2(int n)
{
int i;
for(i = 2; i<=2*n; i*=2)
printf("%d,",i);
}
void func3(int n)
{
int c=0;
while((n>>c) != 0)c++;
printf("%d回\n",c);
}
0160デフォルトの名無しさん
2006/11/08(水) 16:31:23言いたいことは大体分かるんだが、どうにも例が怪しい。
t=4とt=5の間の遷移はおかしくないか?
そもそも147-148は誰に向けて言ってるの?
0161デフォルトの名無しさん
2006/11/08(水) 16:33:48#include <stdio.h>
#include <stdlib.h>
char subject[6][7] = {"国語","数学","社会","理科", "英語","基準点"};
void search(int *mark,int std)
{
int i;
for(i=0; i<5; i++)
if(mark[i] >= std)
printf("%sの点数:%d\n",subject[i],mark[i]);
}
int main(int argc, char *argv[])
{
int mark[6];
int i;
char name[64];
printf("名前:");
scanf("%s",name);
for(i=0; i<6; i++)
{
printf("%sの点数:",subject[i]);
scanf("%d",&mark[i]);
}
printf("%sさんの%d点以上の科目は\n",name,mark[5]);
search(mark, mark[5]);
return 0;
}
0162デフォルトの名無しさん
2006/11/08(水) 16:37:34訂正
void func2(int n)
{
int i;
for(i = 2; i<=2*n; i+=2)
printf("%d,",i);
}
0163デフォルトの名無しさん
2006/11/08(水) 16:47:47こんなんどうだべ?環境依存だけんども。
#include <stdio.h>
#define 科目数 5
char* kamoku[科目数] = {"国語", "数学", "社会", "理科", "英語"};
void search(int* mark, int std)
{
int i;
char* name = (char*) mark[5];
printf("名前 : %s\n", name);
for(i=0; i!=科目数; i++)
if(mark[i] >= std)
printf("%s : %d点\n", kamoku[i], mark[i]);
}
int main(void){
int i;
int mark[科目数+1];
char name[] = "与太郎";
for(i=0; i!=科目数; i++){
printf("%s 点数>", kamoku[i]); scanf("%d", &mark[i]);
}
mark[5] = (int) name;
search(mark, 50);
return 0;
}
0164デフォルトの名無しさん
2006/11/08(水) 16:54:340165デフォルトの名無しさん
2006/11/08(水) 16:56:260166デフォルトの名無しさん
2006/11/08(水) 17:08:070167デフォルトの名無しさん
2006/11/08(水) 17:11:570168デフォルトの名無しさん
2006/11/08(水) 17:13:28業務プログラムを作ってごらん
ローマ字だらけのプログラムになるから
0169デフォルトの名無しさん
2006/11/08(水) 17:25:16kaisuu
とか使うなあ
0170デフォルトの名無しさん
2006/11/08(水) 17:32:35VC++6.0で通るかは知らんが、こうしたっていいくらいだべ。
#define 科目数 5
#define 末尾 科目数
char* 科目名[科目数] = {"国語", "数学", "社会", "理科", "英語"};
void search(int* mark, int std)
{
int カウンタ;
char* 名前 = (char*) mark[末尾];
printf("名前 : %s\n", 名前);
for(カウンタ=0; カウンタ!=科目数; ++カウンタ)
if(mark[カウンタ] >= std)
printf("%s : %d点\n", 科目名[カウンタ], mark[カウンタ]);
}
0172デフォルトの名無しさん
2006/11/08(水) 17:39:29[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2902.txt
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語: C
[4] 期限:10日まで
[5] その他の制限:
0173デフォルトの名無しさん
2006/11/08(水) 17:50:21[2] 問題文(含コード&リンク):
jpg画像をファイルから読み込み、それを拡大縮小できるようにし、拡大(または縮小)した画像をjpgで保存するプログラムを作成せよ。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:2006/11/13
[5] その他の制限:
よろしくお願いします
0174デフォルトの名無しさん
2006/11/08(水) 18:49:09それは自分でデコードするのか?
それともlibjpegとか使っていいの?
0175デフォルトの名無しさん
2006/11/08(水) 19:05:28全部自力って・・・
0176デフォルトの名無しさん
2006/11/08(水) 19:31:42出来なくもないし画像処理演習
なんだからやっても何の不思議もない
0178デフォルトの名無しさん
2006/11/08(水) 19:45:00http://www.amazon.co.jp/gp/product/4797330457
JPEGはこれをパクれ
JPEGのデコードやらせるくらいの演習だから、拡大縮小は自分でできるよな?
0179デフォルトの名無しさん
2006/11/08(水) 19:45:21できればとかじゃなくて宿題でどういう指示が出たかが問題なんじゃないの
教員が想定してないレベルの宿題を他人に作らせると後々ややこしくなるだけだぜ
0180173
2006/11/08(水) 19:54:00完成品のプログラムを見てヒントもらいたいだけだ
拡大縮小処理もたぶんできてる
libjpeg使ってもいいから早くやって下さい
0181デフォルトの名無しさん
2006/11/08(水) 19:58:24http://www.amy.hi-ho.ne.jp/jbaba/jpeg11.htm
JPEG->DIBの完成品のプログラムあるよ
0182デフォルトの名無しさん
2006/11/08(水) 20:00:15#include <stdio.h>
int kaijo(int n) {
if (!n) return 1;
else return n * kaijo(n - 1);
}
double mycos(double x) {
int i, s = -1;
double r = 1, xn = x * x;
for (i = 2; i <= 10; i += 2, xn *= x * x, s *= -1) {
r += s * xn / kaijo(i);
}
return r;
}
double mysin(double x) {
int i, s = -1;
double r = x, xn = x * x * x;
for (i = 3; i <= 11; i += 2, xn *= x * x, s *= -1) {
r += s * xn / kaijo(i);
}
return r;
}
int main(void) {
int i;
printf("x cos sin\n");
for (i = -28; i != 29; i++)
printf("% .1f % .8f % .8f\n", i / 10., mycos(i / 10.), mysin(i / 10.));
}
0183173
2006/11/08(水) 20:20:36ライブラリ?は必要なら使ってもよいと思います。
画像の拡大縮小の仕方もわかりません。
>>181
リンク先のプログラムを見てみましたが、どう修正すればいいのかわかりません。
よろしくお願いします。
0184デフォルトの名無しさん
2006/11/08(水) 20:58:11[2] 問題文(含コード&リンク):細線化しなさい
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:VS2005
[3.3] 言語: VC++ MFC
[5] その他の制限:ゲットピクセルで8近傍を取得して、それの結果で注目点を白にするか黒にするかを決める。
8近傍はd[7]にGet8関数を使って取得。d[0]は注目点の右側でそこから反時計回りで1,2,3とかわっていく。
で、今Get8はできてます。for(n=0; n<=7; n++) d[i]=get8(n,i,j,CDC) で8近傍がdに格納されます。
画像は2値化画像です。
お願いします><
0185デフォルトの名無しさん
2006/11/08(水) 21:00:28こんなんでいいんかな。
void triangle(int data[][Y_SIZE][3], int x1, int y1, int x2, int y2,int x3, int y3){
float x,y;
float dx,dy=0.2;
dx = (float)(x2-x1)/(y2-y1)*dy;
for(x=x1,y=y1;y<=y2;y+=dy,x+=dx) memset(data[(int)x][(int)y],0,sizeof(int)*3);
dx = (float)(x3-x2)/(y3-y2)*dy;
for(x=x2,y=y2;y<=y3;y+=dy,x+=dx) memset(data[(int)x][(int)y],0,sizeof(int)*3);
dx = (float)(x3-x1)/(y3-y1)*dy;
for(x=x1,y=y1;y<=y3;y+=dy,x+=dx) memset(data[(int)x][(int)y],0,sizeof(int)*3);
}
0186デフォルトの名無しさん
2006/11/08(水) 21:09:27細線化の対象は黒ドットだけですか?
白も含みますか?
0187デフォルトの名無しさん
2006/11/08(水) 21:13:34黒だけでいいです。白地に黒い文字を書いてそれが細線化されるような感じでおねがいします。
0188デフォルトの名無しさん
2006/11/08(水) 21:13:44#include <stdio.h>
int kaijo(int i) { return (i>0 ? i * kaijo(i-1) : 1 ); }
double enujo(double x, int n) { return (n>0 ? x * enujo(x, n-1) : 1 ); }
double mycosR(double x, int i) { return (i>0 ? enujo(x,i+i-2)/kaijo(i+i-2) - mycosR(x,i-1) : 0); }
double mycos(double x) { return -mycosR(x,6); }
double mysinR(double x, int i) { return (i>0 ? enujo(x,i+i-1)/kaijo(i+i-1) - mysinR(x,i-1) : 0); }
double mysin(double x) { return -mysinR(x,6); }
main(void) {
double x;
for(x=-2.8;x<=2.8;x+=0.1) printf("%.8f %.8f\n",mycos(x),mysin(x));
}
その宿題の意図するところは再帰関数なんジャマイカ?
0189デフォルトの名無しさん
2006/11/08(水) 21:20:39ということは main関数も再帰化したほうがいいのか。
#include <stdio.h>
int kaijo(int i) { return i>0 ? i * kaijo(i-1) : 1 ; }
double enujo(double x, int n) { return n>0 ? x * enujo(x, n-1) : 1 ; }
double mycosR(double x, int i) { return i>0 ? enujo(x,i+i-2)/kaijo(i+i-2) - mycosR(x,i-1) : 0; }
double mycos(double x) { return -mycosR(x,6); }
double mysinR(double x, int i) { return i>0 ? enujo(x,i+i-1)/kaijo(i+i-1) - mysinR(x,i-1) : 0; }
double mysin(double x) { return -mysinR(x,6); }
int mainR(double x) { return x<=2.8 ? printf("%.8f %.8f\n",mycos(x),mysin(x)), mainR(x+0.2) : 1; }
main(void) { mainR(-2.8); }
0190デフォルトの名無しさん
2006/11/08(水) 21:29:420191デフォルトの名無しさん
2006/11/08(水) 22:07:52[1] 授業単元: ポインタ
[2] 問題文(含コード&リンク): 文字型配列の先頭アドレスを受け取り、文字列内の文字を昇順にソート
する関数void sort_ch()を作成せよ。
[3] 環境
[3.1] OS: /Linux/
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: どちらでも可
[4] 期限: 今週いっぱい
[5] その他の制限: ポインタを習っています。
0192デフォルトの名無しさん
2006/11/08(水) 22:16:14バブルソートでよければ
void sort_ch( char *Input, int length )
{
int No;
for(No=0; No < length-1; No++ ){
if( Input[No] > Input[No+1] ){
swap( &Input[No], &Input[No+1] );
}
}
if(length > 2){
sort_ch( Input, length-1 );
}
}
void swap( char *i, char *j )
{
char Buff;
Buff = *i;
*i = *j;
*j = Buff;
}
0193デフォルトの名無しさん
2006/11/08(水) 22:17:320194デフォルトの名無しさん
2006/11/08(水) 22:19:56ググレカス
0195デフォルトの名無しさん
2006/11/08(水) 22:21:43つかググれ、その方が早いから。
0196デフォルトの名無しさん
2006/11/08(水) 22:26:57あんま早くないけど安定
これくらいの理解でいいんだろうか
0197デフォルトの名無しさん
2006/11/08(水) 22:43:360198OS
2006/11/08(水) 22:54:52[2] 問題文(含コード&リンク):
第4回課題 セルオートマトンの動作推移を表現する。
・渋滞の様子をC++を使って表現する。
・空白セルと塗りつぶしセルの二つを用意し、塗りつぶしセルは、前が空白セルの場合は、進むことが出来るが、塗りつぶしセルの場合は、進むことが出来ない。(進行方向は左。)
・時間経過と共に、どのような推移をするのかを示す。(塗りつぶしセルがなくなった時点で終了。)
・結果表示は、別ウィンドウが望ましいが、コマンドライン上で構わない。
以下に、例を示す。
問題 □□■□■□が与えられるとする。
t=1 □■□■□□
t=2 ■□■□□□
t=3 □■□□□□
t=4 ■□□□□□
終了
0199OS
2006/11/08(水) 22:55:25□□■
は
□■□
となるが、
■□■
は
■■□
となる左側で止めてしまう場合があるのです。
この問題は、渋滞の研究に使うものなので、□は、動ける場所、■は、渋滞していて動けない場所というものです。
ですが、取りあえずは、セルが左側に移動するものを第一段階として作りたかったので、宜しく御願いします。
発展問題に、左側で止めた場合、n秒後に、止めが解除されるとしてプログラムを作れというものもあります。
nは、コマンドラインから入力。(入力方式は問わない。)
(例)
t=1 ■□■
t=2 ■■□
t=3 ■■□
t=4 ■■□
t=5 ■□□
この場合、n=2と指定します。■■□の状態で、2秒、膠着状態が続いてますので。
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: C、C++ (出来ればC++が望ましい。)
[4] 期限: 2006年11月9日 23:59まで(出来れば23時まで。)
[5] その他の制限: 特になし
0200デフォルトの名無しさん
2006/11/08(水) 23:15:11本当に困っているので、助けてください・・・
解説的なものをつけていただけたら幸いです・・
【質問テンプレ】
[1] 授業単元: ポインタ
[2] 問題文(含コード&リンク): 名前(char),身長(double),体重(double)、視力(視力構造体)これらのデータをメンバとする
構造体を定義し、入力と表示を行うプログラムを作成しなさい。
入力件数は最大5件で、名前は19文字までの入力とし、範囲外だったのならば
エラーメッセージを表示し再入力させてください。名前に"END"が入力されたときは
入力終了とする。表示は身長で昇順にソートして出力。
また、身長、体重は小数点以下第一位までの表示とする。視力は小数点以下第三位までの表示とする。
出力の幅は、名前が19文字分、その他は5文字分で指定してください。
視力は右()、左()をメンバとする構造体でで扱ってください。
1件分の入力はinput_data()で、表示はdisplay_data()で、ソートはsort_data()でと処理を関数に分けて行ってください。
名前入力の最初に"END"が入力された場合は、"Input data is nothing!"と出力しなさい。
[3] 環境
[3.1] OS: /Linux/
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: どちらでも可
[4] 期限: 今週いっぱい
[5] その他の制限: 構造体を習っています。
0201デフォルトの名無しさん
2006/11/08(水) 23:16:53[2] 問題文(含コード&リンク):
#include <stdio.h>
#include <string.h>
#define MAX 10
int main(void)
{char a[MAX]="";
char b[MAX]="";
char c[MAX]="Hello";
strcpy(a, c);
strcpy(b, "Good Bye");
printf("%s,%s,%s\n", a, b, c);
return 0;}
このプログラムのbのサイズを1にして実行した時
なぜ実行結果がこのようになるか説明しなさい。
まず、お聞きしたいのが、bのサイズを1にするとは、
char b[MAX]=""; を char b[1]=""; とすれば良いのですよね?
この実行結果は ood Bye,Good Bye,Hello となりましたが、
なぜ、aにHelloではなくGoodbyeが入ってるのですか?
プログラム的にこのようになるのは、おかしい気がするのですが…。
また、なぜGoodbyeのGが消えているのでしょうか?
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日の朝9時まで
[5] その他の制限: なし
0202デフォルトの名無しさん
2006/11/08(水) 23:19:16説明が求められてるだけ、ですよね。
ならバッファオーバーランでググってみれば良いと思う。
0203わからないんです。
2006/11/08(水) 23:25:56簡単に言うと、子プロセスがsystem関数で実行したシェル内で別のシェルを実行した場合に戻り値が取得できないんですが。
Oracleにコネクトしないと取得できるのですが。
0204デフォルトの名無しさん
2006/11/08(水) 23:28:52>>1
0205デフォルトの名無しさん
2006/11/08(水) 23:30:260206デフォルトの名無しさん
2006/11/08(水) 23:30:49#include <stdio.h>
char *sort(char *c){return *(c+1)!=0?sort(c+1),(*c>*(c+1) ? *c^=*(c+1),*(c+1)^=*c,*c^=*(c+1):c),sort(c+1):c;}
void sort_ch(char *c){return sort(c);}
main (void) {
char s[32]="/tech/1162771475/";
sort_ch(s);
printf("%s\n",s);
}
0207デフォルトの名無しさん
2006/11/08(水) 23:37:15それは問題文がvoid指定されていなければもっと簡略化できたのに
という怨念みたいなもの。
0208デフォルトの名無しさん
2006/11/08(水) 23:38:40[2] 問題文(含コード&リンク): sin(x)の値をマクローリン展開を用いて計算するプログラムを作成せよ。第20項まで求めることとする。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11/11
[5] その他の制限:ヒントΣ[n=0→∞]{(-1)^n1}x^2n+1/(2n+1)! 単位はラジアン
0209デフォルトの名無しさん
2006/11/08(水) 23:41:51[2]
今回はファイル入出力の応用で、
ファイルの簡単な暗号化及び複合化を行うプログラムを作成する。
暗号化は改行以外の文字のアスキーコードに1を足す
複合化はその逆の動作を行うこと
引数の2番目が暗号化と複合化のどちらかを決定、
3番目が入力ファイル名を示し、
4番目が出力ファイル名を示す
上記のようなプログラムを作成せよ
[3]OS:Linux コンパイラ:gcc3.4 言語:C
[4]明日
[5]関数・ポインタ・構造体・ファイル入出力まで学びました
0210201
2006/11/08(水) 23:46:21レスありがとうございます。
とりあえず、ぐぐってみましたが、自分と同じような例は、なかったです。
説明と言っても、そこまで詳しく説明しなくても問題ないです。
とりあえず、201で自分がした質問
>まず、お聞きしたいのが、bのサイズを1にするとは、
>char b[MAX]=""; を char b[1]=""; とすれば良いのですよね?
>この実行結果は ood Bye,Good Bye,Hello となりましたが、
>なぜ、aにHelloではなくGoodbyeが入ってるのですか?
>プログラム的にこのようになるのは、おかしい気がするのですが…。
>また、なぜGoodbyeのGが消えているのでしょうか?
の回答を頂ければ、それをヒントに自分で説明できそうです。
0211デフォルトの名無しさん
2006/11/08(水) 23:48:21printf("%p %p %p\n", a, b, c);
0212201
2006/11/08(水) 23:52:08レスありがとうございます。
実行しアドレスを調べてみましたが、全部バラバラでした。
このことから何かが読み取れそうですが、解らないです…。
0213デフォルトの名無しさん
2006/11/09(木) 00:03:42printf("%X %X %X\n",a,b,c);で各々のアドレスを調べてみよう
bのサイズがMAXの時、俺の環境だと
22FF60 22FF50 22FF40
となる
bのサイズが1のときは
22FF60 22FF5F 22FF40
これのダンプをちと書くと
b=MAX
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
22FF40 48 65 6C 6C 6F 00
22FF50 47 6F 6F 64 20 42 79 65 00
22FF60 48 65 6C 6C 6F 00
b=1
+0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F
22FF40 48 65 6C 6C 6F 00
22FF50 47
22FF60 6F 6F 64 20 42 79 65 00
48 65 6C 6C 6F 00は"Hello"、47 6F 6F 64 20 42 79 65 00は"Good Bye"
なんか書くのが面倒になってきたけどようはstrcpy(b, "Good Bye");によって
aの一部が上書きされちまったってわけ
文字のおわりは00で判断するから
b = "Good Bye"
a = "ood Bye"
になるわけ
0214デフォルトの名無しさん
2006/11/09(木) 00:04:54[2] 問題文(含コード&リンク):
//モンテカルロ法でパイを求める
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int ()
{
double p,pai,x,y;
unsigned int k,n,count;
count=0;
cout<<"試行の回数"<<endl;
cin>>n;
srand((unsigned int)time(0));
for(k=0;k=n;k++)
//1以下の乱数を出す
x=(double)rand()/(double)RAND_MAX;
y=(double)rand()/(double)RAND_MAX;
if(x*x+y*y>1)continue;
else(count=count+1)
p=(double)count/n;
pai=p*4.0;
cout<<"paiの値は"<<pai;
return 0;
}
これで実行すると エラー E2040 2.cpp 6: 宣言が正しく終了していない
と、出るんですが6行目のどこを直せばいいのでしょうか。
くだらない質問かもしれませんが、よろしくお願いします。
[3]Windows XP 、Borland C++ 5.5.1 、C++
[4] 期限:無期限
0215デフォルトの名無しさん
2006/11/09(木) 00:07:08○文字列のおわり
0216デフォルトの名無しさん
2006/11/09(木) 00:08:08×int()
○int main()
なんだよこのミス
ありえねぇだろ
0217214
2006/11/09(木) 00:18:44ありがとうございます。
次のエラーに変わったんですけど、どう直したらいいでしょうか。
警告 W8060 2.cpp 14: おそらく不正な代入(関数 main() )
エラー E2033 2.cpp 18: continue の位置が誤っている(関数 main() )
エラー E2379 2.cpp 20: ステートメントにセミコロン(;)がない(関数 main() )
プログラムを勉強し始めたばかりで何もわからないので、ヒントだけでもお願いしますm(__)m
0218デフォルトの名無しさん
2006/11/09(木) 00:25:21あきらめる
0219デフォルトの名無しさん
2006/11/09(木) 00:27:01#include <stdio.h>
double d(double x, double n) {
return n == 0 ? x : -x * x * d(x, n - 1) / (2 * n + 1) / (2 * n);
}
double mysin(double x) {
int i;
double r = 0.;
for (i = 0; i < 20; i++) r += d(x, i);
return r;
}
int main(void) {
double i;
for (i = 0.; i <= 3.1415926535898; i += 0.31415926535898) printf("%f\n", mysin(i));
}
0220デフォルトの名無しさん
2006/11/09(木) 00:27:11多分、計算機化学は計算機科学になおさないと
コンパイルエラーになるんじゃないか?
0221デフォルトの名無しさん
2006/11/09(木) 00:40:480222デフォルトの名無しさん
2006/11/09(木) 00:44:03よく眺めるんだな
#include<iostream>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
double x, y;
int n, count = 0;
cout << "試行の回数" << endl;
cin >> n;
srand(static_cast<unsigned int>(time(0)));
for (int i = 0; i < n; ++i) {
x = (double)rand() / RAND_MAX;
y = (double)rand() / RAND_MAX;
if (x * x + y * y < 1) ++count;
}
cout << "piの値は" << count * 4.0 / n;
return 0;
}
0223デフォルトの名無しさん
2006/11/09(木) 00:52:42#include <cmath>
using namespace std;
double monte_carlo(){return M_PI}
int main()
{
cout << "piの値は" << monte_carlo();
return 0;
}
モンテカルロ法ならこっちのほうが簡潔だぜ
0224209
2006/11/09(木) 00:54:300225デフォルトの名無しさん
2006/11/09(木) 00:56:05モンテカルロ法でそこまで高速・高精度に計算するとはお前天才だな
0226デフォルトの名無しさん
2006/11/09(木) 00:57:42書いたけど、アップローダが死んでるぽいから、代わりのURLちょうだい。
0227デフォルトの名無しさん
2006/11/09(木) 00:59:16は?お前馬鹿だな!入力とらないとばれるだろ?
0228214
2006/11/09(木) 01:27:26計算機科学ではなく、計算機化学という授業名なんです。
>>221,222
プログラム作れました。
乱数を用いた例として授業で示されたものだったのですが
知識がないので、わからなくて質問させて頂きました。
ありがとうございましたm(__)m
0229226
2006/11/09(木) 02:03:02もう寝る。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(int argc, char *argv[]){
if( argc != 4 ) {printf("Usage : command [e|d] [infile] [outfile]\n") ;}
else {if( 0 == (strcmp(argv[1],"e")) ) {encode(argv[2], argv[3]) ; }
else if(0 == ( strcmp(argv[1],"d")) ) {decode(argv[2], argv[3]) ;}
else {printf("オプションの指定が間違っています。\n") ; }}
return(0) ;
}
int encode(char *iname, char *oname){
FILE *infp, *outfp ;
char c ;
if( NULL == (infp = fopen(iname,"r")) ) {fprintf(stderr,"ファイルのオープンに失敗しました。\n") ; exit(1) ;}
else {if( NULL == (outfp = fopen(oname, "w")) ) {fprintf(stderr,"ファイルのオープンに失敗しました。\n") ; exit(1) ;}
while( EOF != (c = getc(infp)) ) {putc((c=='\n'?c:c+1), outfp) ;}}
return(0) ;
}
int decode(char *iname, char *oname){
FILE *infp, *outfp ;
char c ;
if( NULL == (infp = fopen(iname,"r")) ) {fprintf(stderr,"ファイルのオープンに失敗しました。\n") ;exit(1) ;}
else {if( NULL == (outfp = fopen(oname, "w")) ) {fprintf(stderr,"ファイルのオープンに失敗しました。\n") ; exit(1) ;}
while( EOF != (c = getc(infp)) ) { putc((c=='\n'?c:c-1), outfp) ; }}
return(0) ;
}
0230226
2006/11/09(木) 02:04:19コマンド名 e 入力ファイル 出力ファイルで暗号化
コマンド名 d 入力ファイル 出力ファイルで復号化ね。
やっつけだけど。
0231デフォルトの名無しさん
2006/11/09(木) 02:07:48#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char *func(const char *a, const char *b, const char *c){
char *pb, *pc, *temp, *ret;
int i, keylen;
pb=strstr(a, b);
pc=strstr(a, c);
if(pb==NULL || pc==NULL)
return NULL;
keylen=strlen(b);
if(pb>pc){
temp=pb;pb=pc;pc=temp; // swap(pb, pc)
keylen=strlen(c);
}
if(keylen>=pc-pb) return NULL;
ret=malloc(pc-pb-keylen+1);
for(i=0;i<pc-pb-keylen;i++)
ret[i]=pb[keylen+i];
ret[i]='\0';
return ret;
}
int main(void){
printf("%s\n", func("futongafuttonda", "utton", "uton"));
return 0;
}
023260
2006/11/09(木) 02:45:18変数の初期化のループに誤りがあったようです
0233デフォルトの名無しさん
2006/11/09(木) 10:45:59#include<stdio.h> #include<string.h> #define MAX 5 typedef struct { double
l_eyesight; /*左視力*/ double r_eyesight; /*右視力*/} Eyesight; typedef struct
{char name[20]; /*名前*/ double height; /*身長*/ double weight; /*体重*/
Eyesight eyesight; /*視力*/ } Data; void input_data(Data *, int *); void
display_data(Data *, int *); void sort_data(Data *, int *); int main(){ int *i;
Data data[MAX], x; input_data(data, i); sort_data(data, i); display_data(data,
i); return 0; } /*入力処理*/ void input_data(Data *data, int *n){ char *name;
int i; *n = 0; for (i = 0; i < MAX; i++){ do{ printf("名前:"); scanf("%s",
name); if (strlen(name) > 19){ printf("名前が長すぎです\n"); } else {
strcpy(data[i].name, name); break; } }while(1); if ((strcmp(data[i].name, "END"
) == 0) | (strcmp(data[i].name, "end") == 0)){ if (i == 0){ printf
("Input data is nothing!"); exit(0); } else{ break; }} printf("身長:");
scanf("%lf", &data[i].height); printf("体重:"); scanf("%lf", &data[i].weight);
printf("視力(左):"); scanf("%lf", &data[i].eyesight.l_eyesight);
printf("視力(右):"); scanf("%lf", &data[i].eyesight.r_eyesight); } *n = i; }
/*ソート*/void sort_data(Data *data, int *n){int i, j;Data temp;for (i
= 0;i < *n - 1; i++)for (j = *n - 1; j > i; j--)if (data[j-1].height >
data[j].height){temp = data[j-1]; data[j-1] = data[j]; data[j] = temp; }}
/*表示*/void display_data(Data *data, int *n){int i;for (i = 0; i < *n; i++){
printf("名前:%-19s 身長:%6.1f 体重:%6.1f 視力(左):%6.3f 視力(右):%6.3f\n",
data->name, data->height, data->weight, data->eyesight.l_eyesight,
data->eyesight.l_eyesight); data += 1;} }
0234デフォルトの名無しさん
2006/11/09(木) 10:48:08やってることは219と一緒
課題の内容として「xが0近傍の方が誤差は少ない」ってことを学習するためにやってるなら必要ないけど
単純に精度出したい時はmysin内のコメント外してmynorm使ってください
mainは219と同じ物使うなり適当に
#include <math.h>
//#include <stdio.h>
double mynorm(double x){
/*xを-2π〜+2πにする*/
x=fmod(x,M_PI*2);
/*xを-π〜+πにする*/
if(x<-M_PI)x=x+M_PI*2;
else if(x>M_PI)x=x-M_PI*2;
/*xを-π/2〜+π/2にする*/
if(x>M_PI_2)x=M_PI-x;
else if(x<-1*M_PI_2)x=-M_PI-x;
return x;
}
double mysin(double x){
double x2=x*x,y=1;
int i;
//x=mynorm(x);
for(i=39;i>=3;i=i-2){
y=1-x2*y/(i*(i-1));
}
y=x*y;
return y;
}
0235デフォルトの名無しさん
2006/11/09(木) 12:43:39[2]
問4
引数に3つのファイル名を取ると、最初の二つのファイルを結合し、
3つめのファイルに保存するプログラムを作成せよ
-実行例-
% cat text01.txt
good morning!!
% cat text02.txt
good bye!!
% ./a-2 text01.txt text02.txt text03.txt
% cat text03.txt
good morning!!
good bye!!
[3]OS:Win/Linux コンパイラ:VC/gcc3.4 言語:C
[4]あと2時間ほどです;
[5]ポインタを終えてファイル入出力まで学びました
よろしくお願いします
0236デフォルトの名無しさん
2006/11/09(木) 13:23:30#include <stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv){if (argc < 4) return 1;char buf[1000];sprintf(buf, "/bin/cat '%s' '%s' > '%s'", argv[1], argv[2], argv[3]);return system(buf) >> 8;}
0237デフォルトの名無しさん
2006/11/09(木) 15:59:240238デフォルトの名無しさん
2006/11/09(木) 16:17:43[2] 問題文(含コード&リンク):
キーボードから指定した範囲の素数の合計を求める関数を作成し、プログラムを完成させよ
プリントのほうには指定した範囲内の素数も表示されています
[3] 環境
[3.1] OS: XPSP2
[3.2] study C
[3.3] C
[4] 明日まで
[5] その他の制限:引数、戻り値まで習いました
0239デフォルトの名無しさん
2006/11/09(木) 16:27:53このスレを素数で検索
0240デフォルトの名無しさん
2006/11/09(木) 17:35:39>>150のだと1が表示されないのですがどこを変えればいいんでしょうか
あともう一問お願いします
[2] 問題文(含コード&リンク):
5人の学生の点数を読み込み、得点の高い順に並び替え、右のような得点グラフを作成せよ。
得点グラフは「#」は10点、「*」は1点に相当する。
条件:並び替えを行う関数と、引数として得点を受け取り、得点に応じたグラフを書く関数を
作成してプログラムを完成させなさい
例
1人目 >> 54
2人目 >> 67
3人目 >> 75
4人目 >> 92
5人目 >> 33
----------------------------
得点グラフ
----------------------------
第1位 (92点): #########**
第2位 (75点): #######*****
第3位 (67点): ######*******
第4位 (54点): #####****
第5位 (33点): ###***
0241デフォルトの名無しさん
2006/11/09(木) 17:37:111も素数してあげたいけど、都合があってゴメン
0242デフォルトの名無しさん
2006/11/09(木) 17:44:42「素数の定義」を変える必要があります。
0243デフォルトの名無しさん
2006/11/09(木) 18:17:29素数(そすう)とは、1とその数自身以外に正の約数を持たない(つまり1とその数以外のどんな自然数によっても割り切れない)、1 より大きな自然数のことである。
0244デフォルトの名無しさん
2006/11/09(木) 18:35:56間違いって事でいいのかな・・・
0245デフォルトの名無しさん
2006/11/09(木) 18:50:080246デフォルトの名無しさん
2006/11/09(木) 18:55:07Ex. 6 = 3 * 2 * 1 * 1 * 1 * ....
0247デフォルトの名無しさん
2006/11/09(木) 19:07:59[2] 問題文(含コード&リンク):
入力した文字列を反転するプログラムをポインタ変数を用いて作成せよ.
[実行例]
文字列を入力してください:japan
反転文字列は"napaj"です.
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VisualStudo.net2003
[3.3] 言語: C
[4] 期限: 11月12日
[5] その他の制限: お願いします
0248デフォルトの名無しさん
2006/11/09(木) 19:13:24strrev(char* str, int n)
{
char* p;
for(p = str+n; p != str; p--)
putchar(*p);
}
0249デフォルトの名無しさん
2006/11/09(木) 19:16:24char* strrev(char* str, int n)
{
char* p;
for(p = str+n; p > str; p--,str++)
*str = *p;
}
0250デフォルトの名無しさん
2006/11/09(木) 19:20:46#include <stdio.h>
#include <string.h>
void reversePrint(const char * p) {if (* p != '\0') {reversePrint(p + 1); putchar(* p);}}
int main() {char buf[1000]; if (fgets(buf, sizeof(buf), stdin) != NULL) {* strchr(buf, '\n') = '\0'; reversePrint(buf);} return 0;}
0251デフォルトの名無しさん
2006/11/09(木) 19:24:54・戻り値の型がない
・無駄な引き数がある
・おまけに、文字列長-1を渡すと言う不思議な仕様になっている
・更に、最初の一文字が出力されない。
>>249
・戻り値を戻していない
・無駄な引き数がある
・おまけに、文字列長-1を渡すと言う不思議な仕様になっている
ダメすぎ
0252デフォルトの名無しさん
2006/11/09(木) 19:25:040253デフォルトの名無しさん
2006/11/09(木) 19:27:26>>249の問題はそういう次元の話じゃないだろう?
0254デフォルトの名無しさん
2006/11/09(木) 19:30:05ぶっちゃけここに宿題持ち込むようなクズの宿題がどうなろうとどうでもよくね
ここは能無しがクズの宿題利用して練習するスレだろ
0255デフォルトの名無しさん
2006/11/09(木) 19:30:530256251
2006/11/09(木) 19:36:49あ、ほんとだ。それどころじゃねぇや。
>>250
・再帰でやるか、再帰でw
・リダイレクトで改行のないテキスト食わせるとぬるぽ
・わざわざ4行にまとめなくていいよ……
奇を衒い過ぎw
0257デフォルトの名無しさん
2006/11/09(木) 19:59:20どういう事?
別に問題無いように思えるけど。
0258デフォルトの名無しさん
2006/11/09(木) 20:15:13これでどうしてソーティングになるのかイマイチわからん。
0259デフォルトの名無しさん
2006/11/09(木) 20:20:51その式は全く発散してないけど?「発散」を普通と違う意味で使ってるの?
1 を素数とする場合に問題になるのは一意性。
1 を素数としない場合の素因数分解では「順番を除いて一意」という性質が成り立つ。
1 を素数とする場合は 「順番と1倍を除いて一意」という言い方をしないといけない。
ただ、一般の場合は後者のほうが使いやすく、例えば
負の数の素因数分解は「-1倍を除いて一意」という言い方になり、
実係数多項式の素因数分解は「定数倍を除いて一意」という言い方になる。
0260デフォルトの名無しさん
2006/11/09(木) 20:28:01[2] 問題文(含コード&リンク): 配列にデータを10個読み込み、次いで、その中
で最大のものを求め、その値を書き出すプログラムを
作成せよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: 知りません
[3.3] 言語:C++
[4] 期限: 本日まで
[5] その他の制限: 特になし
お、お願いしますorz
0261デフォルトの名無しさん
2006/11/09(木) 20:41:48[2] 問題文(含コード&リンク):2を底とするlogを計算するプログラムを作成しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年11月10日まで
[5] その他の制限:なし
お願いします。
0262デフォルトの名無しさん
2006/11/09(木) 20:50:21#include <stdio.h>
#include <math.h>
main(){
double x,y;
scanf("%d",&x);
y=log(x)/log(2);
printf("%f",y);
}
0263デフォルトの名無しさん
2006/11/09(木) 20:51:09こんなんでどうだべか。
変数名も絶対に他の人と被らない様にしてある親切設計。
#include<iostream>
int main()
{
int hailine[10];
int mostdai = 0;
for(int i=0; i!=10; i++){
std::cout << "数値" << i << " >";
std::cin >> hailine[i];
if(mostdai < hailine[i])
mostdai = hailine[i];
}
std::cout << "最大は" << mostdai << std::endl;
return 0;
}
0264260
2006/11/09(木) 21:03:44std::cout std::endl
ってのはまだ習ってないんで、
入力するときに使う物をscanf
表示するときに使う物をprintf
にする場合どうしたらいいですかね?
0265デフォルトの名無しさん
2006/11/09(木) 21:05:17与えられる10個の数値が全て負のときには…
0267デフォルトの名無しさん
2006/11/09(木) 21:12:51それもしかして、C++じゃなくてただのCだったりしないか?
0268デフォルトの名無しさん
2006/11/09(木) 21:19:19オラの裏を書くとは、オメさてはプロだな?
#include <cstdio>
int main()
{
int highretu[10];
int saibig = 0;
printf("負数は入力しちゃダメ\n");
for(int i=0; i!=10; i++)
scanf("%d", &highretu[i]);
if(saibig<highretu[i])
saibig<highretu[i];
}
printf("最大は%d\n", saibig);
return 0;
}
0269デフォルトの名無しさん
2006/11/09(木) 21:22:46if(saibig<highretu[i])
saibig<highretu[i];
↓
if(i==0 || saibig<highretu[i])
saibig=highretu[i];
じゃね?
0270デフォルトの名無しさん
2006/11/09(木) 21:43:12[2] 問題文(含コード&リンク):
入力した文字列から指定した文字を検索するプログラムをポインタ変数を用いて作成せよ.
[実行例]
文字列を入力してください:Exercise
検索文字を入力してください:e
文字列"Exercise"に"e"は
3番目
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:visualstudio2003
[3.3] 言語: C
[4] 期限: 11月11日
[5] その他の制限: よく考えたけど分かりませんでした。
どなたかお願いします。
0271デフォルトの名無しさん
2006/11/09(木) 21:47:01[2] 問題文:
1.入力した文字列を反転するプログラムをポインタ変数を用いて作成せよ.
2.入力した文字列から指定した文字を検索するプログラムをポインタ変数を用いて作成せよ.
[実行例]
文字列を入力してください:Exercise
検索文字を入力してください:e
文字列"Exercise"に"e"は
3番目
8番目
にあります.
文字列を入力してください:Exercise
検索文字を入力してください:a
そんな文字は入っていない!
[3] 環境
[3.1] OS:Windowsxp
[3.3] 言語:C++
[4] 期限:明日の午前中
よろしくお願いします。
0272デフォルトの名無しさん
2006/11/09(木) 21:50:11>>271
なんでむちゃくちゃ似てるの?
0273デフォルトの名無しさん
2006/11/09(木) 21:50:22ポインタ使えばいいんだな
#include <stdio.h>
#include <string.h>
int main() {
char str[128], str2[128];
char *p;
printf("文字列を入力してください:");
scanf("%s\n", str);
printf("検索文字を入力してください:");
scanf("%s", str2);
p = strstr(str, str2);
printf("文字列\"%s\"に\"%s\"は\n%d番目", str, str2, p-str+1);
return 0;
}
0274デフォルトの名無しさん
2006/11/09(木) 21:53:06よっしゃおまいは正しいぞ!
ただちょっと天邪鬼さんだったな
0275デフォルトの名無しさん
2006/11/09(木) 21:57:42[2] 問題文(含コード&リンク):
5人の学生の点数を読み込み、得点の高い順に並び替え、右のような得点グラフを作成せよ。
得点グラフは「#」は10点、「*」は1点に相当する。
条件:並び替えを行う関数と、引数として得点を受け取り、得点に応じたグラフを書く関数を
作成してプログラムを完成させなさい
例
1人目 >> 54
2人目 >> 67
3人目 >> 75
4人目 >> 92
5人目 >> 33
----------------------------
得点グラフ
----------------------------
第1位 (92点): #########**
第2位 (75点): #######*****
第3位 (67点): ######*******
第4位 (54点): #####****
第5位 (33点): ###***
[3] 環境
[3.1] OS: XPSP2
[3.3] C
[4] 明日まで
[5] その他の制限:引数、戻り値まで習いました
0276デフォルトの名無しさん
2006/11/09(木) 21:59:10万が一にもこいつらがFAQなんか読むわけが無いことに気がついた
0277デフォルトの名無しさん
2006/11/09(木) 22:04:200278デフォルトの名無しさん
2006/11/09(木) 22:15:57#include<stdio.h>
#include<stdlib.h>
int score_cmp(const void *a, const void *b){
const int *pa, *pb;
pa=a;pb=b;
return *pb-*pa;
}
int main(void){
int i, score[5];
for(i=0;i<5;i++){
printf("%d人目 >> ", i+1);
scanf("%d", &score[i]);
}
qsort(score, sizeof(score)/sizeof(score[0]), sizeof(score[0]), score_cmp);
printf("----------------------------\n");
printf(" 得点グラフ \n");
printf("----------------------------\n");
for(i=0;i<5;i++){
printf("第%d位 (%3d点): ", i+1, score[i]);
for(;score[i]>=10;score[i]-=10) printf("#");
for(;score[i]>0;score[i]--) printf("*");
printf("\n");
}
return 0;
}
0279278
2006/11/09(木) 22:18:57↓
qsort(score, 5, sizeof(int), score_cmp);
0280デフォルトの名無しさん
2006/11/09(木) 22:23:37もっと初心者向きになりませんか?
0281デフォルトの名無しさん
2006/11/09(木) 22:25:56まさかqsort使ってくるとは思わなかったぜ
0282デフォルトの名無しさん
2006/11/09(木) 22:42:120283278
2006/11/09(木) 22:45:11qsort(score, sizeof(score)/sizeof(score[0]), sizeof(score[0]), score_cmp);
↓
for(i=0;i<5-1;i++){
int j, temp;
for(j=i+1;j<5;j++){
if(score[i]<score[j]){
temp=score[i];
score[i]=score[j];
score[j]=temp;
}
}
}
0284デフォルトの名無しさん
2006/11/09(木) 22:47:18[2] 問題文(含コード&リンク):
入力した文字列のアルファベットをカウントするプログラムをポインタ変数を用いて作成せよ.
[実行例]
文字列を入力してください:Programming2
アルファベットの数
A or a --> 1
G or g --> 2
I or i --> 1
M or m --> 2
N or n --> 1
O or o --> 1
P or p --> 1
R or r --> 2
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Sudio.NET2003
[3.3] 言語: C
[4] 期限: 2006年11月14日
[5] その他の制限: よろしくお願いします。
0285デフォルトの名無しさん
2006/11/09(木) 22:49:28>>234なんかもあるぞ
219が理解できなかったんなら多分無理な気はするが…
0286デフォルトの名無しさん
2006/11/09(木) 23:10:02#include<stdio.h>
double f_n_0(int n){ /* f(0) (=sin(0)) の n 回微分 */
if(n%4==1) return 1.0;
if(n%4==3) return -1.0;
return 0.0;
}
double f(double x){
double value, x_beki_n=1.0, n_kaijo=1.0;
int n;
value=f_n_0(0);
for(n=1;n<20;n++){
x_beki_n*=x;
n_kaijo*=n;
value+=f_n_0(n)*x_beki_n/n_kaijo;
}
return value;
}
int main(void){
double x;
for(x=0;x<3.141592*2;x+=3.141592/6)
printf("f(%f)=%f\n", x, f(x));
return 0;
}
0287俺に任せろ
2006/11/09(木) 23:16:43シェフの気まぐれプログラミング初心者風
mysineをこれに差し替えろ
オーバーフローしてもそれは仕様です
double mysin(double x){
return x-x*x*x/(3*2)+x*x*x*x*x/(5*4*3*2) -x*x*x*x*x*x*x/(7*6*5*4*3*2)+x*x*x*x*x*x*x*x*x/(9*8*7*6*5*4*3*2)
-x*x*x*x*x*x*x*x*x*x*x/(11*10*9*8*7*6*5*4*3*2)+x*x*x*x*x*x*x*x*x*x*x*x*x/(13*12*11*10*9*8*7*6*5*4*3*2)
-x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(15*14*13*12*11*10*9*8*7*6*5*4*3*2)
+x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
-x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
+x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
-x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
+x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
-x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(27*26*25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
+x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(29*28*27*26*25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
-x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(31*30*29*28*27*26*25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
+x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(33*32*31*30*29*28*27*26*25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
-x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(35*34*33*32*31*30*29*28*27*26*25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
+x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(37*36*35*34*33*32*31*30*29*28*27*26*25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
-x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x/(39*38*37*36*35*34*33*32*31*30*29*28*27*26*25*24*23*22*21*20*19*18*17*16*15*14*13*12*11*10*9*8*7*6*5*4*3*2)
}
0288デフォルトの名無しさん
2006/11/09(木) 23:21:130289デフォルトの名無しさん
2006/11/09(木) 23:26:41ぐっジョブ!
0290デフォルトの名無しさん
2006/11/09(木) 23:30:01この解答を見てしまったときの教師の精神状態を想像して吹いた
0291デフォルトの名無しさん
2006/11/09(木) 23:31:57#include<stdio.h>
#include<ctype.h>
int main(void){
int count[26]={};
char buf[512], *p;
int i;
printf("文字列を入力してください:");
gets(buf);
for(p=buf;*p!='\0';p++){
if(isalpha(*p))
count[toupper(*p)-'A']++;
}
printf("\nアルファベットの数\n");
for(i=0;i<26;i++)
if(count[i]>0)
printf("%c or %c --> %d\n", 'A'+i, 'a'+i, count[i]);
return 0;
}
0292デフォルトの名無しさん
2006/11/09(木) 23:34:490293デフォルトの名無しさん
2006/11/09(木) 23:48:22swap(a,b) は
a^=b;
b^=a;
a^=b;
と書くことが出来る。a^=b は a=a xor b な。
0294デフォルトの名無しさん
2006/11/09(木) 23:52:45それ初学者に示す場合には、a と b が同じ変数の場合にNGとなることも教えた方がいい。
0295デフォルトの名無しさん
2006/11/09(木) 23:57:22だからだめだって。
a==bの時に0になっちまうだろうが。
0296デフォルトの名無しさん
2006/11/09(木) 23:59:05そうじゃなくて &a==&b の時でしょ
0297デフォルトの名無しさん
2006/11/10(金) 00:19:58こんな方法があったんだ、正直感動した。
0298デフォルトの名無しさん
2006/11/10(金) 00:24:36書けねーよ
定期的に沸くな、こういうアホ
0299デフォルトの名無しさん
2006/11/10(金) 00:33:24わざわざ項目が作られてるんだな
俺はアセンブラの教科書で読んだ記憶がある
0300デフォルトの名無しさん
2006/11/10(金) 00:36:23[2] 問題文(含コード&リンク):
&dで指定したp->dataを削除するように、???の部分を埋めなさい。
変数を新たに追加してもかまわない。なお、消し終えた部分の
p->nextはfree();を使って開放すること。さらに、p->dataは???
の部分で使えない事とする。基本的に???の部分(と変数追加)のみ改造すること。
解答は???の部分だけ提出すること。
問題文↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2910.txt
[3] 環境
[3.1] OS: WindowsXP(HomeSP2)
[3.2] コンパイラ名とバージョン: Visual Sudio.NET2005(C++)
[3.3] 言語: C言語
[4] 期限: 2006年11月10日のPM5:00まで
[5] その他の制限:全然分からなくて素で困っていますorzお願いしますorz
0301デフォルトの名無しさん
2006/11/10(金) 00:39:290302300
2006/11/10(金) 00:43:23while(d1>0 && d2>0)ではなくて、while(d>0)だったorz
0303デフォルトの名無しさん
2006/11/10(金) 00:59:28p = start;
while (p->next != NULL)
{
if(p -> data == d)
{
tmp->next = p->next;
free(p);
break;
}
tmp = p;
p = p->next;
}
こんなんでいいんかな?
0304303
2006/11/10(金) 01:01:32while (p != NULL)
0305デフォルトの名無しさん
2006/11/10(金) 01:31:33tmp = (struct node*)((char*)&start - offsetof(struct node, next));
0306デフォルトの名無しさん
2006/11/10(金) 01:41:13#include <stdio.h> #include <string.h> int main() { char *str; char p;
int i = 0,j; printf("文字列を入力してください:"); scanf("%s", str);
printf("検索文字を入力してください:"); scanf("%1s", &p); /*反転表示*/ while(1){
if (*(str + i) == '\0'){ i--; break; } else i++; } printf("反転表示:");
for (;i >= 0; i--) printf("%c",*(str + i)); printf("\n\n"); /*検索*/
printf("文字列\"%s\"に\"%s\"は\n", str, &p); for(i = 0, j = 0; *(str + i); i++)
if (*(str + i) == p){ printf("%d番目です\n", i + 1); j++; } if (!j)
printf("ありません\n"); else printf("にあります.\n"); return 0;}
0308デフォルトの名無しさん
2006/11/10(金) 02:18:52[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2912.c
このプログラムを参考にして、x ln x - 1を二分法によって求めよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:borland c 5.5
[3.3] 言語: C
[4] 期限: 2006年11月10日10:00まで
[5] その他の制限:特にありません
申し訳ありませんが、よろしくお願いします。
0309デフォルトの名無しさん
2006/11/10(金) 02:22:28問題文もまともに読めない奴に限ってくだらないことしたがるんだな。
>引数として得点を受け取り、得点に応じたグラフを書く関数
0310デフォルトの名無しさん
2006/11/10(金) 02:37:28[2] 問題文
ファイル「kyotocity.txt」には、
京都市の区ごとの人口(人)と面積(平方キロメートル)が記述されている。
これらの情報を格納する構造体 struct division を宣言しなさい。
struct division {
char name[20];
int population;
double area;
}
struct division型の配列 kyoto[11]を用意し、
ファイルからデータを読んで、配列に入力しなさい。
入力した構造体の配列を調べて、以下の情報を出力しなさい。
人口が最大の区と最小の区の、名前と人口。
面積が最大の区と最小の区の、名前と面積。
人口密度が最大の区と最小の区の、名前と人口密度。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C
[4] 期限: 2006年11月12日
[5] その他の制限: よろしくお願い致します。
0311デフォルトの名無しさん
2006/11/10(金) 02:41:26[2] 問題文(含コード&リンク):
入力した日の曜日を返す関数を書け。
注意)
1.00年01月01日は月曜日とする。
2.閏年も正しく判定せよ。
3.提出する際は関数を使い、実際に曜日を判定できるプログラムを提出すること
実行例
年月日を入力してください
年:2006
月:11
日:6
2006年11月6日は月曜日です。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Boland C++ 5.5.1
[3.3] 言語: C言語
[4] 期限: 2006年11月12日(日)
[5] その他の制限:なし
よろしくお願いいたします。
0312デフォルトの名無しさん
2006/11/10(金) 02:50:52この「正しく」ってのは、グレゴリオ歴でいいんかいな?
0313デフォルトの名無しさん
2006/11/10(金) 02:59:21再度プリントを確認しましたがその辺の指定はありません。
実行結果も書かなければいけないのですが、それは自分の誕生日です。
なので自分の誕生日が正しく判定できればいいです。
よろしくお願いいたします。
0314デフォルトの名無しさん
2006/11/10(金) 02:59:280315デフォルトの名無しさん
2006/11/10(金) 03:08:46あ…どうでもいいですが、判定するのは教授の誕生日の曜日だった…。
0316デフォルトの名無しさん
2006/11/10(金) 03:10:100317デフォルトの名無しさん
2006/11/10(金) 03:13:32私の誕生日って書いてあったので、最初は自分自身のかと思ったけど
教授の生年月日が書いてあったので多分、教授のを判定しろって事ですよね…
0318デフォルトの名無しさん
2006/11/10(金) 03:18:3725行目に int d1=10,d2=10;を挿入し
/* 要素の削除 */
p = tmp = start;
for(i = 0;i < 10 & tmp != NULL; i++)
if (d == (*tmp).data){
if (start == tmp)
start = tmp->next;
else
p->next = tmp->next;
d1--;
free(tmp);
break;
} else {
p = tmp;
tmp = tmp->next;
}
if (d1 == 0)
break;
こんな感じか?
d1とd2の意味がわからなかった。スマン
0319デフォルトの名無しさん
2006/11/10(金) 05:02:012000年1月1日は土曜日なんだが…
0320デフォルトの名無しさん
2006/11/10(金) 05:05:130321デフォルトの名無しさん
2006/11/10(金) 07:14:20#include <stdio.h> #include <string.h> struct division { char name[20]; int
population; double area; }; int main(void){ struct division kyoto[11]; FILE
*fp; int i = 0; int max_pop, min_pop, max_pop_name, min_pop_name, max_area_name,
min_area_name, max_area_name, min_area_name, max_poparea_name, min_poparea_name,
fpopulation; double max_area, min_area, max_poparea, min_poparea, farea; char
fname[20]; if ((fp = fopen("kyotocity.txt", "r")) == NULL){ printf(
"\aファイルオープン出来ません\n"); exit (0); } while(fscanf(fp, "%s%d%lf",
fname, &fpopulation, &farea) == 3){ printf("name = %s pop = %d farea = %lf",
fname,fpopulation,farea); kyoto[i].population = fpopulation; strcpy(
kyoto[i].name ,fname); kyoto[i].area = farea;
つづく
0322デフォルトの名無しさん
2006/11/10(金) 07:15:15つづきから
if (i == 0){ max_pop = min_pop = fpopulation; max_pop_name = min_pop_name = i;
max_area = min_area = farea; max_area_name = min_area_name = i; max_poparea =
(fpopulation / farea); min_poparea = max_poparea; max_poparea_name =
min_poparea_name = i; } else{ if (fpopulation < min_pop){ min_pop =
fpopulation; min_pop_name = i; } if (fpopulation > max_pop){ max_pop =
fpopulation; max_pop_name = i; } if (farea < min_area){ min_area = farea;
min_area_name = i; } if (farea > max_area){ max_area = farea; max_area_name =
i; } if ((fpopulation / farea) < min_poparea){ min_poparea = (fpopulation /
farea); min_poparea_name = i; } if ((fpopulation / farea) > max_poparea){
max_poparea = (fpopulation / farea); max_poparea_name = i; } } i++;}
printf("人口最大区:%-20s %d人\n", kyoto[max_pop_name].name, max_pop);
printf("人口最小区:%-20s %d人\n", kyoto[min_pop_name].name, min_pop);
printf("面積最大区:%-20s %d人\n", kyoto[max_area_name].name, max_area);
printf("面積最小区:%-20s %d人\n", kyoto[min_area_name].name, min_area);
printf("人口密度最大区:%-20s %d人\n", kyoto[max_poparea_name].name,
max_poparea);
printf("人口密度最大区:%-20s %d人\n", kyoto[min_poparea_name].name,
min_poparea);
fclose(fp); return 0;}
こんな感じか?
0323278
2006/11/10(金) 07:31:56void sort(int *data, int data_num){
int i, j, temp;
for(i=0;i<data_num-1;i++)
for(j=i+1;j<data_num;j++)
if(data[i]<data[j]){temp=data[i];data[i]=data[j];data[j]=temp;}
}
void print_bar(int score){
for(;score>=10;score-=10) printf("#");
for(;score>0;score--) printf("*");
printf("\n");
}
void print_graph(int *score, int score_num){
int i;
printf("----------------------\n 得点グラフ \n----------------------\n");
for(i=0;i<5;i++){
printf("第%d位 (%3d点): ", i+1, score[i]);
print_bar(score[i]);
}
}
int main(void){
int i, score[5];
for(i=0;i<5;i++){
printf("%d人目 >> ", i+1);
scanf("%d", &score[i]);
}
sort(score, 5);
print_graph(score, 5);
return 0;
}
0324デフォルトの名無しさん
2006/11/10(金) 12:31:210年1月1日はユリウス暦で今のグレゴリオ暦と違うが、そこまで考慮していない。
よって、以下のプログラムはグレゴリオ暦初日である1582年10月15日(金)以降の
日付に対してのみ正しい曜日を出力する。当然、0年1月1日の曜日は正しく出力
されないし、月曜日にもならない。もしどうしても必要ならば、自分で改造すること。
#include <stdio.h>
int day_of_week(int year, int month, int day) {
if (month == 1 || month == 2) {
--year;
month += 12;
}
return (year + year / 4 - year / 100 + year / 400 + (13 * month + 8) / 5 + day) % 7;
}
int main(void) {
int year, month, day;
printf("年月日を入力してください\n年:"); scanf("%d", &year);
printf("月:"); scanf("%d", &month);
printf("日:"); scanf("%d", &day);
printf("%d年%d月%d日は%s曜日です。\n", year, month, day, &"日\0月\0火\0水\0木\0金\0土"[3 * day_of_week(year, month, day)]);
return 0;
}
0325デフォルトの名無しさん
2006/11/10(金) 14:27:27http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2915.c
0326OS
2006/11/10(金) 17:04:25[2] 問題文(含コード&リンク):
第4回課題 セルオートマトンの動作推移を表現する。
・空白セルと塗りつぶしセルの二つを用意し、塗りつぶしセルは、前が空白セルの場合は、進むことが出来るが、塗りつぶしセルの場合は、進むことが出来ない。(進行方向は左。)
・時間経過と共に、どのような推移をするのかを示す。(塗りつぶしセルがなくなった時点で終了。)
・結果表示は、別ウィンドウが望ましいが、コマンドライン上で構わない。
以下に、例を示す。
問題 □□■□■□が与えられるとする。
t=1 □■□■□□
t=2 ■□■□□□
t=3 □■□□□□
t=4 ■□□□□□
終了
また、今後
□□■
は
□■□
となるが、
■□■
は
■■□
となる左側で止めてしまう場合があるのです。
0327OS
2006/11/10(金) 17:06:02ですが、取りあえずは、セルが左側に移動するものを第一段階として作りたかったので、宜しく御願いします。
発展問題に、左側で止めた場合、n秒後に、止めが解除されるとしてプログラムを作れというものもあります。
nは、コマンドラインから入力。(入力方式は問わない。)
(例)
t=1 ■□■
t=2 ■■□
t=3 ■■□
t=4 ■■□
t=5 ■□□
この場合、n=2と指定します。■■□の状態で、2秒、膠着状態が続いてますので。
[3] 環境
[3.1] OS: windows
[3.2] コンパイラ名とバージョン: VC6.0
[3.3] 言語: C、C++ (出来ればC++が望ましい。)
[4] 期限: 2006年11月10日 23:59まで(出来れば23時まで。)
[5] その他の制限: 特になし
0328デフォルトの名無しさん
2006/11/10(金) 17:14:200329デフォルトの名無しさん
2006/11/10(金) 17:38:08[2] 問題文(含コード&リンク):x円を年利1.4%で借りた場合と18%で借りた場合のn年後の返済総額を計算する
プログラムを作成せよ。プリプロセッサを用いて、金利が変動した場合にもすぐに対応できるようにすること。
(x,nの値はscanfを用いて入力)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 明日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
よろしくお願いします
0330デフォルトの名無しさん
2006/11/10(金) 18:39:56[2] 問題文(含コード&リンク): read.txtファイルを読み込みそれに書かれたローマ字をひらがなに
直してwrite.txtファイルに書き込むプログラミング。出てくるローマ字はringo,budou,mikanのみ。
テキストは以下のような感じです。
ringo budou mikan
mikan
ringo budou
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: c
[4] 期限: 2006年11月12日
[5] その他の制限:出来るだけ関数を使い、fopen,fcloseを使うこと
ファイル開くのと書き込みまでは出来たのですが、空白文字を読み込んだり変換がうまく
できません。こんなこと言うのも失礼ですが、関数名とうできるだけ分かりやすくお願いします。
0331デフォルトの名無しさん
2006/11/10(金) 18:44:41こんな感じ?
if (strcmp(buf,"mikan")==0)
fprintf(fp,"みかん");
0332デフォルトの名無しさん
2006/11/10(金) 18:44:52http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2917.cpp
セルオートマトンとしては、>327 のt=4→t=5 の動きがおかしいのではないかという
以前の指摘に答えてないので、もしこの動きが間違いだとしても書き直しはしないよ。
0333デフォルトの名無しさん
2006/11/10(金) 18:48:13ありがとうございます!!比較はコレでつくれそうです。あとファイルから読み込むとき
一行ずつしかも空白文字も読み込んで配列に入れることはできますか?
0334デフォルトの名無しさん
2006/11/10(金) 19:06:07http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2918.txt
とりあえず表示だけ終了条件がはっきりしないから止まりません
0335デフォルトの名無しさん
2006/11/10(金) 19:35:55学校特定した
0336デフォルトの名無しさん
2006/11/10(金) 19:57:02fgets()
0337デフォルトの名無しさん
2006/11/10(金) 20:12:130338デフォルトの名無しさん
2006/11/10(金) 20:41:51fgetsを使ったんですがread.txtの中身が
mikanandbudouなどのとき、出力としてテキストに書き込むと、
本当は「みかんandぶどう」としたいんですがうまくいきません。なにか
いい方法はないでしょうか?できればファイルからfgetsで読み込んで
どのように配列にいれif文等で判定すればこの様に変換できるか
教えてください。
0339デフォルトの名無しさん
2006/11/10(金) 20:55:11336じゃないけど、strstr()↓ とか使えない?
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/strstr.3.html
0340デフォルトの名無しさん
2006/11/10(金) 21:08:28>>330
んー。なんか、アルゴリズム見直したほーがいい気がするぞ。
1)5文字読む。5文字以下しか読めないならe)へ。
2)5文字がringo,budou,mikanのいずれかなら対応するひらがなを出力し、バッファをクリアし、1)へ。
3)先頭の1文字を出力する。
4)5文字のうち、先頭の1文字を捨てる。
5)新しく文字を1文字読み込む。読み込めたら2)へ。
e)残りの文字を出力する。
0341デフォルトの名無しさん
2006/11/10(金) 21:08:40こんな物までやるのか
0342デフォルトの名無しさん
2006/11/10(金) 21:11:250343デフォルトの名無しさん
2006/11/10(金) 21:23:090344デフォルトの名無しさん
2006/11/10(金) 21:24:12[2] 問題文(含コード&リンク):
英文が書いてあるファイルdat.txtから単語を抽出するプログラム、
英文の空白は空白を表示し、","や"."も空白で返す。
dat.txtは次のものとする。
This is a pen.
I am a student.
It is impossible to solve this problem.
When she relaxes, she slips back into the local accent.
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:lcc
[3.3] 言語:C
[4] 期限:11月12日まで
[5] その他の制限:fclose,fopenを使う
0345デフォルトの名無しさん
2006/11/10(金) 21:41:43単語を抽出するのに空白もドットも関係なくない?
0346デフォルトの名無しさん
2006/11/10(金) 22:04:25#include<stdlib.h>
#include<stdio.h>
int main(){
FILE *fp;
char data[256];
int c=0;
int count=0;
if( (fp=fopen("data.dat","r")) == NULL ) { exit(1); }
while( (c=getc(fp)) != EOF){
data[count] = c;
if(c==' ' || c==',' || c=='.'){
data[count] = '\0';
printf("%s\n",data);
printf("%c\n",c);
count=0;
}else{
count++;
}
}
}
return(0);
}
これでいいのか?
0347346
2006/11/10(金) 22:08:25しかもインデントがずれてるしorz
0348デフォルトの名無しさん
2006/11/10(金) 22:13:590349デフォルトの名無しさん
2006/11/10(金) 23:06:46#include <stdio.h> #include <string.h> #include <stdlib.h>
typedef struct Word{ char *word;unsigned int num;struct Word *next;
}Word;Word *CountWord(void);
int main(){ Word *last = CountWord();Word *p;Word *temp;char *cf = NULL;
for(p = last; p != NULL; p = p->next) printf("%d %s \n", p->num, p->word);temp = last;
while(temp!=NULL){p = temp;cf = temp->word;temp = temp->next;free(p);free(cf);}return 0;}
Word *CountWord(void){FILE *fp;char buff[1024] = {'\0'};char *gDlim = " ,.\t\n";char *word = NULL;
unsigned num =1;unsigned len;Word *temp;Word *top = NULL;fp = fopen("dat.txt","r");
while(fgets(buff, sizeof(buff), fp)){word = strtok(buff,gDlim);while(word != NULL){
temp = (Word *)malloc(sizeof(Word));len = strlen(word);temp->word = (char *)malloc(len + 1);
strcpy(temp->word, word);temp->num = num;temp->next = top;top = temp;
num++;word = strtok(NULL, gDlim);}memset(buff, '\0', sizeof(buff));}fclose(fp);return temp;}
0350デフォルトの名無しさん
2006/11/10(金) 23:10:17読んでたら前頭葉あたりが痛くなってきた
0351デフォルトの名無しさん
2006/11/10(金) 23:42:02使いすぎです><;
0352OS
2006/11/11(土) 00:15:33有り難うございます。
0353デフォルトの名無しさん
2006/11/11(土) 01:12:26[2] 問題文:以下のように1000個の整数を選択整列,挿入整列,バブルソートをつかってソートするプログラムを作成せよ。
* データセット
o データセットは自分で作成すること.
o rand関数を使用しなさい
o 同じ整数が2度以上現れないこと.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:11/13
0354デフォルトの名無しさん
2006/11/11(土) 01:20:530355デフォルトの名無しさん
2006/11/11(土) 01:26:56void bubble_sort(int sort[], int elements)
{ int i,j,temp;for(i=0; i < elements; i++){
for(j=i; j < elements; j++){if(sort[i] > sort[j]){ temp = sort[i];sort[i] = sort[j];sort[j] = temp;}}}}
選択ソート
void SimSelSort(int num[ ], int n)
{ int i, j, k, min, temp; for (i = 0; i < n - 1; i++) {
min = num[i]; k = i; for (j = i + 1; j < n; j++) { if (num[j] < min) {min = num[j]; k = j;}}
temp = num[i];num[i] = num[k];num[k] = temp;}}
単純挿入ソート
void InsertSort(int num[ ], int n)
{ int i, j, temp;for (i = 1; i < n; i++) {temp = num[i];
for (j = i; j > 0 && num[j-1] > temp; j--) num[j] = num[j -1];
num[j] = temp; }}
0356デフォルトの名無しさん
2006/11/11(土) 01:31:50あとデータセットの作り方がわからないので教えてくださいませんか?
0357デフォルトの名無しさん
2006/11/11(土) 02:02:28int i,j;
for(i=0;I=<999;i++){
deetasetto[i]=rand();
for(j=0;j<i;j++){
if(deetasetto[i]==deetasetto[j]){
i=i-1;
break;
}
}
}
longじゃなくてintでいい気がするけど
どういう実装なんか知らんし一応これで
0358デフォルトの名無しさん
2006/11/11(土) 12:41:55[2] 8queen問題で、対称性を持たない独自な解がいくつあるかを求めよ
[3] 環境
[3.1] windowsXP
[3.2] BCC
[3.3] C言語
[4] 期限:2006/11/12
[5] その他の制限:特になし
ttp://free.gikoneko.net/up/source/up129964.c
↑は全解を求めるプログラムを元に作ったものですが、
答えは12のはずなのに15となってしまいます。
おかしい点を指摘していただければ助かります。
0359デフォルトの名無しさん
2006/11/11(土) 12:48:36回転と反転だけで吸収できるっけ?
0360デフォルトの名無しさん
2006/11/11(土) 12:54:36ごめんごめん
0361デフォルトの名無しさん
2006/11/11(土) 13:17:21しかし、それを追加したところで結果が変わらないから別なところに原因があるのか
0362349
2006/11/11(土) 13:20:47なんか、変なとこあった?
教えて
0363デフォルトの名無しさん
2006/11/11(土) 13:36:41[2] 問題文:10*10の任意の数字 (小数・負数含む) が書かれたファイルから最大値、最小値の表示
0 1 2 3 4 5 6 7 8 9
1...
2...
3..
4...
5...
6...
7...
8...
9..
ファイルは↑みたいな形式です。.
[3] 環境
[3.1] OS:WinXP Pro
[3.2] コンパイラ名とバージョン:Boland C 5.5.1
[3.3] 言語:C
[4] 期限:2006/11/17
[5] その他の制限:前回が配列だったのでその程度のレベルで
0364デフォルトの名無しさん
2006/11/11(土) 13:42:47>>361にあるけど対称形は8通り
foundanswerで答えをanswerにちゃんとコピーしてない
yの値が不定なのによく落ちなかったものだ
0365デフォルトの名無しさん
2006/11/11(土) 13:45:52203行目に for(y=0;y<8;++y) が足りない
×if(compare()>0)
○if(compare()==0)
0367349
2006/11/11(土) 19:24:5310*10は10行10列ってことか?
それと、その任意の数字が書かれたファイルぐらいどっかにアップしろ
いちいち読み込むためのその任意の数字が書かれたファイルを作るのが
めんどう。
あと、前回が配列だったので、って前回ってどれだよ。
0368デフォルトの名無しさん
2006/11/11(土) 19:39:20前回の講義がってことじゃね?
0369デフォルトの名無しさん
2006/11/11(土) 20:20:54そうです。
>いちいち読み込むためのその任意の数字が書かれたファイルを作るのがめんどう。
すみません、気が利きませんでした…
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2922.lzh
講義での用意がなかったため適当な物ですが。
>あと、前回が配列だったので、って前回ってどれだよ。
>>368さんのご推察通り、前回の講義です。
0370デフォルトの名無しさん
2006/11/11(土) 21:01:53#include <stdio.h>
#include <stdlib.h>
int main(int argc , char *argv[]) {
FILE *f1,*f2,*fs;
int c;
if (argc < 4) return 1;
if ((f1=fopen(argv[1],"r"))==NULL) exit(1);
if ((f2=fopen(argv[2],"r"))==NULL) exit(1);
if ((fs=fopen(argv[3],"w"))==NULL) exit(1);
while (1) {
if ((c=fgetc(f1))==EOF) break;
fprintf(fs,"%c",c);
}
while (1) {
if ((c=fgetc(f2))==EOF) break;
fprintf(fs,"%c",c);
}
printf("\(^o^)/オワタ\n");
fclose(f1);
fclose(f2);
fclose(fs);
return 0;
}
中学生にも出来た
0371デフォルトの名無しさん
2006/11/11(土) 21:05:432時間だったんだよ〜二日じゃないよ〜><
0372デフォルトの名無しさん
2006/11/11(土) 21:50:57if ((c=fgetc(f1))==EOF) break;
fprintf(fs,"%c",c);
}
while (1) {
if ((c=fgetc(f2))==EOF) break;
fprintf(fs,"%c",c);
}
ここらへんがもにょるな
不思議なプログラムだ
0373349
2006/11/11(土) 22:05:30中身みたら00〜99までの数字が順番に書いてるだけじゃん
そうじゃなくて、少数・負数含むんじゃないの?
それも任意だから、順番じゃないだろうし
指数表現した小数とかも含むのかとかそういう意味で
そういうファイルを作ってって言ったの
0374デフォルトの名無しさん
2006/11/11(土) 22:35:35#include <float.h>
int main(void){
FILE *f=fopen("file.txt","r");
if (!f) goto RET;
char cp_line[1024],*p,*b;
double d,d_min=DBL_MAX,d_max=DBL_MIN;
for(;;){
if (!fgets(cp_line,1024,f)) break;
for(p=cp_line;;){
d=strtod(b=p,&p);
if (p!=b){
if (d<d_min)
d_min=d;
if (d>d_max)
d_max=d;
}
if (!*(p++)) break;
}
}
printf("最小値: %f\n",d_min);printf("最大値: %f\n",d_max);fclose(f);
RET:return 0;
}
こんなんでいい?
0375デフォルトの名無しさん
2006/11/11(土) 23:22:15あ〜らら。期限を
>[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
にしたがって書かないからだよ。
テンプレはただ漫然とそこにあるんじゃなくて、過去に発生した誤解などを元に
再び同じ過ちを繰り返さないように調整してあるんだから。
0376デフォルトの名無しさん
2006/11/12(日) 00:19:03Hello World!
Hello World!
Hello World!
Goodbye World!
Hello World!
Hello World!
Hello World!
Goodbye World!
Hello World!
Hello World!
のように出力するプログラムを、以下の�@〜�Cの各条件で実現せよ。
�@forとifを用いた方法
但し、出力する行数が増えても同じパターンでの出力が可能であるようにせよ。
すなわち、ベタにifで4行目を判定してGoodbye World!にしてはならない。
�Aforとswitch-caseを用いた方法
但し、breakは一度しか使ってはならない。
すなわち、default節を有効に活用せよという事である。
これについても、行数が増えても対応可能なアルゴリズムを考えよ。
�Bwhileとifを用いた方法
注意は�@と同様
�Cwhileとswitch-caseを用いた方法
注意は�Aと同様
[3] 環境 [3.1] WindowsXP [3.2] BCC [3.3] C
[4] 無期限 早めがいいです
[5] 繰り返し文までです
0377デフォルトの名無しさん
2006/11/12(日) 00:39:28意図がいまいちわからんのだがこうかな?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2923.txt
0378デフォルトの名無しさん
2006/11/12(日) 00:52:37サンクスです! 頭がすっきりしました
0379349
2006/11/12(日) 01:29:14http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2924.txt
一応ランダムな数字の10行10列のファイルを作成し、読み取り最大値最小値を表示させる
ようにしたのだけど、どうも、数値は読み込めてるが、表示する値が最大値最小値じゃないようで
ソートの時か、別問題か、わかんないんで他の人にパスします。
0380358
2006/11/12(日) 02:57:01対称形は、
・元の形の90〜270度回転の3つ
・元の形の反転の0〜360度回転の4つ
のトータル7つではないかと思ったのですが違うのでしょうか。
追加で質問するようになりますが、もう1つが何か教えていただけたら助かります。
ご指摘の通り、for(y=0;y<8;++y)は足りてないですね。
ただ、実行はできているのがフシギです。
compare()は同一かどうかだけの判断にしました。
if文の記述を直す(">"→"==")と、うまく実行できるようになりました。
最後になりましたが、
>>359=360さん、>>361さん、>>364=366さん、>>365さん、ありがとうございました。
0381デフォルトの名無しさん
2006/11/12(日) 03:26:40[2] 問題文(含コード&リンク):
以下の2つをそれぞれプログラムにしてコンパイル・実行させる。
エラーが出なくなったら、1つにまとめてファイル名:1107.txt、レポート第5回送付
1.keisan.c
変数 x と y を用い、簡単な計算をして結果を表示させるプログラム
[3] 環境
[3.1] OS: WinXP
[3.2] コンパイラ名とバージョン: Boland C 5.5.1
[3.3] 言語: C
[4] 期限: 本日(正午12:00)
[5] その他の制限: ほんとの基礎の基礎です。初めて2回目くらいです。
お願いします。
0382381
2006/11/12(日) 03:28:11問題文に以下二つってありますけど、1つなんで気にしないでください。
あと、小数の計算もできるようにお願いします。
0383デフォルトの名無しさん
2006/11/12(日) 03:48:23ゴトゥは使わない方がいいと聞いているのですがいいんですか?
わたしは>363じゃないですけど
0384デフォルトの名無しさん
2006/11/12(日) 04:02:27gotoは使ってもいいけど、奇麗な構造をブチ壊すような使い方は余り好まれない
ブチ壊した例)
※ブロック記号の"{"と"}"はCのブロックステートメントを意味しているわけじゃないです
概念的なくくりだとおもてください
{ ...A... there ... goto here }
{ ...B... goto there
{ ...C... here ... }
}
こんな風になってると、"{"と"}"の構造をブチ壊した構造に出来るので好まれない
>>374はオレなら
int main(..){
if(!〜) return 1;
〜K〜
}
とかにするんじゃないかな
(仮にKが30行くらいのコードだと考えれば、この方法なら可読性を維持できる)
0385デフォルトの名無しさん
2006/11/12(日) 05:22:07簡単な計算ってなんだろ・・・四則演算?
基礎の基礎って言ってるからプログラム中で変数決めていいのかな
#include <stdio.h>
int main(void)
{
int x,y;
x = 10;
y = 10; //x,yは任意
printf("%d",x+y); //上から順に加減乗除
printf("%d",x-y);
printf("%d",x*y);
printf("%d",x/y);
return 0;
}
0386385
2006/11/12(日) 05:25:15宣言部分の int ⇒ double
printfの%dを%f
0387デフォルトの名無しさん
2006/11/12(日) 07:01:20[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2926.txt
このプログラムでは、コンピュ−タがマークを置く位置を乱数で生成している。
三目並べの最善手のアルゴリズムを求めなさい。
また、Computer関数を修正しコンピュ−タが最善手を打つようにプログラムを改良しなさい。
なお、三目並べでは、双方が最善手を打つと引き分けとなる。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:BCC5.5
[3.3] 言語:C
[4] 期限:2006年11月13日01:00まで
[5] その他の制限:C言語勉強して1年くらいの人が書く感じでお願いします。
この三目並べの最善手がわからなくて、単純に相手が置いた隣とかではだめでした。
どうやったら最善手が求められるのかもお願いします。
0388デフォルトの名無しさん
2006/11/12(日) 07:17:520390デフォルトの名無しさん
2006/11/12(日) 08:30:57これでも十分最善手だとおも
int i,ret,th[2]={turn,human};
for(i=0;i<sizeof(th);i++){
for(*height=0;*height<MAX_HEIGHT;++*height){
for(*width=0;*width<MAX_WIDTH;++*width){
if(board[*width][*height]==EMPTY){
board[*width][*height]=th[i];
ret=IsComplete();
board[*width][*height]=EMPTY;
if(ret)return;
}
}
}
}
if(board[*width=1][*height=1]==EMPTY)return;
for(*height=0;*height<MAX_HEIGHT;++*height){
for(*width=0;*width<MAX_WIDTH;++*width){
if(board[*width][*height]==EMPTY)return;
}
}
0391387
2006/11/12(日) 08:48:03先手で、(2,2),(3,3),(3.1),(1,3)と打つと勝ててしました。
何が悪いのか考えてみます。
あと、引き続き>>387をよろしくお願いします。
0392デフォルトの名無しさん
2006/11/12(日) 10:23:21この手の問題の解法って探索しかなくね?ということで、完全探索アルゴリズムを
実装してみた。まともにチェックしてないけど。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2927.c
0393デフォルトの名無しさん
2006/11/12(日) 10:42:15[2] 問題文
確率変数Xが確率密度関数
0( x < 0)
p(x)=(1/2)e^-x/2( x >=0)
に従うとしよう
サンプル0502sample.cを書き換えて,
サンプル数?
300
シード?
128478
と入力すると, 逆関数法を利用して p(x) に従う xを生成する(ただし, X=-1/alog(1-r)を使う).
これを300回生成し, 平均, 分散, 0.0と4.0の間を何個かのビンに分割して
ヒストグラムを出力するプログラムを作ろう. ビンの個数は, 8,80 など, 何種類か試そう.
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C
[4] 期限: 2006年11月14日09:00まで
[5] その他
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2928.txt
を利用して作ってください
0394デフォルトの名無しさん
2006/11/12(日) 15:25:57○×
って問い合わせしても無視します。なぜでしょうか?
0395デフォルトの名無しさん
2006/11/12(日) 15:41:290396デフォルトの名無しさん
2006/11/12(日) 16:02:13[2] 問題文(含コード&リンク):
構造体に値を設定する。
struct numb {
int n;
double d;
}
の構造体で100の要素を持つ配列を用意する。
メンバー変数 n には 0, 1, 2, - - - 99 を設定し
メンバー変数 d には 0.99, 0.98, 0.97, - - - 0.0 を設定する。
できれば ポインターを使うこと。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 11月15日
[5] その他の制限:特になし
0397デフォルトの名無しさん
2006/11/12(日) 16:07:00int i;
struct numb hoge[100], *p;
for(i=0,p=hoge;i<100;i++){
p[i].n=i;
p[i].d=(99-i)/10; //アヤシイ
}
}
無理にポインタ使ってみた
最近Cやってない
0398デフォルトの名無しさん
2006/11/12(日) 17:18:11//アヤシイ
のところは先にキャストしとくか99.0とか10.0とかにするべきだろう
0399デフォルトの名無しさん
2006/11/12(日) 18:18:52[2] 問題文:1から12の数字を縦3,横4で表記させよ。
<例>1 4 7
2 5
3
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:明日の14時
[5] その他の制限:9月から受講しているのでなるべく簡単な関数でお願いします!
0400デフォルトの名無しさん
2006/11/12(日) 18:24:09main(){
printf("1 4 7 10\n2 5 8 11\n3 6 12");
}
0401デフォルトの名無しさん
2006/11/12(日) 18:24:36[2] 問題文(含コード&リンク):
二次方程式の3つの係数を入力させ、解を出力するプログラムを作れ(0=Ax^2+Bx+C)
実数解が存在しない場合は、「実数解が存在しません」と表示させる事。小数点は第二位まで。
(例1)係数を入力してください
A=3,B=5,C=1
解:x=-1.43,-0.23
(例2)係数を入力してください
A=2,B=3,C=4
解:実数解が存在しません
※係数に応じ、一次方程式になる場合、判別式Dの値によって
実数解が存在しないしない場合、重解となる場合、解が二つ存在する場合、があることに注意。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:11月13日の13:00まで
[5] その他の制限: 特になし
一週間も前から考えていたけれど、全然分かりません。どうかお願いいたします。
0402デフォルトの名無しさん
2006/11/12(日) 18:24:380403デフォルトの名無しさん
2006/11/12(日) 18:28:240404400
2006/11/12(日) 18:31:18冗談で書いたのにこれでいいのか
0405デフォルトの名無しさん
2006/11/12(日) 18:55:21すみません。他の方法があれば是非教えてください!!
0406デフォルトの名無しさん
2006/11/12(日) 18:58:14[2] 問題文(含コード&リンク):html.txtのHTML方式で書かれた文を
LaTEXに書き換え、latex.txtに書き換える。
html.txtの中身
<table>
<tr align="center"><td>Hello world</td><td align="right">Hello</td></tr>
</table>
[3] 環境
[3.1] OS:Linux
[3.2]コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年11月13日
[5] その他の制限:
0407デフォルトの名無しさん
2006/11/12(日) 19:02:21#include <stdio.h>
#include <math.h>
double hanbetusiki(int a,int b,int c){
return b*b-4*a*c;
}
main(){
int a,b,c;
double d;
printf("係数を入力してください\nA=");
scanf("%d",&a);
printf("B=");
scanf("%d",&b);
printf("C=");
scanf("%d",&c);
d=hanbetusiki(a,b,c);
printf("解:");
if(d>0) printf("x=%.2f,%.2f",(-1.0*b+sqrt(d))/a/2,(-1.0*b-sqrt(d))/a/2);
else if(d==0) printf("x=%.2f",(-1.0*b)/a/2);
else printf("実数解が存在しません");
}
今ひとつ問題の要求とかみ合ってない答えだけど
これでいいのかなあ
0408デフォルトの名無しさん
2006/11/12(日) 19:02:30#include<stdio.h>
int main(){
int i;
for(i=1;i<13;i++){
printf("%3d ",i);
if(i%4==0){ printf("\n"); }
}
return(0);
}
つられてみるw
0409デフォルトの名無しさん
2006/11/12(日) 19:02:560410デフォルトの名無しさん
2006/11/12(日) 19:12:10よくみたら縦に1、2、3だったんです。
でも、ありがとうございます!!
0411デフォルトの名無しさん
2006/11/12(日) 19:13:17ttp://www.iwriteiam.nl/html2tex_c.txt
これ使えるんじゃね?w
0412デフォルトの名無しさん
2006/11/12(日) 19:20:57ごめんなさい。私には理解できませんでした。。。先生いわく、すべてのhtml
を変換するのは大変なので、今回は使われているのだけを変換できれば
いいそうです。
0413デフォルトの名無しさん
2006/11/12(日) 19:52:47>408 を改造してみる。
#include<stdio.h>
int main(){
int i;
for(i=0;i<12;i++){
printf("%3d ",i/4+(i%4)*3+1);
if(i%4==3){ printf("\n"); }
}
return(0);
}
0414デフォルトの名無しさん
2006/11/12(日) 19:53:54ありがとうございます!なんとかなりそうです!
0415デフォルトの名無しさん
2006/11/12(日) 20:14:000416デフォルトの名無しさん
2006/11/12(日) 20:35:56[2] 問題文(含コード&リンク):
キーボードから重複を許して与えられるN個のint型の値の中で、2番目に大きな値を印字するプログラムを作成せよ。そのような値がない場合は「なし」と印字。データの個数N(≧1)はマクロNで与えられるものとする。値は一度に1つずつ入力されるものとする。
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語: c
[4] 期限: 2006年11月14日まで
[5] 四則演算、繰り返し、配列ぐらいしかやっていません。
配列の分野の問題です。
0417デフォルトの名無しさん
2006/11/12(日) 21:16:280418デフォルトの名無しさん
2006/11/12(日) 21:57:35struct data
{
char d1[128];
char d2[64];
char d3[32];
char d4[64];
}
この内容をcvsファイルとして出力したのちに、ファイルから読み込みたいのですが…。
一文字ずつfgetsしてカンマを判定して処理するしかないですか?
0419デフォルトの名無しさん
2006/11/12(日) 22:11:50「"」で囲われた「,」は区切りではない等といったメタな処理が無ければ、
fgets() で一行読み込んで sscanf() で解析するのが定石。
0420デフォルトの名無しさん
2006/11/12(日) 22:28:032番目に大きい値がないとはどういう状態だ?
0421416 ◆nZ5tHzSn6E
2006/11/12(日) 22:33:32>>420
例えば
5 5 5 5
(全て同じ値)
とか
4
(値が1つしかない)
といった感じです。
0422デフォルトの名無しさん
2006/11/12(日) 22:53:08エラー処理とかやってないけど、これでどうですか?
data d = {"test","test2","test3","test4"};
fstream f("test.txt", ios::out);
f << d.d1 << ',' << d.d2 << ',' << d.d3 << ',' << d.d4;
f.close();
string s = "";
char buf[128];
f.open("test.txt", ios::in);
while(f.getline(buf, sizeof(buf), ',')){ s += buf; }
f.close();
cout << s << endl;
0423デフォルトの名無しさん
2006/11/12(日) 23:16:41#include <stdio.h>
#include <limits.h>
#define N 10
main(){
int atai[N];
int tmpmax=INT_MIN,tmpnibanme=INT_MIN;
printf("今から%d個の数値を入力してもらいます\n%dを入力したらころします",N,INT_MIN);
for(i=0;i<N;i++){
printf("%d番目の値を入力してください",i+1);
scanf("%d",&atai[i]);
}
for(i=0;i<N;i++){
if(atai[i]>tmpmax){
tmpnibanme=tmpmax;
tmpmax=atai[i];
}
else if(atai[i]>tmpnibanme) tmpnibanme=atai[i];
}
if tmpnibanme>INT_MIN printf("多分%d",tmpnibanme);
else
printf("なし");
}
0424デフォルトの名無しさん
2006/11/12(日) 23:33:28x=-2*log(1-get_uniform_rand());
0425406
2006/11/12(日) 23:33:37かんがえますから
どなたか、配列の中からある文字列に合致するのを選んで処理する方法だけでも
教えていただけないでしょうか?
例えば次のように
it is my pen という文字列が入った配列strからitをthisにmyをyourに変えて
strに入れなおす。みたいな感じで
0426デフォルトの名無しさん
2006/11/12(日) 23:40:58yacc とか bison について調べてみては?
0427416 ◆nZ5tHzSn6E
2006/11/12(日) 23:49:56ありがとうございます。
#include <limits.h>は習ってませんが、参考にさせていただきます。
0428デフォルトの名無しさん
2006/11/12(日) 23:56:02<limits.h>はただのマクロなんで深く考えずに使っていいと思う
後int tmpmax=INT_MIN,tmpnibanme=INT_MIN; を
long型にしてLONG_MINにすれば実行した人をころさずにすむ
0429406
2006/11/13(月) 00:05:44を習っていて少し行き詰っています。なにか良い参考書はありませんでしょうか?
0430デフォルトの名無しさん
2006/11/13(月) 00:06:23[2] 問題文(含コード&リンク):1から100までの素数の和を求めるプログラムを書け。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:lcc-win32
[3.3] 言語:C
検索してみましたが、答えが見つからないのでねがいします。
0431デフォルトの名無しさん
2006/11/13(月) 00:09:50このスレを素数で検索
0432デフォルトの名無しさん
2006/11/13(月) 00:31:14問題が少し違うので、どこをどう変えれば1から100までの素数の和になるか教えていただきたいです。お願いします。
0433デフォルトの名無しさん
2006/11/13(月) 00:39:12[2]
src[] 内の文字が大文字の場合は小文字にして (それ以外の文字はそのまま) dst[] にコピーする関数 str_lcopy(char dst[], char src[]) を作成せよ.
下のような main でこの関数の動作をテストせよ. str_lcopy が src の値を書き換えてならないことに注意. "This is the 21st Century!" を入力して,
src: This is the 21st Century!
dst: this is the 21st century!
力される (dst は正しく変換されるが, src が書き変わっていない) ことを確認せよ.
int main ( void )
{
char src[128], dst[128];
printf("文字列を入力して下さい >> ");
gets(src);
str_lcopy(dst, src);
printf("src: %s\n", src);
printf("dst: %s\n", dst);
return 0;
}
[3]
[3.1] winXP sp2
[3.2] cygwin
[3.3] C
[4] 2006年11月14日火曜
[5] 自力で3時間考えても手に負えませんでした。お願いします。
0434デフォルトの名無しさん
2006/11/13(月) 00:47:34#include <stdio.h>
int main(void) {
int i, j, s = 0;
for (i = 2; i <= 100; i++) {
for (j = 2; j <= i; j++) if (i % j == 0) break;
if (i == j) s += i;
}
printf("%d\n", s);
return 0;
}
0435デフォルトの名無しさん
2006/11/13(月) 00:51:40ありがとうございます。すごく助かりました。
0436デフォルトの名無しさん
2006/11/13(月) 00:56:11まあコピペしか能が無いんだから仕方ないか
0437434
2006/11/13(月) 00:57:32一応そこまで配慮したつもり。
>>433
#include <stdio.h>
#include <ctype.h>
void str_lcopy(char dst[], char src[]) {
char *d = dst, *s = src;
while ((*d++ = tolower(*s++)) != '\0') {}
}
int main (void) {
char src[128], dst[128];
printf("文字列を入力して下さい >> ");
gets(src);
str_lcopy(dst, src);
printf("src: %s\n", src);
printf("dst: %s\n", dst);
return 0;
}
0438デフォルトの名無しさん
2006/11/13(月) 01:11:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2929.txt
多分これでいいと思うけど適当に直して下さい。
ビンの個数を変えるには、#define NBIN の所の数字を変えればいいです。
0439デフォルトの名無しさん
2006/11/13(月) 01:14:56http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2930.txt
すまん一ヶ所間違っていたので直した。結果は同じなんだけどね。
間違ってる答えは紛らわしいので削除しといた。
0440デフォルトの名無しさん
2006/11/13(月) 01:19:04[2] 問題文:2進数で入力されたものを10進数で表示
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:火曜日の朝6時
0441デフォルトの名無しさん
2006/11/13(月) 01:28:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2931.txt
何度もスマネ
xが範囲外の時もsumとsum2に足していたので、hist[]がや平均や分散が
おかしくなっていたので再度修正。
悪いね
0442デフォルトの名無しさん
2006/11/13(月) 01:33:29すいません、正常に動作したのですが
意味が理解できませんでした。
関数の内容をcharとか使う下に書いたみたいな感じのでお願いできないでしょうか?
if(src >= 'A' && src <= 'Z')
{
diff = 'A'-'a';
s = src - diff;
printf("%c",s);
}
ちなみにこういう感じのを定義もつけて放り込んだらまともに動作しませんでした。
0443デフォルトの名無しさん
2006/11/13(月) 02:19:00[2] 問題文(含コード&リンク):小さいほうから100番目までの素数の和をもとめよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
このスレはすべてみて、似た問題の答えからこの問題の答えを出そうとしましたが、できなかったのでお願いします。
0444デフォルトの名無しさん
2006/11/13(月) 02:25:59# include <stdio.h>
int isprime(int n)
{
int i;
for(i = 2; i < n; i++)
if(n % i == 0)
return 0;
return 1;
}
int main(void)
{
int sum = 0;
int n = 2;
int count = 0;
while(count < 100)
{
if(isprime(n))
{
sum += n;
count++;
}
n++;
}
printf("%d\n", sum);
return 0;
}
0445デフォルトの名無しさん
2006/11/13(月) 02:26:26>>443
#include <stdio.h>
int main(void) {
int i, j, k = 0, s = 0;
for (i = 2; k <= 100; i++) {
for (j = 2; j <= i; j++) if (i % j == 0) break;
if (i == j) {s += i;k++}
}
printf("%d\n", s);
return 0;
}
0446デフォルトの名無しさん
2006/11/13(月) 02:27:190447387
2006/11/13(月) 02:33:10プログラムで探索をする方向で考えます。
0448デフォルトの名無しさん
2006/11/13(月) 03:02:39#include<stdio.h>
#include<stdlib.h>
int main(){
char *s;
int count,i,n;
while(get(s)!EOF) count ++;
n=count-1;
for (i=0;i<n-1;i++){
sum=2^i*(*s);
s++;
};
printf("answer=%d",sum);
return 0;
}
0449デフォルトの名無しさん
2006/11/13(月) 04:34:46[3.1] Windows
[3.2] Borland C++ 5.5.1 for Win32
[3.3] C
[4] 明後日
char Q(char "
void f(doubl *, 〜〜);
と定義された関数に
double a[4][5];
を
f(a, 〜);
と渡したが「問題のあるポインタの変換」と出るので
f(*a, 〜);
と渡したところ正常に動作。
配列の場合"a"はa[0][0]のアドレスを渡せるのでは…?
*aではa[0][0]の中身を渡してしまいそうなのに何故正常に動くのでしょうか…。
")
0450デフォルトの名無しさん
2006/11/13(月) 04:54:19double (*a)[5] としないとだめだろう?
0451デフォルトの名無しさん
2006/11/13(月) 05:03:48ポインタの深さが違うからエラーがでたんだよー。
0452デフォルトの名無しさん
2006/11/13(月) 05:09:58それに変えてみたらWinXPがエラー吐いて止まった件
0453デフォルトの名無しさん
2006/11/13(月) 05:20:00お前もう一回よく調べてみ。いい加減な事を書くなカス。
0454デフォルトの名無しさん
2006/11/13(月) 05:34:00そういわれても…。
double a[4][5];
を
double (*a)[5];
としたけれどaにscanfから数値を入れると強制終了する…。
0455デフォルトの名無しさん
2006/11/13(月) 05:50:06だからscanf()周りを調べろって。自分の思い込みだけで書くな。
0456デフォルトの名無しさん
2006/11/13(月) 05:53:080457デフォルトの名無しさん
2006/11/13(月) 05:55:27こう書いてあるけど…。
他に何かミスってる可能性ある…?
0458デフォルトの名無しさん
2006/11/13(月) 07:06:110459デフォルトの名無しさん
2006/11/13(月) 08:32:17おいおい、そんな驚き方したら(w
自 分 が エ ス パ ー じ ゃ な い っ て バ レ て し ま う だ ろ ?
0460デフォルトの名無しさん
2006/11/13(月) 09:43:19呼び出された関数側では二次元配列の大きさを知ることはできない。
明示的に示すには、関数の最初を変更しないといけない。
void f(double *, 〜〜);
↓
void f(double [][5], 〜〜);
0461デフォルトの名無しさん
2006/11/13(月) 11:17:14[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):x と y の数値の対を読み込むことを繰り返し、
それぞれの和を出力するプログラムを作れ。ただし,和の計算部分には、
2数の和を計算する関数を作って、それを呼び出すこと。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2006年11月14日
0462デフォルトの名無しさん
2006/11/13(月) 11:37:28#include <stdio.h>
double mysum(double x, double y){
return x+y;
}
main(){
double x, y;
while(1){
scanf("%lf",&x);
scanf("%lf",&y);
printf("%f",sum(x,y));
}
}
0463デフォルトの名無しさん
2006/11/13(月) 11:39:21printf("%f",mysum(x,y));
0464デフォルトの名無しさん
2006/11/13(月) 12:09:09それを使うことが前提なら次は最初から書いてね。ちなみにtolower()は、小文字にできるものは
その小文字を、その他の文字はそのままを返す関数(マクロの可能性もある)で、ctype.hに宣言
されている。
#include <stdio.h>
#include <ctype.h>
void str_lcopy(char dst[], char src[]) {
char *d = dst, *s = src;
while (*s != '\0') {
if (*s >= 'A' && *s <= 'Z') {
*d++ = *s++ - ('A'-'a');
} else {
*d++ = *s++;
}
}
*d = '\0';
}
int main (void) {
char src[128], dst[128];
printf("文字列を入力して下さい >> ");
gets(src);
str_lcopy(dst, src);
printf("src: %s\n", src);
printf("dst: %s\n", dst);
return 0;
}
0465デフォルトの名無しさん
2006/11/13(月) 13:35:23yasashii na...
0466デフォルトの名無しさん
2006/11/13(月) 14:05:08[2] 問題文:
配列に格納されたデータをソートするプログラムを作成するにあたり、
以下の機能を持つ関数を作成しなさい。
・乱数を生成し配列要素に格納する
init_array(int *pa, int n)
・配列要素を1行で画面に出力する
output_array(int *pa, int n)
・指定された2つアドレスのデータを交換する
swap(int *x, int *y)
[3.1] OS: windws xp [3.2] visual studio 2003 [3.3] 言語: C
[4] 期限: 11月16日
[5] その他の制限: 反復構造、ソート、探索、ポインタ、ファイル、構造体
よろしくお願いします。
0467デフォルトの名無しさん
2006/11/13(月) 14:05:18#include <math.h>
main(){
double x,y;
scanf("%d",&x);
y=log(x)/log(2);
printf("%f",y);
}
というプログラムにすると
/tmp/ccIE035m.o(.text+0x2e): In function `main':
: undefined reference to `log'
/tmp/ccIE035m.o(.text+0x48): In function `main':
: undefined reference to `log'
collect2: ld はステータス 1 で終了しました
というエラーがでます。何が間違っているんでしょうか?
0468デフォルトの名無しさん
2006/11/13(月) 14:19:07数学関数ライブラリがリンクされていない。
たぶんgccに-lmを渡せば良い。
0469デフォルトの名無しさん
2006/11/13(月) 14:20:35後scanfを
scanf("%lf",&x);
にしておいて
0470デフォルトの名無しさん
2006/11/13(月) 14:28:21[1] 授業単元:情報処理�U
[2] 問題文(含コード&リンク):2を底とするlogを計算するプログラムを作成しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年11月10日まで
[5] その他の制限:なし
お願いします。
なんで今ごろバグ取りしてるんだぜ?
0471デフォルトの名無しさん
2006/11/13(月) 16:20:13#include <stdio.h>
#include <stdlib.h>
void init_array(int* pa, int n){
for(; n!=0; n--)
pa[n-1] = rand();
}
void output_array(int* pa, int n){
for(; n!=0; n--)
printf("%d ", *pa++);
}
void swap(int* x, int* y){
_asm{
mov ecx, x
mov edx, y
xchg eax, [ecx]
xchg eax, [edx]
xchg eax, [ecx]
}
}
0472デフォルトの名無しさん
2006/11/13(月) 18:30:52ヒント: maxmin
0473デフォルトの名無しさん
2006/11/13(月) 18:38:480474デフォルトの名無しさん
2006/11/13(月) 18:57:28…
0475デフォルトの名無しさん
2006/11/13(月) 19:02:17Minimaxでは?
0476デフォルトの名無しさん
2006/11/13(月) 19:05:01#include<stdio.h>
#include<stdlib.h>
int main(void){
char buf[256];
long number=0L;
int i;
scanf("%s", buf);
for(i=0;buf[i]!='\0';i++){
if(buf[i]!='0' && buf[i]!='1'){
fprintf(stderr, "%s not binary.\n", buf);
exit(1);
}
number=(number<<1)|(buf[i]=='1');
}
printf("%ld\n", number);
return 0;
}
0477デフォルトの名無しさん
2006/11/13(月) 19:08:040478392
2006/11/13(月) 19:22:590479デフォルトの名無しさん
2006/11/13(月) 19:32:35if(turn == CIRCLE && human == CIRCLE || turn == CROSS && human == CROSS)
0480デフォルトの名無しさん
2006/11/13(月) 19:45:470481デフォルトの名無しさん
2006/11/13(月) 20:09:07ありがとうございます、whileは思いつきませんでした。
0482デフォルトの名無しさん
2006/11/13(月) 20:21:14[2] 問題文(含コード&リンク):
C言語のプログラムにより、端末の画面をうまく利用した
ゲーム等を2週間の間にグループ(3人または2人)で考案すること。
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: cc
[3.3] 言語: C
[4] 期限:11月15まで
[5] その他の制限: VT100制御コードというのを使って画面消去やカーソル移動をさせないといけないらしいです。
3年間プログラミングを習いましたが、基礎的なことしか分かりませんorz
それなのにいきなりの大きな課題・・まったく手がつかず放置状態です
作りたいゲームがいろんなチームとかぶっているので、私のチームは一人神経衰弱を作ることになったんですが、
私がまかせられっきりで班員が手伝おうとしてくれません(というか、唯一普通にプログラミングができるのが私だけみたいです。汗)
乱数を発生させて(?)毎回遊べるようにしたいのですが。。
どうか一番簡単なプログラムでいいので考えてもらえると助かります(TT)色々な課題と重なっていてかなりせっぱつまってます・・
0483デフォルトの名無しさん
2006/11/13(月) 20:26:30エスケープシーケンスのことでいいのかな?
void clear_screen(void){
printf("\x1b[2J"); // 画面を消去する
}
void locate(int x, int y){
printf("\x1b[%d;%dH", y+1, x+1); // 現在のカーソル位置を変更する
}
0484デフォルトの名無しさん
2006/11/13(月) 20:29:05一人で延々とめくるのか?それともコンピュータと対戦?
0485デフォルトの名無しさん
2006/11/13(月) 20:30:12乱数を使う方法かぁ・・・srand()とtime()あたり。
班員が動いてくれないのをどーにかする方法は、あんたが動かなければいい。
0486482
2006/11/13(月) 20:33:45ごめんなさい、1週間前から色々なプログラム見たり、前を振り返ったり先輩に聞いたりしたのですが
どうしても1から作ることができなくてorz
0487482
2006/11/13(月) 20:36:27【参考資料】
●VT100制御コード カーソル移動 画面消去
** vt100.c **
#include <stdio.h>
main()
{
int x,y;
char moji[10];
x=1; y=3;
printf("\033[2J");
printf("\033[9;30HK");
printf("\033[9;31Ha");
printf("\033[9;32Hz");
printf("\033[9;33Hu");
printf("\033[11;30H%1d",x+3);
printf("\033[11;31H%1d",y+5);
printf("\033[13;30H?? ");
printf("%c\n",getchar());
}
0488デフォルトの名無しさん
2006/11/13(月) 20:40:11long number=OL;
number=(number<<1)|buf[i]=='1');
の意味が分かりません。
0489デフォルトの名無しさん
2006/11/13(月) 20:43:18ジャンケンでいいじゃん
0490デフォルトの名無しさん
2006/11/13(月) 20:47:083年間プログラミングを習って、普通にプログラミングができるなら余裕だろ。
int cards[4][13]; // トランプなら1〜13?
int state[4][13]; // 表か裏か
for(i=0;i<4;i+=2) {
for(j=0;j<13;j++) {
cards[i][j] = cards[i+1][j] = rand()%13;
state[i][j] = state[i+1][j] = 0; // 裏
}
}
// カードをシャッフル
int cnt = 0;
while(1) {
int f = 1;
// 表示
while(f) {
// cnt++;
// 入力(1枚目)
// 表にする
// 表示
// 入力(2枚目)
// 表にする
if(同じカードじゃなかったら) {
2枚のカードを裏返す
f = 0;
}
}
if(カードが全部表になったら) break;
}
途中で力尽きた
0491デフォルトの名無しさん
2006/11/13(月) 20:51:28まー・・・マイコンBASICマガジンのバックナンバーでも読んで、移植に励んでくれ。
80年代のなら、短いのもあるだろう。
0492デフォルトの名無しさん
2006/11/13(月) 20:58:21とりあえず「文字を正確に読む」という能力を身に付ければいいんじゃないかな
0493デフォルトの名無しさん
2006/11/13(月) 21:00:51>>482
一応やってみるが、途中で投げ出すかも知れんので保険を用意しておいてくれ。
0494482
2006/11/13(月) 21:04:11すっごい助かります><
まだ、期限延ばしてもらえるかもしれないので大丈夫です!
0495デフォルトの名無しさん
2006/11/13(月) 21:10:09>long number=OL;
よく読め
>number=(number<<1)|buf[i]=='1');
number=(number<<1)|(buf[i]=='1');
だよく読め
分からないならnumber=number*2+(buf[i]=='1');
0496デフォルトの名無しさん
2006/11/13(月) 21:30:38出来そうなのは解いてみる。
0497デフォルトの名無しさん
2006/11/13(月) 21:45:53http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2932.c
1.カードの初期化
2.カードの表示
まで
0498デフォルトの名無しさん
2006/11/13(月) 23:58:02[2] 問題文(含コード&リンク):
トランプを切る方法の一つとして、トランプを2つに分けて両手でばらばらと切る方法がある。
今、トランプは、ジョーカを除いた52枚とする。もし、切り方のうまい人がいて、
トランプを正しく半分(26枚)にして、かつ交互に1枚ずつ切れるとする。
この方法では、何回か行うと元に戻ることが知られている。さて、何回で元に戻るであろうか。
これを計算するプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: visual stdio 2005
[3.3] 言語:C++
[4] 期限:2006年11月20日まで
[5] その他の制限:プログラムの説明もお願いします。
長くてごめんなさい
0499デフォルトの名無しさん
2006/11/14(火) 00:02:01次のプログラムを参考にせよ。
#include<stdio.h>
#define N 52 /* トランプの枚数 */
#define M (N/2) /* その半分の数 */
int main( void )
{
int k;
int cards[ N ]; /* トランプ */
int temp[ N ]; /* 一時的にトランプの札を移動 */
int count = 0; /* 切った回数 */
/* トランプをセット */
for( k=0; k<N; k++ )
cards[ k ] = k+1;
while( 1 ) /* 無限ループ */
{
count++; /* 回数を一回増分 */
temp ← cardsを2つに分けてぱらぱらと切ったものをひとつにしたもの
temp が元に戻っていたら終了(breakする)
cards ← temp
}
printf( "%d 回目で元に戻る", count );
return 0;
}
0500デフォルトの名無しさん
2006/11/14(火) 00:03:12↓↓tempが元に戻っていることの判定法↓↓
https://weblec.kanagawa-u.ac.jp/weblec6/Web/HTML/Th_49/Resume/File_215.ppt
↓↓cardsを2つに分けてぱらぱらと切ったものをひとつにしたもの↓↓
j = 0;
for( i=0; i<M; i++ )
{
temp[ j ] = cards[ i ];
temp[ j ] = cards[ M + i ];
j += 2;
}
0501デフォルトの名無しさん
2006/11/14(火) 03:02:05[2] 問題文(含コード&リンク):
10等分法のアルゴリズムを作成し、x^3-10=0の解を求めるプログラムを作成せよ
なお、許容誤差を10^-7 とし、区間幅が10^-7 を下回ったところで計算を打ち切ること
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語: C
[4] 期限: 2006年11月15日午前中まで
[5] その他の制限: while文を使っての作成お願いします
0502482
2006/11/14(火) 05:24:27あぁ、ありがとうございます!
よければ続きもお願いします・・;;
0503デフォルトの名無しさん
2006/11/14(火) 06:52:50http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2933.c
あまりに操作しにくいので、# define USE_TERMIOSのコメントアウトを外すと、
非標準のライブラリを使っていちいちエンターキーで確定せずに使えるようにした。
0504デフォルトの名無しさん
2006/11/14(火) 13:48:11[2] 問題文(含コード&リンク): キーボードから1以上の整数n を入力し、(i=1からn番目までのi^2を求めるΣ) を計算して結果を画面表示するプログラムを
作成しなさい.ただし,1 未満の整数が入力された場合には再入力ができるように,1 以上の整
数が入力されるまで「scanf()」を繰り返すこととし,計算部分は再帰的プログラムとして作成す
ること.また,この関数のプロトタイプは「int square_sum(int)」とする.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:11月15日まで
[5] その他の制限: なし
お願いします。
0505デフォルトの名無しさん
2006/11/14(火) 14:01:29やる気ない奴らは何もしなかっただけだが、ここに丸投げするのは不正だもんな。
まあ、分からなかった部分の参考にするのはアリだろうけど。
0506デフォルトの名無しさん
2006/11/14(火) 14:48:36そんなことをこのスレで言われても。
問題がとければそれで良し、後は依頼者が何をしようが関知しない、というのでは駄目なのか?
0507デフォルトの名無しさん
2006/11/14(火) 15:56:09n×nのサイズで螺旋状に0から(n二乗ー1)までの数が並ぶ行列を作成し、
画面に表示させるプログラムって配列を使って組むにはどうすればいいでしょうか?
ヒントだけでもいいので教えてください。お願いします。
0508デフォルトの名無しさん
2006/11/14(火) 16:11:04int square_sum(int n)
{
return n * (2 * n + 1)*(n + 1)/6;
}
int main()
{
int n = 0, sum;
while(n < 1){
puts("第何項まで?(1以上) =");
scanf("%d", &n);
}
printf("数列iの2乗の%d番目を含む総和は%d \n", n, square_sum(n));
return 0;
}
0509デフォルトの名無しさん
2006/11/14(火) 16:18:17#include<stdio.h>
int main(void){
int a, b;
int c[100][100]
printf("please input! n = ");
scanf("%d\n",a);
0510デフォルトの名無しさん
2006/11/14(火) 16:27:39int square_sum(int n)
{
if (n < 1) return 0;
return (n + 1) * n / 2 + square_sum(0);
}
0511デフォルトの名無しさん
2006/11/14(火) 16:35:05外側から埋めてけば?
0512デフォルトの名無しさん
2006/11/14(火) 16:46:22ヒント1.方眼紙を用意する。(無ければ紙に線を引いて作ること)
ヒント2.方眼紙にn×nサイズの枠を作り、その中に左上から指示通り数字を埋めていく。
ヒント3.nと、曲がるまでに配置する数値の数と、曲がる回数に法則性がないか考える。
0513デフォルトの名無しさん
2006/11/14(火) 16:47:52その切りかたを何回か繰り返すともとに戻る、ということを前提とするなら、
最大でも52!回繰り返せば十分である。なぜなら、52!回繰り返してもとに戻らないなら、
どこかでループしていて、それ以降も決してもとに戻らないからである。
よって、1回〜52!回繰り返せばもとに戻るわけだが、これらの公倍数である
(52!)!回目にはいずれの場合でももとに戻る。よって、
int main(void){ return printf("(52!)!\n"); }
0514デフォルトの名無しさん
2006/11/14(火) 16:59:04その発想はなかったわ
0515デフォルトの名無しさん
2006/11/14(火) 17:25:06int main(void){
int i, j, k, n;
int **p;
/* 中略 */
k = n*n-1;
for(i=0; i<=n/2; i++) {
for(j=i; j<=n-i-1; j++) p[i][j] = k--;
for(j=i+1; j<n-i-1; j++) p[j][n-i-1] = k--;
for(j=n-i-1; j>i; j--) p[n-i-1][j] = k--;
for(j=n-i-1; j>i; j--) p[j][i] = k--;
}
/*後略*/
}
0516デフォルトの名無しさん
2006/11/14(火) 17:30:41[2] 問題文(含コード&リンク):1から500の中で
任意の数a,b,cの公倍数を求めるプログラムを作成せよ。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: BCC5.5
[3.3] 言語: C++
[4] 期限: 11/15まで
[5] その他の制限:なし
自分で考えてみても、手も足もでなかったので教えてください。お願いします。
0517デフォルトの名無しさん
2006/11/14(火) 17:33:310518515
2006/11/14(火) 17:35:52i<=n/2→i<n/2+n%2
0519デフォルトの名無しさん
2006/11/14(火) 17:41:25表示すればいいのか、がわからないです。
0520デフォルトの名無しさん
2006/11/14(火) 17:42:11余裕じゃん
long koubaisuu (int a, int b, int c){
return a*b*c;
}
0521デフォルトの名無しさん
2006/11/14(火) 18:15:07失格。
0522デフォルトの名無しさん
2006/11/14(火) 18:17:190523デフォルトの名無しさん
2006/11/14(火) 18:22:540524デフォルトの名無しさん
2006/11/14(火) 18:24:30500^3 < 2^31-1
0525デフォルトの名無しさん
2006/11/14(火) 18:25:28なんのためにa,b,cが500以下とか言う条件がついてると思ってるんだよ
0526デフォルトの名無しさん
2006/11/14(火) 18:49:28有限時間で公倍数全てを表示することはできない
0528デフォルトの名無しさん
2006/11/14(火) 18:54:28「結果は7個以上出力すること」
です。
0529デフォルトの名無しさん
2006/11/14(火) 19:06:10それすらも思いつかないのか?
お前の肩の上に乗ってるのはなんだ? 漬物石か?
ずいぶんと軽そうな漬物石だこと。
0530デフォルトの名無しさん
2006/11/14(火) 19:17:530531デフォルトの名無しさん
2006/11/14(火) 19:27:070532デフォルトの名無しさん
2006/11/14(火) 19:37:32>>1
>・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
0533デフォルトの名無しさん
2006/11/14(火) 19:38:11[2] 問題文(含コード&リンク):ローンの利息計算をするプログラムを作る
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: VC++ 2005
[3.3] 言語: C++
[4] 期限: 今週木曜日
[5] その他の制限:元金、年利率、年間利息(単利)、年間利息(複利)、元利合計(単利)、元利合計(複利)を定義して、元金と年利率のみを cin で入力して20年間分の利息と元利合計(それぞれ単利、複利を別々に)を1年ごとに表示できるように出力する。
よろしくお願いします。
switch をこの課題が出された日に習ったんですが、if と else でいいですよね。
0534デフォルトの名無しさん
2006/11/14(火) 19:44:52500 縛りの文言が公倍数を指すと考えた場合。問題追加部分は無視。
#include <stdio.h>
int gcd(int a, int b)
{
int c;
do {
c = a%b;
a=b;
b=c;
} while(c != 0);
return a;
}
int lcm(int a, int b)
{
return a*b/gcd(a,b);
}
int main()
{
int a,b,c,l,i;
printf("整数を空白で区切って3個入力:");
fflush(stdout);
scanf(" %d %d %d", &a, &b, &c);
l = lcm(lcm(a,b),c);
for(i=l; i<500; i+=l)
printf("%d\n", i);
return 0;
}
0535デフォルトの名無しさん
2006/11/14(火) 19:52:100536534
2006/11/14(火) 19:57:27確かプログラムが正常終了すれば全部フラッシュされるはず。違ったっけ?
>>516
よく見たら c++ だった…。
頭の #include <stdio.h> を #include <iostream> に、
またmain() を以下のものに差し替えてください。
int main()
{
int a,b,c,l,i;
std::cout <<"整数を空白で区切って3個入力:" <<std::endl;
std::cin >> a >> b >> c;
l = lcm(lcm(a,b),c);
for(i=l; i<500; i+=l)
printf("%d\n", i);
return 0;
}
0537534
2006/11/14(火) 20:00:52printf("%d\n", i);
↓
std::cout << i << std::endl;
0538デフォルトの名無しさん
2006/11/14(火) 20:22:090539デフォルトの名無しさん
2006/11/14(火) 20:36:51<cstdio>ならOK。
0540デフォルトの名無しさん
2006/11/14(火) 21:37:25合わせをすべて記述するようなプログラム(たとえばN=3なら(1,2,3),(1,2,4),…
(98,99,100))ってどうやって作ればいいか教えて下さい。
0541デフォルトの名無しさん
2006/11/14(火) 21:50:580542デフォルトの名無しさん
2006/11/14(火) 21:51:57[2]問題文:RSA公開鍵暗号方式の実装について考えてみる。
キーボードからX,e,p,qを入力させ、暗号文(Y)が出力される
プログラムを組め。
以下に実際に行われる計算式が示されているので、それらを
利用して実装せよ。
p*q = n
a = (p-1)*(q-1)
X^e = Y (mod n)
※ ただし、pおよびqは異なる150~200桁程度の素数とし、aとeは互いに素で
あること。また、Xも150〜200桁程度の数とする。素数を求めるプログラム
を組む必要はない。
ヒント:�@ユークリッドの互除法
�Aint型以上の数に対して配列の利用
[3]環境
[3.1]Windows XP
[3.2]gccまたはVisual C++ 6.0
[3.3]CでもC++でも可です。
[4]期限:2006/11/20
[5]その他の制限:特になし。あまり難しいことは習ってないです。
0543デフォルトの名無しさん
2006/11/14(火) 21:53:50#include <stdio.h>
void main(){
int a1, b;
int x1, y, q, r;
printf("2つの正の整数を入力。\n");
scanf("%d %d", &a1, &b);
x1=a1; y=b;
while( 1 ){
q=x1/y;
r=x1-q*y;
if(r==0) break;
x1=y;
y=r;
}
printf("%dと%dの最大公約数は%d。\n", a1, b, y);
if(y==1){
printf("%dと%dは互いに素。\n",a1, b);
}
これぐらいしかわからないです。どうか力をお貸し下さい。
0544デフォルトの名無しさん
2006/11/14(火) 22:07:060545デフォルトの名無しさん
2006/11/14(火) 22:12:51[1] 授業単元:C++によるプログラミング入門
[2] 問題文(含コード&リンク):
1,2,3,…,100までの整数の中からN個の数字を取り出すとして、その組み
合わせをすべて記述するようなプログラム(たとえばN=3なら(1,2,3),(1,2,4),…
(98,99,100))を提出せよ
[3] 環境
[3.1] OS: Windows XP
[3.2] VC 6.0
[3.3] C++
[4] 期限: 2006年11月19日17:00まで
[5] その他の制限:特になし
#include <stdio.h>
#define nmax 100
int i
double data[nmax+1]
main{
scanf("整数N%d\n",&N);
}
これでdata[1],data[2],…,data[N]に整数を入れて
すべての組み合わせをプリントしていこうとおもったんですけど、
for文がいっぱいになってしまうようなものしか思いつきませんでした。
ご協力お願いします。
0546デフォルトの名無しさん
2006/11/14(火) 22:13:02もしかして、誤差を出さない計算ルーチン作らないとダメだったりする?
こういうのって誤差にとてもうるさかったはず。
0547デフォルトの名無しさん
2006/11/14(火) 22:17:00つ ttp://www.faireal.net/articles/8/01/
0548デフォルトの名無しさん
2006/11/14(火) 22:38:40下のプログラムを大枠として作っていただけないですか?
最後の方の三行がわかりません。
#include<stdio.h>
#define N 52 /* トランプの枚数 */
#define M (N/2) /* その半分の数 */
int main( void )
{
int k;
int cards[ N ]; /* トランプ */
int temp[ N ]; /* 一時的にトランプの札を移動 */
int count = 0; /* 切った回数 */
/* トランプをセット */
for( k=0; k<N; k++ )
cards[ k ] = k+1;
while( 1 ) /* 無限ループ */
{
count++; /* 回数を一回増分 */
temp ← cardsを2つに分けてぱらぱらと切ったものをひとつにしたもの
temp が元に戻っていたら終了(breakする)
cards ← temp
}
printf( "%d 回目で元に戻る", count );
return 0;
}
0549デフォルトの名無しさん
2006/11/14(火) 22:43:190550デフォルトの名無しさん
2006/11/14(火) 22:44:33/*1レスに納めるためコメント省略*/
#include <stdio.h>
#define N 3
#define MAX 100
int main(void){
int num[N];
int i,j;
num[0]=1;
for(i=1;i<N;i++){
num[i]=num[i-1]+1;
}
i=N-1;
while(i>=0){
if(num[i]<MAX+i-(N-1)){
for(j=0;j<N;j++)printf("%d ",num[j]);
printf("\n");
num[i]++;
while(i<N-1){
num[i+1]=num[i]+1;
i++;
}
}else i--;
}
for(j=0;j<N;j++)printf("%d ",num[j]);
printf("\n");
return 0;
}
0551デフォルトの名無しさん
2006/11/14(火) 22:44:42言語はC言語でコンパイラVC.NET
0552デフォルトの名無しさん
2006/11/14(火) 22:45:39そうか、がんばってくれ
0553デフォルトの名無しさん
2006/11/14(火) 22:48:580554デフォルトの名無しさん
2006/11/14(火) 22:54:22URLありがとうございます。
しかし、残念ながら内容が難しく
理解できなかったですorz
失礼ですが、C言語でのRSA暗号実装紹介のサイトは
ご存知じゃありませんか?
0555デフォルトの名無しさん
2006/11/14(火) 22:59:03#include<stdio.h>
#define N 52 /* トランプの枚数 */
int main( void )
{
int k, i;
int cards[ N ]; /* トランプ */
int temp[ N ]; /* 一時的にトランプの札を移動 */
int count = 0; /* 切った回数 */
int cards_at_begining[N];
for( k=0; k<N; k++ ) {
cards[ k ] = k+1;
cards_at_begining[k] = k+1;
}
while( 1 ) {
loop_start:
count++; /* 回数を一回増分 */
for (i=0; i<N/2; i++) { /* shuffle */
temp[i]=cards[2*i];
temp[i+M]=cards[2*i+1];
}
for (i=0; i<N; i++)
cards[i]=temp[i];
for (i=0; i<N; i++) { /* check */
if (cards[i] != cards_at_begining[i])
goto loop_start;
}
break;
}
printf( "%d 回目で元に戻る", count );
return 0;
}
0556デフォルトの名無しさん
2006/11/14(火) 23:15:57ありがとうございます。
0557デフォルトの名無しさん
2006/11/14(火) 23:16:19for(k=0; k<N; k++) temp[k] = i%2?cardsk/2+M]:cards[k/2];
for(k=0; k<N; k++) if(temp[k]!=k+1) break;
if(k==N) break;
for(k=0; k<N; k++) cards[k] = temp[k];
0558デフォルトの名無しさん
2006/11/14(火) 23:18:44>>555
切り方間違ってない?
0559デフォルトの名無しさん
2006/11/14(火) 23:28:12http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2935.c
昔書いたのの使いまわしで、ちょっと大げさかもしれないが。
C99依存だけど、どうしても問題になるなら書き換えるから言ってくれ。
0560デフォルトの名無しさん
2006/11/14(火) 23:33:01[1] 授業単元: プログラミング
[2] 問題文(含コード&リンク):整数値nを読み込み、1からnまでで、2で割り切れて3で割り切れない数値の個数を出力するプログラムを作成せよ。
実行例 読み込み数値20の場合
INPUT INTEGER:20
7 integers can be divided by 2 and not by 3
(2,4,8,10,14,16,20の7個)
[3] 環境
[3.1] OS:windows
[3.3] 言語:c++
[4] 期限: 明日
0561デフォルトの名無しさん
2006/11/14(火) 23:38:52[2] 問題文(含コード&リンク):
�@ int a,b,c,d;
のように、文字が来ればコンマの繰り返しで セミコロンが来たら終了というプログラムを作れ
�A int a,b;
int x;
のように、改行できるプログラムを作る
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限 明日の14時まで
[5] その他の制限: なし
0562デフォルトの名無しさん
2006/11/14(火) 23:41:51# include <iostream>
int main(void)
{
int n;
std::cout << "INPUT INTEGER:";
std::cin >> n;
std::cout << (n / 6) * 2 + (n % 6 >= 2) + (n % 6 >= 4) << " integers can be devided by 2 and not by 3\n";
}
0563デフォルトの名無しさん
2006/11/14(火) 23:43:08#include<stdio.h>
main(){
int i,N,kosuu;
printf("INPUT INTEGER:");
scanf("%d",&N);
for (i=0;i<=N;i=i+2){
if(i%3==0) kosuu=kosuu+1;
}
printf("%d integers can be divided by 2 and not by 3",kosuu);
}
0564562
2006/11/14(火) 23:43:42dividedね。
0565デフォルトの名無しさん
2006/11/14(火) 23:44:20意味がわからん
0566デフォルトの名無しさん
2006/11/14(火) 23:45:54if(i%3!=0) kosuu=kosuu+1;
matigaeta
0567デフォルトの名無しさん
2006/11/14(火) 23:47:12[1] 授業単元: C言語
[2] 問題文(含コード&リンク):
最大8桁の整数を2つ入力し、int型配列に格納。
入力後2つの数の和を求める。負の数、整数以外、スペースのみが入力された場合
エラーメッセージを表示
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 11/18まで
[5] その他の制限: gets,scanfは禁止
0568561
2006/11/15(水) 00:01:12ちょっと説明不足でしたか・・・
0569デフォルトの名無しさん
2006/11/15(水) 00:03:19それで説明が足りたと思う神経を自分で疑ったことが無いのか?
0570デフォルトの名無しさん
2006/11/15(水) 00:07:08ぶっふぉん
0571デフォルトの名無しさん
2006/11/15(水) 00:07:58せめてI/Oぐらいちゃんと書けってこった
0572デフォルトの名無しさん
2006/11/15(水) 00:08:48はっきり言って何を言ってるのか全く分からん
問題文をそのまま一字一句間違いなく写してくれ
0573デフォルトの名無しさん
2006/11/15(水) 00:13:11どうせ、goto でループつくってもいいんでしょ?
0574デフォルトの名無しさん
2006/11/15(水) 00:16:28わざわざありがとうございます。量が膨大で
自分のヘタレのせいで
中身もまったく理解できない始末でしたorz
また、VC6.0でコンパイラしようとしたらエラーになって
しまいました。
お時間あれば助力お願いします。
0575545
2006/11/15(水) 00:21:51実際に走らせて見たところちゃんとできててビックリしました。
なぜこれでできるかは明日じっくり考えたい思います。
ありがとうございました。
0576デフォルトの名無しさん
2006/11/15(水) 00:23:26#include <stdio.h>
int main()
{
printf("int ");
printf("a,");
printf("b,");
printf("c,");
printf("d;");/* <-セミコロンが来た */
printf("\n");
printf("終了します\n");
for(;0;);
return 0;
}
0577デフォルトの名無しさん
2006/11/15(水) 00:23:54#include<stdio.h>
int main(void){
char buf[1024];
int i;
printf("Input string : ");
gets(buf);
for(i=0;buf[i]!='\0';i++){
if(buf[i]==';') break;
printf(",");
}
return 0;
}
#include<stdio.h>
int main(void){
char buf[1024];
int i;
printf("Input string : ");
gets(buf);
for(i=0;buf[i]!='\0';i++){
printf("%c", buf[i]);
if(buf[i]==';') printf("\n");
}
return 0;
}
0578デフォルトの名無しさん
2006/11/15(水) 00:25:26[2] 問題文(含コード&リンク):BM法を作って比較とジャンプの履歴を表示する。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
BM法のプログラミングは作ってみましたが、ジャンプと比較の履歴の表示
の仕方がわかりません。 よろしくおねがいします。
0579デフォルトの名無しさん
2006/11/15(水) 00:26:48#include <stdio.h>
#include <string.h>
#include <limits.h>
int bm_match(const char txt[], const char pat[])
{
int pt;
int pp;
int txt_len = strlen(txt);
int pat_len = strlen(pat);
int skip[UCHAR_MAX + 1];
for (pt = 0; pt <= UCHAR_MAX; pt++)
skip[pt] = pat_len;
for (pt = 0; pt < pat_len - 1; pt++)
skip[pat[pt]] = pat_len - pt - 1;
while (pt < txt_len) {
pp = pat_len - 1;
while (txt[pt] == pat[pp]) {
if (pp == 0)
return (pt);
0580デフォルトの名無しさん
2006/11/15(水) 00:28:15pt--;
}
pt += skip[txt[pt]];
}
return (-1);
}
int main(void)
{
int idx;
char s1[80];
char s2[80];
printf("テキスト:");
scanf("%s", s1);
printf("パターン:");
scanf("%s", s2);
idx = bm_match(s1, s2);
if (idx == -1)
puts("テキスト中にパターンは存在しません。");
else
printf("%d文字目に見つかりました。\n", idx + 1);
return (0);
}
0581デフォルトの名無しさん
2006/11/15(水) 00:32:42したいのですがわかりません。 よろしくおねがいします m(__)m
0583デフォルトの名無しさん
2006/11/15(水) 00:41:49VC6でコンパイルできるようにするだけなら、
28行目
# else /* C99 */
の前に、
# elif defined _MSC_VER
typedef unsigned __int16 smallint;
typedef unsigned __int32 middleint;
typedef unsigned __int64 largeint;
の4行を追加すればたぶん問題ない。
gccでは-std=c99フラグを付ければコンパイルできる。
こういう小細工をせずにC89標準の機能のみで動くようにするのは厄介だけど、できなくはない。
0584デフォルトの名無しさん
2006/11/15(水) 00:43:50すげぇエスパー。元の問題知ってるとしか思えない。
0585デフォルトの名無しさん
2006/11/15(水) 00:56:11while (txt[pt] == pat[pp]) {
↓
while (1) {
printf("compare : txt[%d]=%c and pat[%d]=%c\n", pt, txt[pt], pp, pat[pp]);
if(txt[pt] != pat[pp]) break;
pt += skip[txt[pt]];
↓
pt += skip[txt[pt]];
printf("jump : %d to %d\n", pt, pt+skip[txt[pt]]);
0586578
2006/11/15(水) 01:10:52どうも回答ありがとうございます!!
変更後エラーはでましたが、ここまでヒントをくれれば
あとはなんとかなりそうです。
本当にありがとうございました☆
0587デフォルトの名無しさん
2006/11/15(水) 01:53:36533 お願いします
0588デフォルトの名無しさん
2006/11/15(水) 02:09:38気をとりなおしてC98準拠にした。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2936.c
VC6、gccでそのままコンパイルできるはず。
遅いけど、我慢してくれ。
0589デフォルトの名無しさん
2006/11/15(水) 02:50:51Cでつくったが問題見たらC++でcin使ってとか書いてあった。
眠くなったからおやすみ
0590デフォルトの名無しさん
2006/11/15(水) 02:56:57どっち方向がお望みか知らんけど螺旋にしてみた
#include <stdio.h> #define N 9 //サイズ
void print(int ary[N][N]);int right(int ary[N][N],int x,int y, int n, int past);int up(int ary[N][N],int x,int y, int n, int past);
int down(int ary[N][N],int x,int y, int n, int past);int left(int ary[N][N],int x,int y, int n, int past);void answer(int ary[N][N], int n);
int main(){ int ary[N][N] = {0}; int n = 0; answer(ary, n); print(ary); return 0;}void answer(int ary[N][N], int n){ int i,j;
for(j =0,i = 1; i <= (N/2 + 1) ; i++,j++){ n = right(ary,j,j,n, i); n = down(ary,i ,N-i,n, i); n = left(ary,N-i,N - i - 1,n, j); n = up(ary,N - i - 1,j, n,j);
}} int right(int ary[N][N],int y,int x, int n, int past){ if(x > N - past || y > N || x < 0 || y < 0)return n; ary[y][x] = n ; right(ary, y, x+1, n +1 , past );
} int down(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N - past || x < 0 || y < 0)return n; ary[y][x] = n; down(ary, y+1,x , n+1 , past );
} int left(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N || x < past || y < 0)return n; ary[y][x] = n; left(ary, y, x-1, n+1 , past );
} int up(int ary[N][N],int y,int x, int n, int past){ if(x > N || y > N || x < 0 || y <= past)return n; ary[y][x] = n; up(ary, y-1, x, n+1 , past );
} void print(int ary[N][N]){ int *p = &ary[0][0],i; for(i = 1,p = &ary[0][0]; p <= &ary[N-1][N-1]; p++,i++){ printf("%3d ", *p);
if(!(i % N))putchar('\n');}}
0591 ◆sUfWYz9MSA
2006/11/15(水) 09:30:23[2] 問題文:2つの自然数 a, b に対し, a と b の最大公約数を
求める関数 int gcm(int a, int b) とその公約数をすべて表示する関数
void print_gcm(int , int) を作成せよ.
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C++
[4] 期限: 2006年11月15日12:00まで
[5] その他の制限:関数まで習いました。
0592デフォルトの名無しさん
2006/11/15(水) 09:45:39前スレ>>532-533
>>591
前スレ>>508-513
0593デフォルトの名無しさん
2006/11/15(水) 10:38:39ありがとうございます。
相変わらず中身はさっぱりでしたorz
VC6でコンパイルしたところエラー1が
以下のように出てしまいました。
273行目
'return' : 'void *' から 'unsigned int *' に変換することはできません。
'void*' から非 'void' 型への変換には明示的なキャストが必要です。
ヘタレでホントすいません。お願いします。
0594たか
2006/11/15(水) 10:53:01[2] 問題文:キーボードから入力される100個の整数のうち、
2桁の数がいくつあるかを数えて、その個数を表示する。
文字配列にアルファベットで適当な文字を10文字入れたとき、
入力順序と逆順で表示する。
(配列やポインタを使って記述する。)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Microsoft VisualStudio6.0
[3.3] 言語: C++
[4] 期限: 2006年11月17日まで
[5] その他の制限:
お願いします!!
0595デフォルトの名無しさん
2006/11/15(水) 11:08:50using namespace std;
#include<iostream>
int main(void){for(int i=0,int c=0;i<10;i++){int n;cin>>n;if(n>=10 && n<100)c++;}cout<<c<<endl;return 0;}
0597デフォルトの名無しさん
2006/11/15(水) 11:56:060598デフォルトの名無しさん
2006/11/15(水) 13:07:09[2] 問題文
キーボードから入力した複数の英単語を連結して行くプログラムを書け。
ただし、
(1)単語は一度に1つずつ入力し(各単語の入力は改行で終る)、EOFの入力で単語入力を終了とする。
(2)連結する時に、直前の単語との間に区切り文字としてスペースを1つ置き 9 (そうすると英文として読める)、連結した文字を最後に入力する。
ヒント:連結単語を置くために十分長い配列を用意しておいて、入力単語を順番に、その配列にコピーして行けば良い。
[3.1] OS:unix
[3.3] 言語:c
[4] 期限: 午後6時まで
期限が短すぎるし私には解けそうにありません。
お願いします。
0599デフォルトの名無しさん
2006/11/15(水) 13:12:17[2] 問題文:
0〜100までの間の数をランダムに5つ入力し、
最小値、最大値、合計、平均値を求めるプログラムを
for文とif文を用いて作りなさい。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン: Microsoft VisualStudio2005
[3.3] 言語:C++
[4] 期限:2006年11月17日17:00まで
[5] その他の制限:表示させるだけの(Printfを使った)基本的なプログラミングから、if、for構文のみ習っています。
宜しくお願いします。
0600デフォルトの名無しさん
2006/11/15(水) 13:15:20int main(){
int c;
while ((c=getc(stdin))!=EOF){
if (c=='\n')c=' ';
putc(c,stdout);
}
fflush(stdout);
return 0;
}
0601デフォルトの名無しさん
2006/11/15(水) 13:17:37using namespace std;
#include<iostream>
int main(void){int max=0,min=100,sum=0,n;
for(int i=0;i<5;i++){cin>>n;sum+=n;if(min>n)min=n;if(max<n)max=n;}
cout<<"最小値:"<<min<<endl<<"最大値:"<<max<<endl<<"合計:"<<sum<<endl<<"平均値:"<<(double)sum/5.0<<endl;
return 0;}
0603デフォルトの名無しさん
2006/11/15(水) 13:32:04これでいいのか?単語長はMAXCHARS、単語数はMAXWORDSをいじればよい。
#include <stdio.h>
#define MAXCHARS 10
#define MAXWORDS 1000
int main (void) {
int i = 0, j;
char words[MAXWORDS][MAXCHARS];
while (scanf("%s", words[i++]) != EOF) {}
for (j = 0; j < i - 1; j++) printf("%s ", words[j]);
return 0;
}
0604デフォルトの名無しさん
2006/11/15(水) 13:43:26>連結した文字を最後に入力する
>>598
「スペースを1つ置き 9 」って何?
0605デフォルトの名無しさん
2006/11/15(水) 13:52:25ちょっと遅れた
#include <stdio.h>
int gcm(int a, int b) {
if (b == 0) return a; else return gcm(b, a % b);
}
void print_gcm(int a, int b) {
int i = gcm(a, b);
do if (a % i == 0 && b % i == 0) printf("%d ", i); while (--i != 0);
}
int main (void) {
int a, b;
printf("a b?:");scanf("%d%d", &a, &b);
print_gcm(a, b);
return 0;
}
0606デフォルトの名無しさん
2006/11/15(水) 13:55:190607デフォルトの名無しさん
2006/11/15(水) 14:20:04ありがとうございます!
0608デフォルトの名無しさん
2006/11/15(水) 16:45:54ようやくできました。有り難うございます。
0610デフォルトの名無しさん
2006/11/15(水) 18:22:22C++ガウス関数作れって言われたんだけど、渡された本は読んだんだけど
おすすめな初心者解説サイトないですぁ?
お返事もらえないのでこっちで質問します。
0611デフォルトの名無しさん
2006/11/15(水) 18:32:54ざんねんですが ありません
0612デフォルトの名無しさん
2006/11/15(水) 18:52:10それはVC6がおかしいような。Cとしてコンパイルしてる?
ともあれ、修正版。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2938.c
0613デフォルトの名無しさん
2006/11/15(水) 19:04:21[2] ゲーム http://sage.math.washington.edu:9010/la4[3]
[3.1] windowsXP
[3.2] Visual Studio 2003
[3.3] C ++
[4] 2006年 11月17日
[5]クラスを使った問題です。問題の意味がわからないときは訳します。お願いします。
0614デフォルトの名無しさん
2006/11/15(水) 19:07:07This page does not exist yet.の意味がわからないので
訳してください
0615デフォルトの名無しさん
2006/11/15(水) 19:08:46Before creating the page, please check if a similar page already exists.
Here are some existing pages with similar names:
* la3
* la4
0616デフォルトの名無しさん
2006/11/15(水) 19:14:53それを澄ました顔でペラペラと・・・く・・・
0617デフォルトの名無しさん
2006/11/15(水) 19:16:47実際のところ>>615だって必死に辞書ひいて書いてるに違いない。
と、思っておけ
0618デフォルトの名無しさん
2006/11/15(水) 19:26:560619デフォルトの名無しさん
2006/11/15(水) 19:34:05ttp://e-words.jp/w/E383AAE382A8E383B3E38388E383A9E383B3E38388.html
0620 ◆mI7lo1ZRb6
2006/11/15(水) 19:43:02宜しければ一度で良いので拝見して頂きたいです
当企画の成立には貴方の力が必要です
次世代コミュニティ製作 C++,mod_perl,P2Pが使えるコーダ、グラフィッカ募集中
http://pc8.2ch.net/test/read.cgi/tech/1163349367/
0621デフォルトの名無しさん
2006/11/15(水) 20:34:34あ、釣られた
0622デフォルトの名無しさん
2006/11/15(水) 20:36:18http://disaster.yahoo.co.jp/1163590520/meteo.yahoo.co.jp/weather/jp/tsunami/index.html
0623デフォルトの名無しさん
2006/11/15(水) 21:48:59そう思いたい現実が俺にも・・・。
0624宜しくお願いします。
2006/11/15(水) 22:44:01[2]
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2939.zip
[3]
[3.1] WindowsXP(HomeSP2)
[3.2] Visual Studio 2005
[3.3] C言語
[4] 2006年11月16日 PM4:30
[5] Break,Goto,Continue,ファイル入力にfscanf()関数の使用禁止
0625デフォルトの名無しさん
2006/11/15(水) 23:23:59[2]与えられた文字列a,bを交互に入れ替えて表示する関数の作成
[3] 環境
[3.1]リナックス
[3.2]gcc
[3.3]C
[4]無期限
[5]文字列に関したライブラリ関数使用禁止
↓以下自分で作ったヤツ。どこがおかしい??
#include<stdio.h>
void irekae(char *a, char *b, char *kekka)
{
while(*a != '\0'){
*kekka++ = *a;
*a++;
*kekka++ = *b;
*b++;
}
}
int main(void)
{
char a[]="12345";
char b[]="abcde";
char kekka[11];
irekae(a,b,kekka);
printf("%s",kekka);
return(0);
}
0626デフォルトの名無しさん
2006/11/15(水) 23:28:14コンパイルできました。
誠にありがとうございます。
なんとか提出期限には間に合いそうです。
残りの期間で必死に中身を理解しなければ…
たぶんムリだがorz
0627デフォルトの名無しさん
2006/11/15(水) 23:59:02こんなところに上げられたWordのファイルを誰が読むんだ?
テキストにせぃ。
0628デフォルトの名無しさん
2006/11/16(木) 00:01:26wordなのかよ
zipな時点で俺はダウンロード諦めた
0629デフォルトの名無しさん
2006/11/16(木) 00:09:59ポインタ
0630デフォルトの名無しさん
2006/11/16(木) 00:16:48@@ -7,6 +7,7 @@
*kekka++ = *b;
*b++;
}
+*kekka=0;
}
int main(void)
{
0631625
2006/11/16(木) 00:28:58m(_ _)m
0632デフォルトの名無しさん
2006/11/16(木) 01:47:28#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct field_tag {
char word[32];
int count;
struct field_tag *next;
} field;
int myfget(FILE *fp, char *s) {
int c, p = 0;
while (1)
if ((c = fgetc(fp)) == EOF) return c;
else if (!isalnum(c)) {
s[p++] = '\0';
return 1;
}
else s[p++] = (char)c;
}
int isword(char *s) {
int p = 0;
while (1) {
if (!isalnum(s[p]))
if (s[p] == '\0' && p != 0) return 1;
else return 0;
p++;
}
}
void search_and_insert(field *dest, const field *src){
field *temp;
if (dest->next == NULL) {
0633632(続き)
2006/11/16(木) 01:47:59memset(dest->next, 0, sizeof(field)); strcpy(dest->next->word, src->word); dest->next->count++;
}
else if (!strcmp(dest->next->word, src->word)) dest->next->count++;
else if (!(strcmp(dest->next->word, src->word) < 0)) {
temp = (field*)malloc(sizeof(field));
memset(temp, 0, sizeof(field)); strcpy(temp->word, src->word); temp->count++; temp->next = dest->next; dest->next = temp;
}
else search_and_insert(dest->next, src);
}
void free_all(field *ptr){
if (ptr->next != NULL) free_all(ptr->next);
free(ptr);
}
int main(int argc, char *argv[]){
field *root= (field*)malloc(sizeof(field)), *cur = root, temp;
FILE *fp = fopen(argv[1], "r");
memset(root, 0, sizeof(field)); temp.next = NULL;
while(myfget(fp, temp.word) != EOF){
if (isword(temp.word)) search_and_insert(cur, &temp);
memset(&temp, 0, sizeof(field));
}
cur = root->next;
while (cur != NULL){
printf("%s : %d\n", cur->word, cur->count);
cur = cur->next;
}
if (root != NULL) free_all(root);
return 0;
}
0634デフォルトの名無しさん
2006/11/16(木) 02:12:40リナックスはOSじゃねーだろ。
0635デフォルトの名無しさん
2006/11/16(木) 02:18:31UNIXはOSである
したがってLinuxはOSではない
こうですか わかりません
0636デフォルトの名無しさん
2006/11/16(木) 02:19:43三段論法の要件満たしてないだろそれじゃ
0637デフォルトの名無しさん
2006/11/16(木) 04:39:32x1*a + y1*b=0
x2*a + y2*b=0
のように引数にx1 x2 y1 y2をとる感じの関数をお願いします><
0638デフォルトの名無しさん
2006/11/16(木) 04:50:33付け加えてしまって本当にすいません!
0639デフォルトの名無しさん
2006/11/16(木) 04:52:02http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2941.zip
サンプルプログラムと同じ動作するように作ってみた。
なんか「動けばいいというものではなく、よい設計でよいコードでなければならない」
とか書いてあるが、どういうのがよい設計なのか正直よく分からんのですよ。
0640デフォルトの名無しさん
2006/11/16(木) 04:53:260641デフォルトの名無しさん
2006/11/16(木) 04:53:35ガウスの消去法
ガウス・ジョルダン消去法
反復法
いろいろあるね(・∀・)
0642デフォルトの名無しさん
2006/11/16(木) 05:04:26[1] 授業単元:プログラミング
[2] 問題文(含コード&リンク):2元連立方程式を解きなさい
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン: VC2005
[3.3] 言語: C++
[4] 期限: 今週まで
[5] その他の制限:>>637 >>638 です
>>641
ガウス・ジョルダン法ができればいいですけど答えがでればなんでいいです。ガウスジョルダンは頭では理解できるんですけど
プログラムにかけません><
0643デフォルトの名無しさん
2006/11/16(木) 05:07:09引数6つって答えはどうやって返すの?
構造体?
0644デフォルトの名無しさん
2006/11/16(木) 05:10:03いや、気になるならabを係数にしていただいても( ;・∀・)
答えはどうやって返しましょう?素人に一番わかりやすい形で返していただければ・・・
0645デフォルトの名無しさん
2006/11/16(木) 05:16:15.
.
.
if(fy[0] == BEST || s > N)
break;
プログラムの先頭でBESTを定義しておいて、ループの中の条件で
breakさせたいのですが、ループから抜け出せません。
printfで確認しましたが、配列fy[0]の中身は確かに5.058548でした。
おしえてください><
0646デフォルトの名無しさん
2006/11/16(木) 05:17:13>>1
0647デフォルトの名無しさん
2006/11/16(木) 05:21:51てけとーにεとればいいお
0648大学生
2006/11/16(木) 08:46:42「問題17」πの値を実数として計算し表示せよ。
「問題18」eの値を小数点以下60桁まで求めよ。
「問題19」πの値を小数点以下60桁まで求めよ。
この問題16.17.18、19のC言語プログラム(C++)でお願いします。
それと多倍長少数を利用して作ってください。
0649デフォルトの名無しさん
2006/11/16(木) 08:47:29>>1
0650デフォルトの名無しさん
2006/11/16(木) 09:36:45fabs(fy[0]-BEST)<0.000001
0651デフォルトの名無しさん
2006/11/16(木) 13:55:14問題19 :printf("3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647");
0652デフォルトの名無しさん
2006/11/16(木) 14:42:00[2] 問題文(含コード&リンク): フレーム間差分
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual Studio 2003
[3.3] 言語: C++
[4] 期限: 今週まで
[5] その他の制限: ありません。
aviファイルを取り込んで、フレーム間差分を実行できるプログラムを希望します。
0653一年生
2006/11/16(木) 14:49:10[2] 問題文:文字配列にアルファベットで適当な文字を10文字入れたとき、
入力順序と逆順で表示する。 なお、配列を用いること。
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual C++ 6.0
[3.3] 言語: C++
[4] 期限: 2006年11月17日まで
[5] その他の制限: なし
0654デフォルトの名無しさん
2006/11/16(木) 14:56:38「フレーム間差分」って何?
ファイルフォーマットにしたがって説明してみて
avi ファイルフォーマット:
http://www.usagi-goten.com/jp/AVI_structure.html
0655デフォルトの名無しさん
2006/11/16(木) 14:59:43#include <stdio.h>
#include <string.h>
int main(void){
int i;
char buf[11];
scanf("%s",buf);
for(i=strlen(buf)-1;i>=0;i--){
putchar(buf[i]);
}
}
0656デフォルトの名無しさん
2006/11/16(木) 15:00:39このスレを逆順で検索
int i;
char a[11];
char *p = a;
scanf("%s", p);
for(i=9;i>=0;i--)printf("%c",p[i]);
0657デフォルトの名無しさん
2006/11/16(木) 15:15:20卒研をこのスレに丸投げw
年収200万円コースだな
0658デフォルトの名無しさん
2006/11/16(木) 15:19:440659デフォルトの名無しさん
2006/11/16(木) 15:29:56[2] 問題文・キーボードから n (1 <= n <= 50) 人分の得点(整数)を入力する.
・得点は0点以上100点以下とし,範囲外なら再入力させる.
・全員分入力が完了したら,平均点を求め,小数点以下1桁で表示する.
・各個人について,得点,平均点との差,および判定を表示する.
・判定は,80点以上を優,80点未満70点以上を良,
70点未満60点以上を可,60点未満を不可とする.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名 gcc
[3.3] 言語: C
[4] 期限: 今週まで
[5] その他の制限: ありません。
0660デフォルトの名無しさん
2006/11/16(木) 15:34:15お前の年収はいずれ100倍にしてやる!
だから、今はガンバレ。
0661デフォルトの名無しさん
2006/11/16(木) 15:43:13問題18
#include <stdio.h>
#include <math.h>
void e(int *data) {
int i, j, *dap;
unsigned k = 1, k2 = 2, s = 0;
long x;
for (dap = data, j = 16; j--; ) *dap++ = 0;
for (i = 1; s <= 201; i++, s += j)
if (i >= k) {
k = k2; k2 <<= 1; j++;
}
*data = 1;
while (--i) {
for (x = 0, j = 16, dap = data; j--; ) {
x = x * 10000 + *dap; *dap++ = x / i; x %= i;
}
(*data)++;
}
}
int main(void) {
int i, data[16];
e(data);
printf("e = %1d.", data[0]);
for (i = 1; i <= 15; i++) printf("%04d", data[i]);
printf("\n");
}
#include <stdio.h>
#include <stdlib.h>
int main(void){int n,sum,i;double avg;int* p;char tmp[10];
do{fgets(tmp,sizeof(tmp),stdin);n=atoi(tmp);}while(n>50||n<1);
p=(int*)malloc(sizeof(int)*n);for(i=0,sum=0;i<n;i++){do{fgets(tmp,sizeof(tmp),stdin);
p[i]=atoi(tmp);}while(p[i]>100||p[i]<0);sum+=p[i];}avg=(double)sum/(double)n;
printf("平均:%.1f\n",avg);for(i=0;i<n;i++){printf("%-2i %-3i %-2.1f %s\n",i+1,p[i],
(double)p[i]-avg,(p[i]>=80)?"優":((p[i]>=70)?"良":((p[i]>=60)?"可":"不可")));}return 0;}
0663デフォルトの名無しさん
2006/11/16(木) 17:15:17単なる研究の手段として、差分画像がほしいだけなら、 avi を連番ビットマップに変換する
フリーのプログラムがあるから、それを持ってきてあとは単純にバイト列を引き算汁。
BMPヘッダを飛ばすくらいはできるだろ。
フレーム間差分を取るプログラムの研究が主目的なら、4月開始の卒研だったら
間に合わない悪寒。さっさと教授に相談に行ったほうがいい。
0664デフォルトの名無しさん
2006/11/16(木) 18:38:33[2] 例えば, "Antonio Rodorigo Nogueira" → "arieugoN ogirodoR oinotnA" のように, 引数として受け取った文字列を
逆順にした文字列に書き換える関数 void str_reverse(char s[]) を作成せよ. この関数を用いて,
キーボードから入力した文字列を逆順に表示するプログラムを作成せよ.
[3]
[3.1] winXP sp2
[3.2] cygwin
[3.3] C
[4] 2006年11月23日
[5] ポインタ無しです。多バイト文字は無視してもらって構いません。
0665デフォルトの名無しさん
2006/11/16(木) 18:43:10もういいかげんにするっすお!(ポッポー
#include <stdio.h>
#include <stdlib.h>
void str_reverse(char s[]){int i,l=strlen(s);char t;for(i=0;i<l/2;i++){t=s[i];s[i]=s[l-i-1];
s[l-i-1]=t;}}int main(void){char s[100];fgets(s,sizeof(s),stdin);s[strlen(s)-1]='\0';
str_reverse(s);puts(s);return 0;}
0667デフォルトの名無しさん
2006/11/16(木) 18:57:22[2] 特にはないが、テンプレートマッチングのプログラムを作ること。
[3] 環境
[3.1] Windows XP
[3.2] cl
[3.3] C言語
[4] 2006年11月18日
[5] 特にありません。
課題をそのまま解釈すると、アルファベット以外は逆順にしないことになる。
0669デフォルトの名無しさん
2006/11/16(木) 19:12:030670デフォルトの名無しさん
2006/11/16(木) 19:12:34こ、、コレ、、、これ戦闘力たけぇな・・・・。
s[l-i-1] こんな数学僕には思いつきません。もうぬるぽ
0671デフォルトの名無しさん
2006/11/16(木) 19:12:36「アルファベットで適当な文字を10文字入れたとき」以外の動作は未規定、と解釈すればよろし
0672デフォルトの名無しさん
2006/11/16(木) 19:13:07if(x>y>z) {max=x}
if(y>x>z){}max=
0673デフォルトの名無しさん
2006/11/16(木) 19:15:33んじゃ、その時はディスクをすっきりフォーマットするってことで
0674デフォルトの名無しさん
2006/11/16(木) 19:16:023つの整数のうち最大のものを選べってプログラムで
if(x>y>z) {max=x}
if(y>x>z){max=y}
・
・
・
って全通り書いたらyが無視されたり、最大がとんでもない数字になったりして困ってます
というわけでアルファベットのみひっくり返す版。
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void str_reverse(char s[],int l){int i;char t;for(i=0;i<l/2;i++){t=s[i];s[i]=s[l-i-1];
s[l-i-1]=t;}}void rev_no_alpha(char s[]){int b,e,f=0,l=strlen(s),i;for(i=0;i<l;i++){if
(!f&&!isalpha(s[i])){f=1;b=i;}if(f&&isalpha(s[i])){f=0;e=i;str_reverse(&s[b],e-b);}}}
int main(void){char s[100];int l;fgets(s,sizeof(s),stdin);l=strlen(s)-1;s[l]='\0';
rev_no_alpha(s);str_reverse(s,l);puts(s);return 0;}
例えばx>y>zだと、zが評価される相手は0か1しかない。
これ以上はスレ違い。
0677デフォルトの名無しさん
2006/11/16(木) 19:29:16[2] 問題文:main関数内でint型配列変数を定義し、適当な値で初期化
そのint型配列変数と要素数を受け取りすべての要素を表示する
ユーザー定義関数を作成する。
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: 2006年11月27日まで
[5] その他の制限: なし
#include "stdafx.h"
#include<stdio.h>
void print_array(int a[],size_t len){int i;for(i=0;i<len;i++){printf("%i\n",a[i]);}}
int main(void){int a[]={1,1,2,3,5,8,13,21,34,55,};print_array(a,sizeof(a)/sizeof(int));return 0;}
最初の行は要らない。
0680デフォルトの名無しさん
2006/11/16(木) 19:45:350681デフォルトの名無しさん
2006/11/16(木) 19:51:46>main関数内でint型配列変数を定義し、適当な値で初期化
ってあるからmain関数も必要なんでない?
0682デフォルトの名無しさん
2006/11/16(木) 19:54:09じゃあ3行目だけで。
0684デフォルトの名無しさん
2006/11/16(木) 20:11:040685デフォルトの名無しさん
2006/11/16(木) 20:13:090686デフォルトの名無しさん
2006/11/16(木) 20:18:30なんていえばいいの?
GNU/Linuxシステム?
0687デフォルトの名無しさん
2006/11/16(木) 20:27:000688デフォルトの名無しさん
2006/11/16(木) 20:27:040689デフォルトの名無しさん
2006/11/16(木) 20:32:120690デフォルトの名無しさん
2006/11/16(木) 21:03:470691デフォルトの名無しさん
2006/11/16(木) 21:10:16先生がここ見て宿題考えてたりしてなw
0692デフォルトの名無しさん
2006/11/16(木) 21:34:50を改造し, バブルソートの要素の交換を, 逆順で行うプログラムを作成し, x[ ]={7,1,2,3,4,5,6} という列が一度でソートできるようにしなさい.
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2956.txt
を改造し, 立方根を計算するプログラムを作成しなさい。
この二つの宿題をおながいします。。。
0693デフォルトの名無しさん
2006/11/16(木) 21:50:00立方根を求める
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2957.txt
テンプレに従った方がいいぞ
0694デフォルトの名無しさん
2006/11/16(木) 22:00:07バブルソート逆順
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2958.txt
0695デフォルトの名無しさん
2006/11/16(木) 22:36:45[2] 問題文(含コード&リンク):10個の文字列を左から右へ移動させて、いわゆる50メートル走を作成
順位、タイムも出す
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Visual C++2005
[3.3] 言語: C
[4] 期限:2006年11月17日12;00まで
[5] その他の制限:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2959.txt
私が作ったものではこんな感じで斜めに一直線ですが(これが限界)、
実際はランダムで順位が決まるようにお願いします
0696デフォルトの名無しさん
2006/11/16(木) 22:42:040697デフォルトの名無しさん
2006/11/16(木) 22:48:06えぇ?何かおかしなところありましたか?
0698デフォルトの名無しさん
2006/11/16(木) 22:56:350699デフォルトの名無しさん
2006/11/16(木) 23:03:3150メートルは単なる例えですので
char[10][50]みたいなのでOKです
dpi…解像度、ですが、デバッグの画面で出来れば良いので考えなくて良いです
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2959.txt
取り合えずこれを見て起動させてもらえばどんな感じかわかると思います
甚だ低次元の問題ですみませんがよろしくお願いします。
[1] 授業単元: 条件分岐(if文)
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2960.txt
[3] 環境
[3.1] OS:winxp
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語: C
[4] 期限: 日曜日
[5] その他の制限 (どこまで習っているか、標準ライブラリは使ってはいけない等々):
printf文、scanf文、if文をちょっと習いました。標準ライブラリは分かりません。
自分で何もせずにいきなり聞くのは失礼なので、とりあえず少し考えてみました。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2964.txt
なんとかコンパイルはできましたが、実行結果が全然だめです。
どこをどうすれば良いでしょうか…。よろしくお願いしますorz
0701デフォルトの名無しさん
2006/11/16(木) 23:23:45[2] 問題文(含コード&リンク):ソートとサーチのプログラムの計算を比較する
[3] 環境
[3.1] OS:suse Linax
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:11/20
[5] その他の制限:無し
クイックソートが正しく行われなくて困っています。サブルーチンの再起や値の交換に問題があると思うのですが…
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2965.txt
お願いします。
0702デフォルトの名無しさん
2006/11/16(木) 23:23:45scanf( "%d", &suryo );
とりあえず&をつけ忘れてるぞ
0703デフォルトの名無しさん
2006/11/16(木) 23:27:42>>702 + if を逆順に評価して else をなくせばおk
うひぃありがとうございます。こんなところでミスってたんですね…本当に顔から火が出る思いです。
ちゃんと結果も出ました。駄文を見ていただきありがとうございました!
0705STUDENT
2006/11/16(木) 23:31:16「問題19」πの値を小数点以下60桁まで求めよ。
のCプログラム(C++)を作ってください。
多倍長少数を利用してプログラムを作ってください。
0706デフォルトの名無しさん
2006/11/16(木) 23:35:13>>1読んで書き直し
0707デフォルトの名無しさん
2006/11/16(木) 23:35:30こんなんでいいの?
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2966.c
0708デフォルトの名無しさん
2006/11/16(木) 23:38:32>>1
0709デフォルトの名無しさん
2006/11/16(木) 23:38:42はい、完璧です!ありがとうございました
こんな早く出来るなんて二週間も考えていた私が阿呆のようです
0710デフォルトの名無しさん
2006/11/16(木) 23:43:08[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2967.txt
[3] 環境
[3.1] OS:WindowsXP_SP2
[3.3] 言語:C++
たぶん5-1ぐらいは自分で何とかできると思う・・・
0711デフォルトの名無しさん
2006/11/16(木) 23:46:58π=4arctan1とかマチンの公式とか連分数展開とか方法は色々あるだろ
0712デフォルトの名無しさん
2006/11/16(木) 23:55:56ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2968.txt
せっかくだから貼っておく
0713デフォルトの名無しさん
2006/11/16(木) 23:57:40不等号の向きが逆?
0714デフォルトの名無しさん
2006/11/16(木) 23:58:59左が大きい方が一般的なんだっけ?ごめんそこらへんテキトー
0715デフォルトの名無しさん
2006/11/16(木) 23:59:18> <<本日までの売上>>
> ナシ:800
> 今日の売上を入力してください.
> ナシ:100
> <<本日までの売上>>
> ナシ:1600
このプログラム、漏れには無理だ…。
0716デフォルトの名無しさん
2006/11/17(金) 00:01:280717デフォルトの名無しさん
2006/11/17(金) 00:03:19FunshokuKessan()
0718デフォルトの名無しさん
2006/11/17(金) 00:08:180719デフォルトの名無しさん
2006/11/17(金) 00:35:57http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2969.txt
クイックソートが正しく行われていなかった主な原因は、中央値を
別の変数に保存しておかなかった事。中央値の位置にある変数は
ソート中に変化するので比較には使えない。
0720デフォルトの名無しさん
2006/11/17(金) 00:38:55http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2970.txt
と思ったらごめん。デバッグ中にファイル名を入れるのが面倒なので
改変してた部分を元に戻した。>>719は消去しました。
0721デフォルトの名無しさん
2006/11/17(金) 00:45:23念レス成功? って、俺と同じ大学の人間かよ
明日の昼提出だから俺といっしょで焦ってるなw
つーわけで俺からも頼みます、応用だけでいいのでお願いします(ペコリ
0722デフォルトの名無しさん
2006/11/17(金) 00:49:56[2] 問題文(含コード&リンク): ローマ数字から算用数字への変換をC言語でつくりなさい。
例 1 = I
2 = II
3 = III
4 = IV
5 = V
http://pc8.2ch.net/test/read.cgi/tech/1149349035/361
↑
別のスレで教えていただいたのですが、プログラムを理解できません。
解説をお願いできないでしょうか??
0723デフォルトの名無しさん
2006/11/17(金) 00:49:580724デフォルトの名無しさん
2006/11/17(金) 00:52:07今むこうで解説を書いてるからちょっと待て。
0725デフォルトの名無しさん
2006/11/17(金) 00:53:57分かりました。お願いします。
0726デフォルトの名無しさん
2006/11/17(金) 01:08:350入れるだけかよ
0727デフォルトの名無しさん
2006/11/17(金) 01:11:15ゆとり教育
0728デフォルトの名無しさん
2006/11/17(金) 01:32:56[2] 問題文:
多倍長演算の手法を用いてキーボードから 20 桁までの整数 a, b を入力し、減算(a - b)をするプログラムを作成せよ。答が負の場合は、マイナス記号を表示させること。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限:11月17日4時
[5] その他の制限: charで入力後intの配列へ入れ直す。
0729こまったさん ◆LY1hBagPlw
2006/11/17(金) 01:36:28[2]問題文:
コード番号と名前から構成される構造体(name_list)のスタックマシンプログラムを作成せよ。
スタックマシンとは、LIFO (Last in First Out: 後入れ先出し)を実現する機構で、
push操作によりデータが保存され,pop操作により最も最近pushしたデータが取り出される。
ここで,pop,pushの操作を自己参照型の構造体を利用してプログラムしなさい。
簡単にまとめると最初のoperateにpopかpushを入れます。
popなら番号と名前を入れると、新しいデータが保存されます。
pushなら一番最近に入れたデータを自動で出します。
実行画面:例
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2971.txt
[3] 環境
[3.1]WindowsXP
[3.2]gcc 3.4
[3.3]C/C++/どちらでも可
[4] 期限:2006年11月18日 7:00 まで
[5] 関数popとpushを定義するプログラムで無ければならない。
そのファイルだけで実行できるプログラムで無ければならない。
期限が短すぎて僕には無理そうです…
お願いします・・・
0730デフォルトの名無しさん
2006/11/17(金) 01:42:420731デフォルトの名無しさん
2006/11/17(金) 02:06:56問1
void initialize(int account[]){
for(int i=0;i<=4;i++){
account[i]=0;
}
}
void daily_input(int account[]){
char* hinmoku[]={"りんご","みかん","イチゴ","ナシ","イチジク"};
int tmp;
for(int i=0;i<=4;i++){
printf("%s :",hinmoku[i]);
scanf("%d",&tmp);
account[i]+=tmp;
}
}
void daily_output(int account[]){
char* hinmoku[]={"りんご","みかん","イチゴ","ナシ","イチジク"};
for(int i=0;i<=4;i++){
printf("%s :%d\n",hinmoku[i],account[i]);
}
}
0732デフォルトの名無しさん
2006/11/17(金) 02:09:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2972.txt
0733デフォルトの名無しさん
2006/11/17(金) 02:10:22int main(void) {
nt i,account[3][5], input;
char* tenmei[]={"星が丘本店","塩釜口支店","上社支店"};
for (i=0;i<=2;i++){initialize(account[i]);}
printf("初期化を完了しました.\n");
while (1) {
printf("売上を入力しますか.プログラムを終了しますか.(入力:1,終了:99):");
scanf("%d", &input);
if (input == 99) {
printf("終了します\n");
break;
}
printf("本日の売上を入力してください.\n");
for (i=0;i<=2;i++){
printf("%s\n",tenmei[i]);
daily_input(account[i]);
}
printf("<<本日までの売上>>\n");
for (i=0;i<=2;i++){
printf("%s\n",tenmei[i]);
daily_output(account[i]);}
}
return 0;
}
0734デフォルトの名無しさん
2006/11/17(金) 02:46:04typedef void (*PFUNC)(int account[]) ;
int main(void) {
PFUNC syori[] = {daily_input, daily_output,initialize} ;
int i,account[3][5], input;
char* tenmei[]={"星が丘本店","塩釜口支店","上社支店"};
for (i=0;i<=2;i++){
initialize(account[i]);
}
printf("初期化を完了しました.\n");
while (1){
printf("処理を選択してください.\n1:売上入力\n2:売上表示\n3:売上初期化\n99:プログラム終了\n番号を入力してください:");
scanf("%d", &input);
if (input == 99){printf("終了します\n");break;}
else if (input>=1 &&input<=3){
for (i=0;i<=2;i++){
printf("%s\n",tenmei[i]);
syori[input-1](account[i]);
}
}
}
return 0;
}
最後だし全角でインデントしてみたお^^
0735デフォルトの名無しさん
2006/11/17(金) 07:27:10問題19。行数制限により多少汚く整形されている。
#include <stdio.h>
#include <stdlib.h>
void series(int *data, int maxItem, unsigned bunsi, unsigned bunpo, unsigned plusMinus) {
unsigned bunpo2, *item, *itemDiv, *imp, *ikp; int *dap, i, j, k; long x;
item = (unsigned *)calloc(16, sizeof(unsigned)); for (imp = item, i = 16; i--; ) *imp++ = 0;
itemDiv = (unsigned *)calloc(16, sizeof(unsigned));
*item = bunsi * bunpo * 4; bunpo2 = bunpo * bunpo;
for (j = 1; maxItem--; j += 2, plusMinus++) {
x = 0;
for (i = 16, imp = item; i--; ) {x = x * 10000 + *imp; *imp++ = x / bunpo2; x %= bunpo2;}
imp = item; ikp = itemDiv;
if (j == 1) for (i = 16; i--; ) *ikp++ = *imp++; else for (x = 0, i = 16; i--; ) {x = x * 10000 + *imp++; *ikp++ = x / j; x %= j;}
k = 0; dap = data + 16; ikp = itemDiv + 16;
if (plusMinus & 1) for (i = 16; i--; ) {*--dap += *--ikp + k; if (*dap < 10000) k = 0; else {*dap -= 10000; k = 1;} }
else for (i = 16; i--; ) {*--dap -= *--ikp + k; if (*dap >= 0) k = 0; else {*dap += 10000; k = 1;} }
}
free(itemDiv); free(item);
}
void pi(int *data) {
int i; for (i = 0; i < 16; i++) data[i] = 0;
series(data, 45, 4, 5, 1); series(data, 15, 1, 239, 0);
}
int main(void) {
int i, data[32];
pi(data);
printf("円周率π = %1d.", data[0]);
for (i = 1; i <= 15; i++) printf("%04d", data[i]);
return 0;
}
0736デフォルトの名無しさん
2006/11/17(金) 09:27:25配列の先頭から順に10進入力し、入力されたデータの個数をint型で返す関数を作れという事なのですが、EOFまでとはどういう事でしょうか?
コンソールからEOFを入力?できるという事ですか?
どうやったら入力出来るのか、またそれを検出するにはどうすれば良いのでしょうか、教えてください。
携帯からなので読みにくいかもしれませんが宜しくお願いします。
0737r ◆r/etvCKR2A
2006/11/17(金) 09:38:03windowsのコマンドプロンプトならctrl+Z
Unixっぽいshとかならctrl+D
0738r ◆r/etvCKR2A
2006/11/17(金) 09:39:37検出は、feof( stdin )が非0を返すから、それを評価すればいいよ。
0739さん
2006/11/17(金) 10:43:11[2] 問題文(含コード&リンク):
#include <iostream>
using namespace std;
class c1{ //基本クラス
int i;
public:
void seti(int n){i=n;};
int geti(){return i;};
};
class c2 : public c1 {//発生クラス
int j;
public:
void setj(int n) {j = n;};
void
disp(){cout<<geti()<<","<<j<<"\n";};
};
int main()
{
c2 ob;
ob.seti(10); //基本クラスの関数
ob.setj(4); //発生クラスの関数
ob.disp();
return 0;
}
基本クラスc1のメンバ関数iは発生クラスc2のメンバ関数disp()内と
関数main()内で、それぞれアクセスできるか。
基本クラスc1のメンバ関数iをprotectedにしたらどうなるか?
基本クラスc1のメンバ変数iはpublicで、基本クラスc1をprivate指定にしたらどうなるか?
0740さん
2006/11/17(金) 10:44:02[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VC++ 6.0
[3.3] 言語: C++
[4] 期限:2006 年11月17日13:00まで
改行が多すぎてエラーになったので分けました、すいませんがよろしくお願いします。
0741デフォルトの名無しさん
2006/11/17(金) 10:49:14自分で試してみれば?としか…
初めて見たな。
0743デフォルトの名無しさん
2006/11/17(金) 11:15:42つoccured class
「occurred class」なんて用語を使う宗派自体見たこと無いw
0745さん
2006/11/17(金) 11:20:110747デフォルトの名無しさん
2006/11/17(金) 11:34:34http://ex17.2ch.net/test/read.cgi/news4vip/1163671379/
0748デフォルトの名無しさん
2006/11/17(金) 12:11:47発生クラス【occurred class】
あるクラスを基にして別のクラスをつくることを「継承」という。
ランタイムの自由な継承によって不本意に発生した、
父親クラスが判然としないクラスのことを発生クラスという。
http://ja.wikipedia.org/wiki/%E7%B6%99%E6%89%BF
0749デフォルトの名無しさん
2006/11/17(金) 12:28:38父親が判然としないのはbastard classじゃないのか?
0751デフォルトの名無しさん
2006/11/17(金) 13:28:11[2] 問題文(含コード&リンク):
[3] 環境
2分木を「深さ優先探索」する。以下のプログラムを完成させなさい。
関数dfs( )で、訪問した頂点の値を表示する。
-------------------ここから--------------------
#include <stdio.h>
typedef struct {
int key;
int left;
int right;
} BT;
int main( void )
{
BT a[ 7 ] = {
{ 10, 1 , 2 },
{ 20, 3 , 4 },
{ 30, 5 , 6 },
{ 40, -1 , -1 },
{ 50, -1 , -1 },
{ 60, -1 , -1 },
{ 70, -1 , -1 }
};
dfs(a, 0);
}
int dfs(
printf("
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:11月20日
[5] その他の制限:特になし
dfsの仕様がわからんのでやりようがない。
引数と戻り値の意味くらい書け。
0753デフォルトの名無しさん
2006/11/17(金) 15:03:20int dfs(BT a[], int index){
if(index<0)
return 0;
printf("%d\n", a[index].key);
dfs(a, a[index].left);
dfs(a, a[index].right);
return 1;
}
0754デフォルトの名無しさん
2006/11/17(金) 19:11:37[2] 問題文(含コード&リンク):
引数に与えられたファイルの各行が始まる位置を配列に保存し、
ファイル名以降に指定された行番号の行を出力するプログラムを
作成しなさい。最初にファイルの最初から最後までを読み、各行の開始
する位置を記録しなさい。その後、lseekを使って指定された行を
出力するようにしなさい。ファイルの最大行数は10000行とします。
例
% a.out abc.txt 8 13 5 3
abc.txtの8行目、13行目、5行目、3行目の順番に出力します。
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限: 2006年11月18日23時まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
ポインタ、構造体などは習いました。
0755デフォルトの名無しさん
2006/11/17(金) 19:15:35問題文の通りに作ればいいんじゃね?
0756 ◆l34PBoNoqE
2006/11/17(金) 20:18:57[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2986.c
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2987.txt
上の点数の平均値を表示するプログラムに、「最小値を変数xmin、最大値をxmaxにそれぞれ求めて、
表示するように拡張しなさい」という問題です。
[3] 環境
[3.1] OS: WINDOWS
[3.2] コンパイラ名とバージョン: LSI C-86 v3.30c
[3.3] 言語: C
[4] 期限: 本日夜12時まで
[5] その他の制限:
反復処理と条件判断とを組み合わせて表現する。
最小値の場合はx[0]を仮の最小値xminに代入し、残りのデータと順番に比較してよりよい最小値が見つかったらxminを更新していく。
最大値も同様。
という問題です。
よろしくお願いします。
0757デフォルトの名無しさん
2006/11/17(金) 20:34:53float xmax, xmin;
xmax = xmin = x[0];
if(x[i]<xmin) xmin = x[i];
if(x[i]>xmax) xmax = x[i];
printf("最小値:%10.2f\n最大値:%10.2f", xmin, xmax);
これをそれぞれ適切な場所に入れる。
0758デフォルトの名無しさん
2006/11/17(金) 20:58:45プログラミング言語
[2] 問題文(含コード&リンク):
A[0]=1,A[1]=2,A[2]=3,A[3]=4,・・・のように配列A[i]をA[50]=51まで代入し、
これらの合計をA[0],A[0]+A[1],A[0]+A[1]+A[2]・・・となるように順に求めていくプログラムを作成せよ。
このプログラム中では、合計が400を超えたときのiと合計をprintfで表示するようにせよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々)
WindowsXP HomeEdition
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
Visual Stadio2005
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
Cでお願いします。
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
2006/11/19日まで
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
For文、IF文をかじったところまで習っています。
0759デフォルトの名無しさん
2006/11/17(金) 20:59:43[2] 問題文
確率変数Yが区間[0,1] の一様乱数 X と関数関係 Y = sinh(X)= (e^x - e^-x )/2 にある.
サンプル数?
10000
シード?
128478
と入力すると, p(y) に従う y を生成する.
これを10000回生成し, 平均, 分散, ymin とymaxの間を80のビンに分割して
ヒストグラムを出力するプログラムを作る.
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C
[4] 期限: 2006年11月21日09:00まで
[5] その他
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2988.txt
を利用して作ってください
0760デフォルトの名無しさん
2006/11/17(金) 22:07:19http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2989.txt
出力結果が正しいか確かめてみてくれ。
0761デフォルトの名無しさん
2006/11/17(金) 22:15:04#include <stdio.h>
int main(void)
{
int A[51]; /* A[0]からA[50]までなので51個 */
int i;
/* 配列に初期値をセット */
for(i = 0; i <= 50; i++)
{
A[i] = i;
}
/* 合計を計算 */
for(i = 1; i <= 50; i++)
{
A[i] = A[i - 1] + A[i];
if(A[i] > 400)
{
printf( "合計が400を超えました。\n" );
printf( "合計 = %d, i = %d\n" , A[i], i );
return 0;
}
}
return 0;
}
0762 ◆l34PBoNoqE
2006/11/17(金) 22:21:10ありがとうございました!
0763デフォルトの名無しさん
2006/11/17(金) 23:04:57http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2990.txt
callocを使ってよいかどうか分からなかったため、注意書き参照
0764デフォルトの名無しさん
2006/11/18(土) 00:07:21[1] プログラミング
[2] 与えられたデータ列の自己相関係数を計算区間100、時間間隔t=0〜100で求める
データはttp://www.uploda.org/uporg583007.dat
[3] 環境
[3.1] OS:WindowsXP
他は良くわかりません
[4] すでに過ぎています……この土日中で……
[5] その他の制限: 当然できるよな?見たいなノリで出題されたので制限などはなさそうです
以下参考例です。???を埋めろといわれました
それ以外にも加える箇所があるかもしれないとのことです
// MRa.c データファイルを読み込み 分散,相関を求める
//データファイル名,ラグはコマンドライン引数から取得
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define OFST 0 //計算開始位置
#define N 24 //計算区間
int main(int argc, char *argv[]) //引数の数,ポインタをargc,argv[]に
{
char *fname ="defoult datafile name";
char fname1[20]; //ファイル名の格納場所 20文字分用意
char dummy[255];
FILE *fp;
int i,t,te=0;
float data;
float x[2048];
double mx,my,sx,sy,sxy,sxx,syy,cxx,cxy,cyy,rxy;
0765デフォルトの名無しさん
2006/11/18(土) 00:08:04if (argc==3) {fname = argv[1]; //引数の数が2つの時のみ読み込み
te = atoi(argv[2]);} //最大ラグ数 te を読み込み
strcpy(fname1,fname); //文字列のコピー
strcat(fname1,".txt"); //文字列の追加 拡張子.txtをつける
//データ読み込み
/*file open & read 書式付き*/
if (NULL==(fp = fopen(fname1,"rt")))
{ puts("FILE is not exist!!");
exit(1);
}
//ファイル終端まで配列に読み込む
fscanf(fp,"%s", dummy);
fscanf(fp,"%s", dummy);
i=0;
while(!feof(fp)&&i<2024){
fscanf(fp,"%f", &data);
x[i]=data;
// printf("\n %6d,%8.3f",i,x[i]);
i=i+1; //データ数カウント
}
for(t=0;t<=te;t++){ //ラグ te まで繰り返し
sx = 0.0;
sy = 0.0;
sxy= 0.0;
sxx= 0.0;
syy= 0.0;
0766デフォルトの名無しさん
2006/11/18(土) 00:09:13for(i=OFST;i<N+OFST;i=i+1){
//printf("\n %5d %8.3f %8.3f",i,x[i],x[i+t]);
sx = sx+x[i] ;
sy = sy+x[i+t] ;
sxy= sxy+x[i]*x[i+t];
sxx= sxx+x[i]*x[i];
syy= syy+x[i+t]*x[i+t];
}
mx= sx / N ;
my= sy / N ;
cxx=????????????????????;
cyy=????????????????????;
cxy=????????????????????;
rxy=????????????????????;
//printf("\n N=%4d t=%4d",N,t);
//printf("\n 平均 =%8.3f, %8.3f",mx,my);
//printf("\n 自己共分散 =%10.5f",cxx);
//printf("\n 自己共分散 =%10.5f",cyy);
//printf("\n 自己共分散 =%10.5f",cxy);
//printf("\n 自己相関 ρ=%10.5f",rxy);
printf("\n %5d %10.5f",t,rxy);}
return(0);}
0767デフォルトの名無しさん
2006/11/18(土) 00:40:02[2] 問題文:初項が1、交差が(-1/1000000)の数列がある。この数列の初項から最初に値が0になる項までの和を求めるプログラムを作成せよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:2006年11月21日まで
[5] その他の制限:百万回の和の繰り返しでプログラムする。
↓自分で作ってみたのですが、エラーが出てしまいます。
どこが間違いかを指摘してもらえませんか?
#include<stdio.h>
int main()
{
double a[1000000],s=0,a1=1,d=-0.000001;
int n=1;
while(a[n]==0){
a[n] = a1 - ((n-1)*d);
s = s + a[n];
n++;
}
printf("ans : %lf",s);
return 0;
}
0768デフォルトの名無しさん
2006/11/18(土) 00:41:390769デフォルトの名無しさん
2006/11/18(土) 00:42:35a[1000000]とかいらねーだろ。
これ普通だと8Mバイトほどになるよな。スタックはデフォルトで1Mほどしか
取られていない(Windows)
0770デフォルトの名無しさん
2006/11/18(土) 00:48:21すみません↓エラーはこれです。
10 [main] a 3552 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)
Segmentation fault (core dumped)
>>769
返答ありがとうございます。
どのように変更すればよいですか?
0771デフォルトの名無しさん
2006/11/18(土) 00:49:38しかも事前に配列の中身用意してるわけでもなし
もったいないもったいない
0772デフォルトの名無しさん
2006/11/18(土) 00:51:37自分で作ったのなんて書かかないほうがよかったな
0773デフォルトの名無しさん
2006/11/18(土) 00:55:10返答ありがとうございます。
配列はいらないんですか・・・
ちょうど配列を習ったばかりだったので使わなければいけないものだと思っていました。
>>772
whileの条件はだめですか?問題に忠実に作ったつもりでしたがorz
ご指摘ありがとうございました。
0774デフォルトの名無しさん
2006/11/18(土) 01:02:14このプログラムがやったことは、
毎日20人の客がくる定食屋において
20×365枚の皿を用意するようなもんだ
100万回繰り返せっていってるんだから素直に百万回繰り返しなさい
0775デフォルトの名無しさん
2006/11/18(土) 01:06:130.1単位の小数は2進数の浮動小数点では正しく表せないので注意
#include <stdio.h>
#include <math.h>
#define EPS 1e-7
int main(void)
{
double s = 1.0, a1 = 1.0, d = -1e-6;
while (fabs(a1) > EPS) {
a1 += d;
s += a1;
}
printf("ans : %f\n", s);
return 0;
}
0776デフォルトの名無しさん
2006/11/18(土) 01:06:31はい・・・素直になります・・・
とてもわかりやすくありがとう!
0777デフォルトの名無しさん
2006/11/18(土) 01:11:44誤差が生じてくるということでしょうか・・・。
ソースコードまで載せてくれてありがとう。
0778デフォルトの名無しさん
2006/11/18(土) 01:13:0710進の小数でも使わないと必ず誤差が出る。
それか64bit整数で100万倍で計算しておいて最後に100万で割るとか。
0779デフォルトの名無しさん
2006/11/18(土) 01:19:51なるほどなー。すごく勉強になります!
0.1単位の小数には注意すると。フムフム
ほんとありがとう!
0780デフォルトの名無しさん
2006/11/18(土) 01:20:01多分これは誤差が出るよね?おかしいよね?
っていうことを確認する課題だと思う
こういう問題に対して誤差が出ないような答えを出すと嫌がられるので
きっちり誤差を出すようにするのが処世術だぜ
0781デフォルトの名無しさん
2006/11/18(土) 01:23:22と、それらの和だけ。
0782デフォルトの名無しさん
2006/11/18(土) 01:59:06[2] 問題文(含コード&リンク):上底、下底、高さを入力して、台形の面積を逐次計算し
表示せよ。ただし入力データのいずれかが0のとき終了するものとする。
また、入力したデータの中で、面積が最大のものの面積、上底、下底、高さを求めて表示せよ。
[3] 環境
[3.1] OS:Windows
[3.2] すみません。よくわからなかったです
[3.3] C++/
[4] 今度の火曜日
[5] 特に無し
#include<stdio.h>
void main()
{
float a,b,h,max=0,amax,bmax,hmax;
double s;
amax=0;
bmax=0;
hmax=0;
printf("上底,下底,高さを入力してください。\n");
scanf("%f,%f,%f",&a,&b,&h);
while(a!=0&&b!=0&&h!=0){
s=(a+b)*h*0.5;
printf("s=%lf\n",s);
if(s>max)max=s;
if(s>max){amax=a;
bmax=b;
hmax=h;
}
0783デフォルトの名無しさん
2006/11/18(土) 02:01:16}
printf("s=%lf a=%f b=%f h=%f\n",max,amax,bmax,hmax);
}
とりあえずここまで作ってみて、計算して面積の最大は表示できるんですが、
面積最大のときの各辺の長さの表示がわかりません。
よろしくお願いします。
0784デフォルトの名無しさん
2006/11/18(土) 02:03:30if(s>max)max=s;
if(s>max){amax=a;
↓
if(s>max){max=s;
amax=a;
0785デフォルトの名無しさん
2006/11/18(土) 02:08:340786デフォルトの名無しさん
2006/11/18(土) 02:11:34もっかいやって見たら出来ました。なんかよく分からないけど、
助かりました。ありがとうございます。
0787デフォルトの名無しさん
2006/11/18(土) 03:24:09[2] 下のように初期化した文字列 sentence と, キーボードから入力した文字列 str に対し, sentence が str で始まっているかどうか (str が sentence の先頭から一致するかどうか) を判定して表示するプログラムを作成せよ. sentence の方が str より長いと仮定してよい.
char s[] = "This is a pen. That is an apple. ";
次を確認せよ.
o This → 始まっている
o That → 始まっていない
o Th → 始まっている
o Thise → 始まっていない
[3]
[3.1] winXP sp2
[3.2] cygwin
[3.3] C
[4] 2006年11月23日
[5] 文字列を比較する関数を使ってください。
参考にしなくてはいけないプログラムがあるので、
それを次のレスに書きます。似たような感じでお願いします。
0788787
2006/11/18(土) 03:27:17{
int len;
char line[100];
printf("入力された文字列の長さを数えます。\n");
printf("終了するときはquitと入力してください。\n");
for(;;){
printf(">>>");
gets(line);
if(str_comp(line,"quit")==0){
break;}
len=str_length(line);
printf("%sの長さは%dです。\n",line,len);
}
printf("終了します\n");
return 0;
}
int str_comp(char str1[],char str2[]){
int i;
for(i=0;str1[i]==str2[i];i++){
if(str1[i]=='\0'){
return 0;}
}
return str1[i] - str2[i];
}
int str_length(char s[]){
int i;
for(i=0;s[i]!='\0';i++)
;
return i;
}
これを参考にです、よろしくお願いします。
[2] 問題文(含コード&リンク): 任意の金額をある利率(複利、日率)で運用した場合の、
目標金額をに達する日数を求めよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々) WindowsXP SP2
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) VC++ 2005
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限:今週いっぱい
[5] その他の制限: 基礎程度です。取りあえずwhileで書きましたが、
どこが間違っているのかさっぱりです・・・orz
出来ればwhileだけで作ったのと、forだけで作ったものの2つのタイプを
お願いしたいです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2992.txt
0790デフォルトの名無しさん
2006/11/18(土) 03:50:21少数の変換指定子は d ではなく f
a, b, c を引数にとっている4箇所の %d を %f に書き直せばOK
0791デフォルトの名無しさん
2006/11/18(土) 09:31:30[2] 問題文(含コード&リンク):
文字のリストを操作するプログラムを作成せよ。
このプログラムには以下の3つの機能を持たせること。
1・・・リストにアルファベット順に文字を挿入する(関数 insert)
2・・・リストからある文字を削除する(関数 delete)
3・・・プログラムを終了する
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2993.txt
自分なりにやったものの関数insert, delete の部分が分かりませんでした。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006/11/19 PM01:00
[5] その他の制限: 上記にあるプログラムを使ってお願いします。
0792デフォルトの名無しさん
2006/11/18(土) 10:49:020793デフォルトの名無しさん
2006/11/18(土) 11:02:35卒業ですか・・・
出来ました!こんな単純なことを何時間も悩んでたなんて
お恥ずかしいです・・・orz
本当に有難う御座いました!
0795デフォルトの名無しさん
2006/11/18(土) 11:51:070796デフォルトの名無しさん
2006/11/18(土) 12:52:52int func787(const char *sentence, const char *str)
{
int i, check_length;
check_length=str_length(str);
for(i=0;i<check_length;i++)
{
if(sentence[i]!=str[i])
{
return 0;
}
}
return 1;
}
0797デフォルトの名無しさん
2006/11/18(土) 16:31:100798デフォルトの名無しさん
2006/11/18(土) 16:38:12return 0;はint型の0が返る。
reutnr 1;はint型の1が返る。
0799デフォルトの名無しさん
2006/11/18(土) 16:42:250800デフォルトの名無しさん
2006/11/18(土) 16:49:34なるほど!よくわかったよ、ありがとう。
0801デフォルトの名無しさん
2006/11/18(土) 16:58:430802デフォルトの名無しさん
2006/11/18(土) 18:38:54[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2994.txt
英文が書いてあるファイルdat.txtから単語を抽出し、その単語をabc順に並び替えるプログラム、
英文の空白や"."や","は表示しない、大文字は小文字にする。また、抽出した単語を並び替えるために
コマンドプロンプトで使うsortのコマンドをプログラム中に使う。
dat.txtは次のものとする。
This is a pen.
I am a student.
It is impossible to solve this problem.
When she relaxes, she slips back into the local accent.
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:lcc
[3.3] 言語:C
[4] 期限:11月19日まで
[5] その他の制限:fclose,fopenを使い、sortのコマンドを使う。
>>344 の問題は解くことができました。ありがとうございます。
上の問題ですが文字列をどうやって並びかえるのかが分かりません。
あと、配列を使うとしてもどう格納するべきかが分かりません。
0803692
2006/11/18(土) 18:50:59すみません、>>1をしっかり見ていませんでした。
[1] 授業単元:コンピュータ入門
[2] 問題文(含コード&リンク): ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2955.txt を改造し, バブルソートの要素の交換を, 逆順で行うプログラムを作成し, x[ ]={7,1,2,3,4,5,6} という列が一度でソートできるようにしなさい.
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C言語
[4] 期限:無期限
回答くださったプログラムをコンパイルしようとしたのですが、バブルソートの方がコンパイルできませんでした。
<stdio.h>を加えてもできず、自分にはわかりません。
よろしくお願いします。
0804デフォルトの名無しさん
2006/11/18(土) 18:56:550805デフォルトの名無しさん
2006/11/18(土) 18:58:550806デフォルトの名無しさん
2006/11/18(土) 19:03:18テンプレに従うかどうかは質問者の自由。
適切な書き方じゃないと思ったらスルーしようぜ。
>気に入らない質問やその他や発言はスルーの方向で。
0807692
2006/11/18(土) 19:20:16回答くださったプログラムをそのままコンパイルしたところ、
エラー E2046 kadai24.1.1.c 4: include 指令のファイル名の書式が正しくない
エラー E2378 kadai24.1.1.c 13: For文に ; がない(関数 main )
警告 W8004 kadai24.1.1.c 15: 'i' に代入した値は使われていない(関数 main )
エラー E2377 kadai24.1.1.c 21: While文に ) がない(関数 bubblesort )
エラー E2378 kadai24.1.1.c 22: For文に ; がない(関数 bubblesort )
警告 W8004 kadai24.1.1.c 26: 'j' に代入した値は使われていない(関数 bubblesort )
警告 W8004 kadai24.1.1.c 26: 'i' に代入した値は使われていない(関数 bubblesort )
警告 W8057 kadai24.1.1.c 26: パラメータ 'a' は一度も使用されない(関数 bubblesort )
警告 W8057 kadai24.1.1.c 26: パラメータ 'n' は一度も使用されない(関数 bubblesort )
エラー E2303 kadai24.1.1.c 27: 型名が必要
エラー E2451 kadai24.1.1.c 27: 未定義のシンボル end
エラー E2040 kadai24.1.1.c 28: 宣言が正しく終了していない
エラー E2141 kadai24.1.1.c 28: 宣言の構文エラー
エラー E2293 kadai24.1.1.c 29: ) が必要
エラー E2190 kadai24.1.1.c 30: 不要な }
エラー E2190 kadai24.1.1.c 31: 不要な }
*** 11 errors in Compile ***
とでました。
よろしければ回答お願いします。
0808デフォルトの名無しさん
2006/11/18(土) 19:28:23コンパイラの吐いたエラーメッセージを読んでるか?
0809デフォルトの名無しさん
2006/11/18(土) 19:37:430810デフォルトの名無しさん
2006/11/18(土) 19:39:39俺のコンパイラでは694はコンパイル通ったので
きっと692は俺と別の位相で生きているのだろう
0811デフォルトの名無しさん
2006/11/18(土) 19:40:12読んで色々試しているのですがなかなかコンパイルが成功しません。
;や<stdio.h>が足りないだけならわかるのですが、()があるのにないというメッセージがきたり、途中の構文自体が間違っているみたいな場所があって、自分にはわかりませんでした…
0812デフォルトの名無しさん
2006/11/18(土) 19:42:48C++としてコンパイルしようとしてるんじゃないの?
0813692
2006/11/18(土) 20:00:49なんというか申し訳ないですorz
0814デフォルトの名無しさん
2006/11/18(土) 20:22:230815デフォルトの名無しさん
2006/11/18(土) 21:15:400816デフォルトの名無しさん
2006/11/18(土) 22:54:100817デフォルトの名無しさん
2006/11/19(日) 00:11:02[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2999.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VisualStudio2003
[3.3] 言語: C
[4] 期限: 11月20日
[5] その他の制限: 考えたんですけど、よくわかりませんでした。
どなたかご教授ください
0818デフォルトの名無しさん
2006/11/19(日) 00:15:15その問題のリクエストをするのは君で三人目なんだ
0819デフォルトの名無しさん
2006/11/19(日) 00:30:370820817
2006/11/19(日) 00:32:27だめなら他行きますから
0821デフォルトの名無しさん
2006/11/19(日) 00:36:12うっせハゲ
うっせハゲ
0822デフォルトの名無しさん
2006/11/19(日) 00:37:08このスレの回答者は誰かに統率されているわけではないので、
誰も答えが出るかどうか分からない。
0823818
2006/11/19(日) 00:39:130824デフォルトの名無しさん
2006/11/19(日) 00:51:53>>731
0825デフォルトの名無しさん
2006/11/19(日) 01:05:47それに答えられない人間が少なくとも3人もいて
そのうちの一人は818を読んでも既に解答済みであるという
可能性に思い当たらないレベルの池沼
なんという底辺大学
0826デフォルトの名無しさん
2006/11/19(日) 01:26:460827デフォルトの名無しさん
2006/11/19(日) 01:35:040828デフォルトの名無しさん
2006/11/19(日) 01:45:38>>817
一週間前にも宿題丸投げしておいてその態度は無いだろ
0829デフォルトの名無しさん
2006/11/19(日) 01:53:56そんな問題に回答できないおまえは・・・
0830デフォルトの名無しさん
2006/11/19(日) 01:55:170831デフォルトの名無しさん
2006/11/19(日) 01:59:03ワロタ
これは来週も来るな
0832デフォルトの名無しさん
2006/11/19(日) 02:04:21自分のC/C++の実力がどのていどあるかを知れることできませんかね?
中学、高校のときは全国模試等で自分が全国で大凡どのあたりにいるか
判断できたんですど・・・
0833デフォルトの名無しさん
2006/11/19(日) 02:20:37ソフトウェア開発技術者試験を受けてこい
0834デフォルトの名無しさん
2006/11/19(日) 02:34:31ソフ開はC/C++の問題は出ないでしょ。
基本情報もC(しかもすごく簡単な)だけだから資格でC/C++の習熟度計るのは難しいと思うよ。
0835デフォルトの名無しさん
2006/11/19(日) 02:44:13そういったことを気にしても仕方あるまい?
0836デフォルトの名無しさん
2006/11/19(日) 03:18:38全国1位ならたいしたものだと思いますけど・・・
あなたは、なにかの分野で全国TOP1%未満に入ったことあるのですか?
0837デフォルトの名無しさん
2006/11/19(日) 03:21:51多分たいていの人が何かのTop1になってる
0838デフォルトの名無しさん
2006/11/19(日) 03:28:10大体のことなら1%に入れる自信がある
だけど60億の1%って6000万だよね
0839デフォルトの名無しさん
2006/11/19(日) 03:29:12学校では人と競争して、どれだけ多くできるか、ミスに関しては余り深く考えない。
社会では、95%は失敗と一緒。
如何に確実なモノとしてできるか。
例えば、自分のプログラムが人命に関わる部分に使われるとか考えてみればいい、充分に練り上げてテストしないと怖くて出せないだろう。
0840デフォルトの名無しさん
2006/11/19(日) 03:29:42「topから526438番目に近い」という項目でtopになったり
なんでもありだからな
0841デフォルトの名無しさん
2006/11/19(日) 03:30:26全国TOP1%って言ってるのに60億の1%とは意味不明
こんな人が
大体のことなら1%に入れる自信がある
とはw
0842デフォルトの名無しさん
2006/11/19(日) 03:34:19ぐぐれもしない人間は全国模試の受験資格はないらしいよ
0843デフォルトの名無しさん
2006/11/19(日) 03:34:530844デフォルトの名無しさん
2006/11/19(日) 03:35:28よほど、悔しかったのかなw
0845デフォルトの名無しさん
2006/11/19(日) 03:39:24全国=全ての国
全日本ならまだしも、あんたばかぁ?
0846デフォルトの名無しさん
2006/11/19(日) 03:39:50勝手に盗むな。
おなかが減ったので日清カップヌードルカレーを食べました。
(゚д゚)ウマ-
0847デフォルトの名無しさん
2006/11/19(日) 03:42:33漏れの手作りの餃子スープと交換しないか?
0848デフォルトの名無しさん
2006/11/19(日) 03:47:19全国=全ての国 ・・・
あの〜もう止めたら?w
学の無さを露呈する結果になってますよ
0849デフォルトの名無しさん
2006/11/19(日) 04:04:17ダメー
フツーにだめー
0850デフォルトの名無しさん
2006/11/19(日) 04:10:45一般的な使い方ではないが間違いではないようだな
ttp://dic.yahoo.co.jp/dsearch?enc=UTF-8&p=%E5%85%A8%E5%9B%BD&dtype=0&dname=0na&stype=0&pagenum=1&index=10538800
それよりも全国TOP1%って使い方の方がおかしいと思うぞ
C学ぶより日本語学んどけ
0851デフォルトの名無しさん
2006/11/19(日) 05:05:28全国0.01位未満ってことは
1位からドベまで全てが対象だ
0852デフォルトの名無しさん
2006/11/19(日) 08:31:48君は悪く無い。悪いのはゆとりシステムを生み出した大人達だ。
0853デフォルトの名無しさん
2006/11/19(日) 09:12:48[1] 授業単元: プログラミング
[2] 問題文:10個の数値を配列に入力し、その数値を昇順(小さい→大きい)に並べ替えて
表示するプログラムを作成せよ。
ソートは以下のアルゴリズムに従い実現する。
・配列を1回走査することで最小の値が配列の最初の要素に格納される
・2回目の配列走査は2番目の配列要素から大小比較を行い、走査後には
2番目に小さい値が配列の2番目の要素に格納される
・以下同様に、N回目の走査ではN番目の配列要素から比較を行う
[3] 環境
[3.1] OS:windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:
[5] その他の制限:特になし
0854デフォルトの名無しさん
2006/11/19(日) 09:49:22インサートソート
0855デフォルトの名無しさん
2006/11/19(日) 10:55:53もはや日本人ではn
0856デフォルトの名無しさん
2006/11/19(日) 11:58:09C++になって変わっちゃってたんだね。
ベトナム戦争反対!
0857デフォルトの名無しさん
2006/11/19(日) 12:01:19まあ具体的には下げろってことだ。
0858デフォルトの名無しさん
2006/11/19(日) 12:22:47void swap(int *a, int *b) {
int t = *a;
*a = *b;
*b = t;
}
int *min_element(int *array, int size) {
int minv = array[0];
int *minp = array;
int i;
for(i = 1; i < size; i++)
if(array[i] < minv) {
minv = array[i];
minp = array + i;
}
return minp;
}
void sort(int *array, int size) {
int i;
for(i = 0; i < size; i++)
swap(array + i, min_element(array + i, size - i));
}
int main(void) {
int i;
int a[10];
for(i = 0; i < 10; i++)
scanf("%d", a + i);
sort(a, 10);
for(i = 0; i < 10; i++)
printf("%d\n", a[i]);
return 0;
}
0859デフォルトの名無しさん
2006/11/19(日) 12:38:400860デフォルトの名無しさん
2006/11/19(日) 12:43:420861デフォルトの名無しさん
2006/11/19(日) 12:48:43未初期化の変数を放置しておく方がキモい。
0862デフォルトの名無しさん
2006/11/19(日) 12:51:090863デフォルトの名無しさん
2006/11/19(日) 13:31:230864デフォルトの名無しさん
2006/11/19(日) 14:13:44NULL
0865デフォルトの名無しさん
2006/11/19(日) 14:16:25晒し
0866デフォルトの名無しさん
2006/11/19(日) 14:24:14初期化と代入を混同しているな。
0867デフォルトの名無しさん
2006/11/19(日) 15:28:04いまどき、コンソールで動くプログラムを使う人なんて
ほんの一握りのヲタクだけでしょ?
0868デフォルトの名無しさん
2006/11/19(日) 15:33:35[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3002.txt
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:Borland C++ Compiler 5.5
[3.3] 言語:C言語
[4] 期限:11月25日
ソケットプログラミングです。
少し面倒かもしれませんが、宜しくお願い致します。
0869デフォルトの名無しさん
2006/11/19(日) 15:43:470870デフォルトの名無しさん
2006/11/19(日) 17:00:03どこを見たらそう見えるんだ?
0871デフォルトの名無しさん
2006/11/19(日) 18:39:20もう駄目かな
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3003.txt
0873理大中退者
2006/11/19(日) 20:58:21こんなんで単位取っていいと思ってるのか?課題の意味分かってんの?糞野郎ども
在学中はお世話になりました。ありがとう
0874デフォルトの名無しさん
2006/11/19(日) 21:11:18このスレの問題解けるようになった?
0875デフォルトの名無しさん
2006/11/19(日) 21:17:53卒業乙。次からは回答側な
0876デフォルトの名無しさん
2006/11/19(日) 21:23:06中退って書いてあるけど。
0877デフォルトの名無しさん
2006/11/19(日) 21:29:22質問者から卒業という意味
・・・まあ、過ちは認めないとな。正直、見逃した。
0878デフォルトの名無しさん
2006/11/19(日) 21:43:07質問
中退した後はどうしたのか詳しく教えてほしい
0879理大中退者
2006/11/19(日) 21:52:31この国で最後に笑うのはやっぱり文系だよ。
0880デフォルトの名無しさん
2006/11/19(日) 22:13:29文理の区別なんて日本位のもの。外国では通用しない。
まあがんばれ。人には向き不向きがある。たとえ簡単なCプログラムさえ書けないとしても、
代わりに一人でも多くの無罪の人を救う力があるのなら、それは価値のあることだと思う。
0881理大中退者
2006/11/19(日) 22:21:31解けるんだが先に回答する人のを見るとまだまだ全然。勉強になるw
>>875
以外に優しい・・・
>>876
ごめんなさい。中退しました
>>877
俺の出した問題を解いてくれて有難う御座いました。今でも回答者の頭のキレの速さには尊敬しちまうw
>>878
就職活動をしPGかSE希望で相当周りました。SE採用(嘘臭い)なのに深夜までPCカチャカチャさせられる('A`)
>>879
文系に未来はあるのだろうか???
>>880
>>879は俺じゃないw
これからもおまいらの知識を搾り取って成り上がる。あの時は(-�u- )っ[お世話になりました。ノシ]
0882デフォルトの名無しさん
2006/11/19(日) 22:25:05>>859が 「どう見ても精子です。本当にありがとうございました」に見えた
0883デフォルトの名無しさん
2006/11/19(日) 22:30:05向学心あり。採用!
0884デフォルトの名無しさん
2006/11/19(日) 22:50:01このまま人生も中退すれば?
0885デフォルトの名無しさん
2006/11/19(日) 22:54:26YOU もしかして NEET なのかい ???
0886デフォルトの名無しさん
2006/11/19(日) 22:55:40ちがうやい!ただのMEATだい!
0887デフォルトの名無しさん
2006/11/20(月) 02:16:20[2] 問題文(含コード&リンク):
1.2つの1次元配列の内積を計算するプログラムを作成せよ。
2.2つの2次元配列の積を計算するプログラムを作成せよ。
3.上のプログラムを関数を用いて実現せよ。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語:C言語
[4] 期限:
[5] その他の制限:
0888デフォルトの名無しさん
2006/11/20(月) 03:01:09配列の積?
0889デフォルトの名無しさん
2006/11/20(月) 03:26:00外積について
3:5=6:10
0890デフォルトの名無しさん
2006/11/20(月) 03:37:02簡単じゃないか。
0891デフォルトの名無しさん
2006/11/20(月) 10:38:34C言語だけで可能でしょうか?(C++は使用不可です。)
0892デフォルトの名無しさん
2006/11/20(月) 10:40:13可能か不可能かで言えば「可能」
0893デフォルトの名無しさん
2006/11/20(月) 12:08:06>IE程度
それはもちろん脆弱性も含めて?
0894デフォルトの名無しさん
2006/11/20(月) 13:09:57脆弱性はIEより低くてもいいです。
とりあえずページが表示できれば・・・
0895デフォルトの名無しさん
2006/11/20(月) 13:16:51サブ関数minmaxを作成せよ。ただし、入力するデータはdouble型の配列
に格納するものとする。また、minmaxは配列の先頭アドレス情報が代入
されたポインタで呼び出されるものとし、戻り値はvoid型とする。
実行結果
1個目のデータを入力:10
2個目のデータを入力:20
3個目のデータを入力:-5
4個目のデータを入力:100
5個目のデータを入力:0
最大値は100.000000です。最小値は-5.000000です。
0896デフォルトの名無しさん
2006/11/20(月) 13:21:02[2] 問題文(含コード&リンク):
http://www2.crypt.c.dendai.ac.jp/pukiwiki/pukiwiki.php?2006%C7%AF%A5%EC%A5%DD%A1%BC%A5%C8%B2%DD%C2%EA1
double a[]={1.5, 3.3, 6.7, 0.2, 2.9, -1};
のような正の実数の配列が与えられているとします。但し、最後の "-1"はデータの終りを意味している特別な値(番兵)であるとします。
バブルソートについて調べて、上のような任意長の配列の要素をバブルソートを用いて昇順に並べるプログラムを書け。
[3.1] OS: (Windows/Linux/等々) windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C++
よろしくお願いします
0897デフォルトの名無しさん
2006/11/20(月) 13:27:10void minmax(double *in, int len, double *out_min, double *out_max);
void minmax_(double *in, int len, double *out_min, double *out_max);
void minmax(double *in, int len, double *out_min, double *out_max){
//ものすごく殺伐としてる関数
*out_min=-5.0;
*out_max=100.0;
}
void minmax_(double *in, int len, double *out_min, double *out_max){
//おまけ
int i;
double min, max;
if(len>=0) min=max=in[0]; else min=max=0;
for(i=0;i<len;i++){
if(min>in[i]) min=in[i];
if(max<in[i]) max=in[i];
}
*out_min=min;
*out_max=max;
}
0898デフォルトの名無しさん
2006/11/20(月) 13:35:43Forbidden
問題文が読めないよ
0899デフォルトの名無しさん
2006/11/20(月) 13:39:39大学でログインしないと見れないのかも。
問題は
「double a[]={1.5, 3.3, 6.7, 0.2, 2.9, -1};
のような正の実数の配列が与えられているとします。但し、最後の "-1"はデータの終りを意味している特別な値(番兵)であるとします。
バブルソートについて調べて、上のような任意長の配列の要素をバブルソートを用いて昇順に並べるプログラムを書け。 」
で全文です。
0900デフォルトの名無しさん
2006/11/20(月) 13:43:46・lenが0のときに破綻する。
・lenが1以上を仮定していいなら、forループの初期値は1でいい。
0901デフォルトの名無しさん
2006/11/20(月) 13:46:15[2] 問題文(含コード&リンク):フラクタル次元の算出(ボックスカウンティング法)
[3] 環境
[3.1] OS: (WindowsXP
[3.2] gcc 3.4 VC 6.0
[3.3] 言語: どちらでも可
[4] 期限: 2006年11月25日12:00まで
お願いいたします。
0902デフォルトの名無しさん
2006/11/20(月) 13:47:16#include <stdio.h>
int main(void)
{
double a[]={1.5, 3.3, 6.7, 0.2, 2.9, -1}, t;
int i, j, n;
for (n = 0; n < sizeof(a) / sizeof(a[0]); n++)
if (a[n] == -1) break;
for (i = 0; i < n - 1; i++)
for (j = n - 1; j > i; j--)
if (a[j] < a[j - 1])
t = a[j], a[j] = a[j - 1], a[j - 1] = t;
for (i = 0; i < n; i++)
printf("%f ", a[i]);
putchar('\n');
return 0;
}
0903デフォルトの名無しさん
2006/11/20(月) 13:48:39> ・lenが0のときに破綻する。
あー
if(len>=0)じゃなくてif(len>=1)だね
> ・lenが1以上を仮定していいなら、forループの初期値は1でいい。
('A`)
0904デフォルトの名無しさん
2006/11/20(月) 14:03:05[2] 問題文:
三次元self-aboidingウォークのプログラム
self-aboidingウォークとはランダムウォークしてるときに
一度通った道を通らないもの。
格子状でお願いします(上下左右の運動)
[3] 環境
[3.1] OS: WindowsXP
[3.3] 言語: C言語
[4] 期限: なるべく早めでお願いします
[5] その他の制限: cygwinを使います。gnuplotで表示させます
どなたかお願いします。。
0905デフォルトの名無しさん
2006/11/20(月) 14:07:49マルチポストは死んでね
0906デフォルトの名無しさん
2006/11/20(月) 14:15:58無事起動できました。
本当にありがとうございます。
0907デフォルトの名無しさん
2006/11/20(月) 14:35:57[2] 問題文:
簡単なコンパイラをつくれ(字句解析、構文解析)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3004.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] VC++2005ExpressEdition
[3.3] 言語: C言語
[4] 期限: 今月中です
[5] その他の制限: linuxの元ではcc ファイル.c ファイル.c〜〜で実行したのですが VC++2005ExpressEditionでのリンク処理?
プロジェクトなどが分かりません。いちお.cと.hは作ってあるのでVCでの設定や実行の仕方を教えてもらえるとうれしいです。
0908デフォルトの名無しさん
2006/11/20(月) 15:48:470909デフォルトの名無しさん
2006/11/20(月) 15:51:130910デフォルトの名無しさん
2006/11/20(月) 15:56:33>>・lenが1以上を仮定していいなら、forループの初期値は1でいい。
つーか、lenが0の時に最大値最小値を0にしていいかどうかって問題だね。
0911デフォルトの名無しさん
2006/11/20(月) 15:57:21ティーワイピーイーディーイーエフ
0912デフォルトの名無しさん
2006/11/20(月) 16:31:51評価画像と数値くらい出せ
0913デフォルトの名無しさん
2006/11/20(月) 16:39:39[2] 問題文(含コード&リンク):ファイルをよみこんで、そのファイルのワードカウントせよ。
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語: C
[4] 期限:今日の18時までにお願いします。
[5] その他の制限:
0914デフォルトの名無しさん
2006/11/20(月) 16:48:37これはひどい
0915デフォルトの名無しさん
2006/11/20(月) 16:52:35int main(){
FILE* fp;
int size;
fp = fopen("file", "rb");
fseek(fp, 0, SEEK_END);
size = ftell(fp);
fclose(fp);
printf("ファイルサイズは %d byte", size);
}
0916デフォルトの名無しさん
2006/11/20(月) 16:53:190917デフォルトの名無しさん
2006/11/20(月) 17:24:35nの平方根、nの立方根を求めよ。
よろしくおながいしまつ
0918デフォルトの名無しさん
2006/11/20(月) 17:34:21# include <stdio.h>
# include <math.h>
int main(void)
{
int i;
for(i = 1; i <=25; i++)
printf("n = %d, nの2乗 = %d, 1/n = %f, nの平方根 = %f, nの立方根 = %f\n",
i, i * i, 1. / i, sqrt(i), pow(i, 1. / 3));
return 0;
}
0919デフォルトの名無しさん
2006/11/20(月) 17:55:420920デフォルトの名無しさん
2006/11/20(月) 17:57:07[2] 問題文 この状態だと逆順印字になってしまうので、正順印字にできるように書き換える
[3.1] OS:rinux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限:明日午後3時
0921デフォルトの名無しさん
2006/11/20(月) 17:57:50#include<stdlib.h>
typedef struct Node_template{
int number;
struct Node_template *next;
}node;
node *start = NULL;
int push(int date){
node *ptr = start;
start = (node *)malloc(sizeof(node));
if(start == NULL){
fprintf8stderr,"Nomore memory");
exit(1);
}
start->number = date;
start->next =ptr;[
return(EXIT_SUCCESS);
}
0922921の続き
2006/11/20(月) 17:58:45int input_date;
int i;
node *p;
while(fprintf(stdout,"\n Enter an integar")
,scanf("%d",&input_date) == 1
){
push(input_date);
}
fprintf(stdout,"\nMemory image\n");
i = 0;
for(p = start;p != NULL;p = p->next){
fprintf(stdout,"[%3d] = %5d\n",i,p->number);
i=i+1;
}
return(EXIT_SUCCESS);
}
0923デフォルトの名無しさん
2006/11/20(月) 19:27:510924デフォルトの名無しさん
2006/11/20(月) 19:45:53遅れてるな
0925デフォルトの名無しさん
2006/11/20(月) 20:08:09http://uncyclopedia.org/wiki/Rinux
node *start = NULL;
node *last = NULL;
int push(int date){
node *ptr = (node *)malloc(sizeof(node));
if(ptr == NULL){
fprintf(stderr,"Nomore memory");
exit(1);
}
if(start==NULL)
start = ptr;
ptr->number = date;
ptr->next = NULL;
if(last!=NULL)
last->next = ptr;
last = ptr;
return(EXIT_SUCCESS);
}
0926デフォルトの名無しさん
2006/11/20(月) 20:33:570927デフォルトの名無しさん
2006/11/20(月) 22:42:42[2] 問題文:整数型変数nの値を1から25まで1ずつ変化させて、nの2乗、1/n、nの平方根、nの立方根を求めて以下のような
数表を作成させるプログラムを完成させよ
n n*n 1/n sqrt(n) n^(1/3)
1 1.00000 1.00000 1.00000 1.00000
2 4.00000 0.50000 1.41421 1.25992
3 9.00000 0.33333 1.73205 1.44225
4 16.00000 0.25000 2.00000 1.58740
長いので途中は略・・・・本当は4 5 6 7 8 ・・・・と続いてます
23 529.00000 0.04348 4.79583 2.84387
24 576.00000 0.04167 4.89868 2.88450
25 625.00000 0.04000 5.00000 2.92402
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) Microsoft Visual C++ 2005
[3.3] 言語: C++
[4] 期限: 今日中に・・・
[5] その他の制限:
どうにかおながいします。
0928デフォルトの名無しさん
2006/11/20(月) 22:45:54>>918 を改造すべし
0929927
2006/11/20(月) 22:50:38まったく同じだ・・・・・
同胞がいたのねww
928さん、ありがとうございます!!
0930デフォルトの名無しさん
2006/11/20(月) 23:22:51問題の意図はとりあえずCの関数を「自分で」調べてもらうことと
forの回し方と出力に慣れる事、発展として数値計算に興味を持ってチャレンジする
学生が出てこないかなぁなんて夢見てとりあえずだしてみた講師の思いは
このスレで無残に切り捨てられるわけか、南無。
0931デフォルトの名無しさん
2006/11/20(月) 23:30:29若手が育たなければ、我々年寄りが職を失わずに済むわけだから。
0932デフォルトの名無しさん
2006/11/20(月) 23:32:22若手が働かなくちゃ
年金はさらに遠のく
0933デフォルトの名無しさん
2006/11/20(月) 23:32:58[2] 問題文(含コード&リンク):http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3006.txt
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:明日の正午まで
[5] その他の制限:配列、乱数、文字列の処理は習いました。構造体とポインタはまだ習っていません
よろしくお願いしますm(_ _)m
0934デフォルトの名無しさん
2006/11/20(月) 23:33:530935デフォルトの名無しさん
2006/11/20(月) 23:36:33#include<stdio.h>
#include<math.h>
int main()
{
int i,n;
printf("n n*n 1/n sqrt(n) n^(1/3)\n");
for (i=1;i<=25;i++){
printf("%d %1.5f %1.5f %1.5f %1.5f",i,n*n,sqrt(n),pow(n,1/3));
}
}
0936927
2006/11/20(月) 23:48:42935をMicrosoft Visual C++ 2005 Express Editionを使用して実行してみましたが、
「オーバーロード関数の呼び出しを解決することができません。」
と出て実行できないのですが・・・・。
本当に、何もわからなくてすみません。
0937デフォルトの名無しさん
2006/11/20(月) 23:56:07シャッフルその1
for(i=52; i>0; i--) {
j = rand() % i;
temp = deck[j];
for(;j<51;j++) deck[j] = deck[j+1];
deck[51] = temp;
}
シャッフルその2
for(i=0; i<10000; i++) {
a = rand() % 52;
b = rand() % 52;
temp = deck[a];
deck[a] = deck[b];
deck[b] = temp;
}
0938デフォルトの名無しさん
2006/11/20(月) 23:58:22・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
0939927
2006/11/21(火) 00:01:15発生した行: printf("%d %15.5f %15.5f %15.5f %15.5f",i,n*n,1/n,sqrt(n),pow(n,1/3));
以下エラー内容
1>..\..\..\DATA\01.cpp(10) : error C2668: 'sqrt' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(581): 'long double sqrt(long double)' の可能性があります。
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(533): または 'float sqrt(float)'
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(128): または 'double sqrt(double)'
1> 引数リスト '(int)' を一致させようとしているとき
1>..\..\..\DATA\01.cpp(10) : error C2668: 'pow' : オーバーロード関数の呼び出しを解決することができません。(新機能 ; ヘルプを参照)
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(575): 'long double pow(long double,int)' の可能性があります。
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(527): または 'float pow(float,int)'
1> C:\Program Files\Microsoft Visual Studio 8\VC\include\math.h(489): または 'double pow(double,int)'
1> 引数リスト '(int, int)' を一致させようとしているとき
1>ビルドログは "file://d:\VC\Projects\ex\ex\Debug\BuildLog.htm" に保存されました。
1>ex - エラー 2、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
以上です。よろしくお願いします
0940927
2006/11/21(火) 00:04:59発生した行: printf("%d %1.5f %1.5f %1.5f %1.5f",i,n*n,1/n,sqrt(n),pow(n,1/3));
でした
0941デフォルトの名無しさん
2006/11/21(火) 00:07:46printf("%d %15.5f %15.5f %15.5f %15.5f",i,n*n,1/n,sqrt((double)n),pow((double)n,1/3));
でなんとかならんか
0942デフォルトの名無しさん
2006/11/21(火) 00:09:390943デフォルトの名無しさん
2006/11/21(火) 00:09:42ボックスカウンティング法だと細線化が必要ですね。
読み込む画像に細線化を施して・・・
あとは本読んでみてください。
0944927
2006/11/21(火) 00:12:47エラーなく実行できましたが、プログラムが強制終了されて以下のような
メッセージが出ました。。。。
/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
n n*n 1/n sqrt(n) n^(1/3)
ハンドルされていない例外: System.DivideByZeroException: 0 で除算しようとしました
。
場所 main() 場所 d:\vc\data\01.cpp:行 10
続行するには何かキーを押してください . . .
-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-
0945デフォルトの名無しさん
2006/11/21(火) 00:12:58VC8でやってみた。プログラムミスだね。こちらでやって
#include <stdio.h>
#include <math.h>
int main()
{
int i;
double n;
printf("n n*n 1/n sqrt(n) n^(1/3)\n");
for (i = 1; i <= 25; i++) {
n = i;
printf("%d %1.5f %1.5f %1.5f\n", i, n * n, sqrt(n), pow(n, 1./3.));
}
}
0946デフォルトの名無しさん
2006/11/21(火) 00:16:191/nが消えてるぞ
0947927
2006/11/21(火) 00:16:33ありがとうございます!
無事に実行できました。感激です。
いろいろとアドバイスをしてくださった皆さん、ありがとうございました。
また何かありましたらよろしくです。
0948927
2006/11/21(火) 00:18:060950デフォルトの名無しさん
2006/11/21(火) 00:19:40#include <math.h>
int main(void)
{
int i;
double n;
printf("n\t\tn*n\t\t1/n\t\tsqrt(n)\t\tn^(1/3)\n");
for (i = 1; i <= 25; i++) {
n = i;
printf("%d %15.5f %15.5f %15.5f %15.5f\n", i, n * n, 1 / n, sqrt(n), pow(n, 1./3.));
}
}
0951デフォルトの名無しさん
2006/11/21(火) 00:24:42[2] 配列 (の先頭アドレス) a とそのサイズ n を受け取り, 要素を逆順に並び換える
(a[0]=1, a[1]=9, a[2]=2, a[3]=6 を a[0]=6, a[1]=2, a[2]=9, a[3]=1 にする) 関数 array_reverse(int *a, int n) を作成せよ
[3]
[3.1] winXP sp2
[3.2] cygwin
[3.3] C
[4] 2006年11月30日
[5] forを使ってできるだけ簡単なのがほしいです。関数だけでいいです。
自分で考えた時間は3時間ですが作れません。
0952デフォルトの名無しさん
2006/11/21(火) 00:28:05ちっとは推敲しておくれ。
0953927
2006/11/21(火) 00:30:53参考書を確認していたら載ってました。ありがとうございます。
>>950さんので実行してみたらきれいに整列しました
ありがとうございます!
0954デフォルトの名無しさん
2006/11/21(火) 00:33:30void reverse_array(int *a, int n)
{
int i, temp;
for(i=0; i<n/2; i++) {
temp = a[i];
a[i] = a[n-1-i];
a[n-1-i] = a[i];
}
}
0955デフォルトの名無しさん
2006/11/21(火) 00:34:08粗悪な方がコピーしたと疑われなくてちょうどいいと思うがどうだろうかw
0956ミスった
2006/11/21(火) 00:34:410957デフォルトの名無しさん
2006/11/21(火) 00:36:15こんな夜遅くまで何をやってるんだろうか私は・・・
0958デフォルトの名無しさん
2006/11/21(火) 00:38:11{
int i = 0;
int temp = 0;
for(i = 0; i < (n-1)/2; i++)
{
temp = a[i];
a[i] = a[n-i-1];
a[n-i-1] = temp;
}
}
0959デフォルトの名無しさん
2006/11/21(火) 00:43:20それだとnが偶数のときおかしくない?
例えばn=4のとき(n-1)/2は1になりa[1]とa[2]が交換されない。
0960951
2006/11/21(火) 00:47:49全角のスペースが含まれていたので除去したら
なんかへんなエラーでました。
家のコンパイラではなぜかコピーできないんですけど
underfined reference to '_array_reverse'とかなんとか
>>958さん
>>959さんの言うように、
{2,3,4,5,}の逆が{5,3,4,2}になったりします
0961951
2006/11/21(火) 00:49:33そこらへんのサイトで調べてきたやつも入れてみたり
いろいろ試してみるんですがどれも上手くいかないです。
まさか関数以外の部分が間違ってたりするんでしょうか。
この関数無しだと正常にそのままの数値で返ってくるプログラムになるのですが
0962958
2006/11/21(火) 00:50:530963デフォルトの名無しさん
2006/11/21(火) 00:50:55958がコピペで通ってるなら(n-1)/2のとこだけn/2にすればいいだろ
0964958
2006/11/21(火) 00:53:250965デフォルトの名無しさん
2006/11/21(火) 00:55:52for文の終了条件に入れときゃいいよ。
それだけのこと
0966デフォルトの名無しさん
2006/11/21(火) 00:57:090967デフォルトの名無しさん
2006/11/21(火) 00:57:350969デフォルトの名無しさん
2006/11/21(火) 01:02:21小学生の算数レベルの簡単な話ですよ。
もう少し勉強したってください。
0971デフォルトの名無しさん
2006/11/21(火) 01:09:32いきなりうまくやろうとするよりまずは動くプログラム作って
それから改良しとき、うちはもう寝るわぁ。
0972デフォルトの名無しさん
2006/11/21(火) 01:10:580973デフォルトの名無しさん
2006/11/21(火) 09:45:37[2]
以下のような3つのペアの実数をファイルに書き、
それらのペアを配列を使って読んで、
それぞれの四則演算を別のファイルに書き出しなさい。
5.0 3.0
2.5 1.0
4.0 1.5
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: emacs
[3.3] 言語: C
[4] 期限: 2006年11月21日14時まで
0974デフォルトの名無しさん
2006/11/21(火) 10:22:050975デフォルトの名無しさん
2006/11/21(火) 10:24:540976デフォルトの名無しさん
2006/11/21(火) 11:17:120977デフォルトの名無しさん
2006/11/21(火) 11:46:15[2] 問題文(含コード&リンク):
キーボードからa,b,c,の値を入力し、二次方程式 ax2+bx+c=0
平方根を求め、下記のように表示するプログラムを作りなさい。
但し、while文を用いて繰り返し計算ができるようにすること。
終了はaに0が入力されたときとする。
例:2実根の時 : 2実根 :x=1,2,3,4x2=-2,3,4
重根の時 : 重根 :x=3,2,1
複素根の時: 複素根:x1,x2=1,2±j3.4
※ルートは数学処理の#include <math.h> とsqrt(値)を使用する。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: Microsoft Visual Studio 2005
[3.3] 言語:C++
[4] 期限: 2006年11月23日19:00まで
[5] その他の制限:
for構文、if構文、while構文のみ習っています。
申し訳ありませんが、インデント付でお願いします。
0978デフォルトの名無しさん
2006/11/21(火) 12:03:55>申し訳ありませんが、インデント付でお願いします。
まず自分でやってみよう!
0979デフォルトの名無しさん
2006/11/21(火) 12:07:41あぁ?おめーらいい加減にしとけやコラァ!
図書館で算数の教科書見て自分で解けやバカが。
それとも高校レベルの数学も出来ないバカなんですか?
なら退学しろクズが
0980デフォルトの名無しさん
2006/11/21(火) 12:15:42http://pc8.2ch.net/test/read.cgi/tech/1164079451/
次スレ立てました
0982デフォルトの名無しさん
2006/11/21(火) 12:55:320983デフォルトの名無しさん
2006/11/21(火) 13:00:290984デフォルトの名無しさん
2006/11/21(火) 13:09:41[2] 課題:整数nが与えられたとき、n×nのサイズで螺旋状に0から(n二乗ー1)までの数が並ぶ行列を作成し、
画面に表示させるプログラムを作成しなさい。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ:gcc
[3.3] 言語:C
[4] 期限:11月24日(金)12:00厳守
[5] その他の制限: ポインタ、データ構造までは習っています。
宜しくお願い致します。
0985デフォルトの名無しさん
2006/11/21(火) 13:10:01多分、二次方程式作って、その解を求めるだけくね?
0986デフォルトの名無しさん
2006/11/21(火) 13:12:30螺旋状がよく判らない。
計算結果の例を載せるがよろし。
0987977
2006/11/21(火) 13:12:52皆さんにご迷惑をおかけし、申し訳ありません。
言われるようにまだ、自分で考えてみたいと思います。
0988デフォルトの名無しさん
2006/11/21(火) 13:13:41#include<math.h>
int main(){float a,b,c,d;while(1){printf("a b c:");scanf("%f %f %f",&a,&b,&c);if(a==0)return 0;d=b*b-4*a*c;
if(d>0)printf("2実根:%f,%f\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
else if(d==0)printf("重根:%f\n",-b/(2*a));
else printf("複素根:%f±%fi\n",-b/(2*a),sqrt(-d)/(2*a));}}
申し訳ありませんが、検算とインデントは自分でお願いします。
正直、よく判らんかった
0989デフォルトの名無しさん
2006/11/21(火) 13:16:500990デフォルトの名無しさん
2006/11/21(火) 13:17:580991デフォルトの名無しさん
2006/11/21(火) 13:18:26ネットにいくらでもあるし、解説してるサイトが。
それでもわからないなら高校ヤメレ
螺旋?
*
*
*
*
*
*
*
*
*
*
こういうのか。
こんな出力だけの問題じぶんでやれよ
0992デフォルトの名無しさん
2006/11/21(火) 13:21:200993984
2006/11/21(火) 13:23:09例えばキーボードから5を読み込ませると(n=5にすると)
0 1 2 3 4
15 16 17 18 5
14 23 24 19 6
13 22 21 20 7
12 11 10 9 8
という感じになります。
0994デフォルトの名無しさん
2006/11/21(火) 13:26:220995デフォルトの名無しさん
2006/11/21(火) 13:29:07このスレくらい検索しろハゲ
0996デフォルトの名無しさん
2006/11/21(火) 13:29:18さっぱりわかんね
おれ
もう
だめ?
0997デフォルトの名無しさん
2006/11/21(火) 13:35:550998デフォルトの名無しさん
2006/11/21(火) 13:38:52んだは
しうも
0999デフォルトの名無しさん
2006/11/21(火) 13:39:27>>977
なんで2実根の時のxとx2の数が違うのかとか
2実根の時はxとx2なのに複素根の時はx1とx2なのかとか
1000デフォルトの名無しさん
2006/11/21(火) 13:41:43みんな自力で頑張ろうな
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。