C/C++の宿題を片付けます 65代目
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/05/18(木) 08:24:25【質問者へ】
回答者の便宜のため、質問の際は以下を行うことを推奨します。
・質問は【質問テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して
投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。
【質問テンプレ】
[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++の宿題を片付けます 64代目
http://pc8.2ch.net/test/read.cgi/tech/1146323457/
【過去スレ一覧】
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/05/18(木) 08:25:47C言語/C++言語の宿題を片付けます 65代目
http://pc8.2ch.net/test/read.cgi/tech/1147902222/
0003デフォルトの名無しさん
2006/05/19(金) 01:14:150004デフォルトの名無しさん
2006/05/19(金) 01:16:550005デフォルトの名無しさん
2006/05/19(金) 01:32:21の >>971 です。 お願いします。
0006デフォルトの名無しさん
2006/05/19(金) 01:42:180007デフォルトの名無しさん
2006/05/19(金) 02:02:06int main(){
string str = "新スレアゲ by オズマ";
cout<<str<<endl;
}
0008デフォルトの名無しさん
2006/05/19(金) 14:30:380009デフォルトの名無しさん
2006/05/19(金) 14:45:09[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1919.txt
アップローダーにテキストを張りました。
課題の内容:Xウィンドウシステムで簡単なお絵かきツールを作成する。
具体的な用件:マウスのドラッグにより、フリー曲線を描き、メニューの「end」をマウス
でクリックするか、キーボードから「e」を入力すると終了する。
また、デフォルト(メニューをクリックするまで)は何も描けないようにする。
<1>メニューを複数用意し、マウスのクリックにより、機能を使い分けられるようにする。
<2>各機能は、以下のもの
フリー曲線:画面上にマウスのドラッグで曲線を書く。
文字の描画:画面のマウスでクリックした位置に文字を表示する。
直線の描画:画面上の2点をクリックしたら、その2点を結ぶ直線を表示する。
[3] 環境
[3.1] OS: Windows (cygwin)
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年5月22日00:00
よろしくお願いいたします。
0010デフォルトの名無しさん
2006/05/19(金) 16:09:34【環境】Visual Stdio.NET2003
【OS】Windows XP
【提出期限】5月20日
【課題内容】次のプログラムを自己参照構造体を使うように変更せよ。
ヒント:構造体のポインタ
※プログラムは長いのでUpしました。
【プログラム】
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1917.txt
よろしくお願いいたします。
0011デフォルトの名無しさん
2006/05/19(金) 17:38:1011行目:int NextIndex; → struct SportsClub* Next;
33行目:kaiin[i].NextIndex = -1; → kaiin[i].Next = 0;
82行目:kaiin[h].NextIndex = -1; → kaiin[h].Next = 0;
93行目:kaiin[i].NextIndex = -1; → kaiin[i].Next = 0;
99行目:kaiin[h].NextIndex != -1; → kaiin[h].Next != 0;
101行目:h = kaiin[h].NextIndex; → h = kaiin[h].Next - &kaiin[0];
103行目:kaiin[h].NextIndex = i; → kaiin[h].Next = &kaiin[i];
134行目:h = kaiin[h].NextIndex; → h = kaiin[h].Next - &kaiin[0];
154行目:kaiin[i].NextIndex → kaiin[i].Next ? kaiin[i].Next - &kaiin[0] : -1
どうでもいいけど、構造体の名前にセンスなさ過ぎ。
0012デフォルトの名無しさん
2006/05/19(金) 17:49:26ありがとうございました。
0013デフォルトの名無しさん
2006/05/19(金) 17:54:48課題なんてそんなもん、と思ったが俺の所はハンガリアン命名規約使ってたな
読みやすくて非常によかった
0014デフォルトの名無しさん
2006/05/19(金) 18:27:340015デフォルトの名無しさん
2006/05/19(金) 18:33:00好きとか嫌いとか♪
テメーの好みは〜
てめぇのソースに反映しろ
口に出〜すな〜
非、生産的な
DQNおん〜な〜
0016デフォルトの名無しさん
2006/05/19(金) 18:45:13他にいい記法があるなら紹介してくれ
0017デフォルトの名無しさん
2006/05/19(金) 19:15:57このスレの住人でチーム組んでる分けでもなし。
0018デフォルトの名無しさん
2006/05/19(金) 19:46:100019デフォルトの名無しさん
2006/05/19(金) 19:54:20ちょっと調べてみたがPascal記法の最初が小文字なバージョンか?
それだと型が分かりづらいだろ
0020デフォルトの名無しさん
2006/05/19(金) 21:00:37そもそも変数名に型を埋め込むのがナンセンス
…という考え方もある。
型のないスクリプト言語ならドキュメンテーション的な利点があるが、
型付けの強い言語では冗長だという解釈もできる。
冗長性が必要となるような長い複雑なコードはその前にそれを直せという意見もある。
0021デフォルトの名無しさん
2006/05/19(金) 21:50:47現在 Windows 文化圏で一般に行われているハンガリアン記法と
本来のハンガリアン記法とでも全然違う。
本来のハンガリアン記法ならまだ価値があると思うが、今のハンガリアン記法は
微妙すぎる。オブジェクト思考と相容れない。
詳細はこのへん↓
ttp://www.radiumsoftware.com/hungarian_notation.html
>>20
なんで >>19 に対するレスなのかわかんないけど後半はその通りだと思います
スレ違いごめんよ
0022billy
2006/05/19(金) 21:58:01単語に分けた上で、第2引数と第3引数のフィールドを入れ替えて出力するプログラムを作成する。
ただし、入れ替えるように指定されたフィールドの一方もしくは両方が存在しなかった場合は
入れ替えを行わないようにする。
実行例:
%cat source
This,is,source.
file,end.
%gcc -o fieldswap kadai.c
%./fieldswap source 2 3
-- Line 1 --
Field 1: This
Field 2: source.
Field 3: is
-- Line 2 --
Field 1: file
Field 2: end.
環境
OS:Linux
コンパイラ名とバージョン:gcc
言語:C
期限: 5/25
0023デフォルトの名無しさん
2006/05/19(金) 22:00:01そこで、CreateGame〜陸海空オンライン〜ですよー
ただ今、何名か開発陣募集(PG、絵師、声優、歌手)しています。
ゲーム製作を天職とする集団です。デジタルコンテンツも!
どぞ
0024デフォルトの名無しさん
2006/05/19(金) 22:42:520025デフォルトの名無しさん
2006/05/19(金) 22:46:01[1] プログラミング実習
[2]
長さが32の0と1の列
se7e6e5…e1e0d1d2…d22d23
を入力してこのビット列の表す実数値(実数表現の仕方はIEEE規格754に従うものと仮定する)
(-1)^s*(1+M)*2^E if-127<E<128
(-1)^s*M*2^(E+1) ifE=-127
Inf ifE=128,M=0
NaN ifE=128,M≠0
を出力するCプログラムを作成せよ。またこのプログラムの場合、使用した計算機の実数表現方式がIEEE規格754に従っているのなら、
計算結果として得られた実数値はコンピュータ内部では入力したビット列で表されているはずであるが、これをGDBのxコマンドを用いて調べてみよ。
[3] 環境
[3.1] unix
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] C
[4] 5/26
[5] その他の制限:数学関数は使わない。
0026デフォルトの名無しさん
2006/05/19(金) 22:57:22[2] 問題文(含コード&リンク): 再帰的関数定義とsin(x)のマクローリン展開の初めの10項を用いてsin(x)の近似値を出力するプログラムを作成せよ。
この際、xの値をキーボード入力すると、sin(x)の値の近似値を
sin_10=*******
の形式で表示させるようにせよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々) winxp
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) LSI-C86試食
[3.3] 言語: (C/C++/どちらでも可 のいずれか) c
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2006.5.26
再帰的関数定義でやらないといけないみたいです、、よろしくお願いします(;´д`)
0028デフォルトの名無しさん
2006/05/19(金) 23:15:01ttp://telecom0.eng.niigata-u.ac.jp/index.php?Lecture%2FProgrammingLaboratory%2FH18%2F01
探しましょう
002928
2006/05/19(金) 23:16:360030デフォルトの名無しさん
2006/05/20(土) 00:06:19[2] 問題文(含コード&リンク): 3より大きく,入力された上限の数未満の全ての自然数かつ非素数につい
て,3で割り切れるものは無視し,3で割った余りが1のものは加算し,余り
が2のものは減算して合計を求めよ
[3] 環境
Linux 、gcc 3.4
[3.3] 言語: C
[4] 期限: ([2006年5月24日24:00まで]
[5] 繰り返し(while,for),条件分岐(if,else,switch),四則演算、論理演算、標準入出力(printf,scanf)等
配列、平方根は使用不可。
以上です。よろしくお願いします(m−m)
0031デフォルトの名無しさん
2006/05/20(土) 01:14:47#include <stdio.h>
int is_prime( int n )
{
int i;
if ( n == 0 || n == 1 ) return 0;
for ( i = 2; i < n/2+1; ++i )
if ( n%i == 0 )return 0;
return 1;
}
static int solve( int max )
{
int i, sum = 0;
for ( i = 4; i <= max; ++i ) {
if ( is_prime(i) ) continue;
if ( i%3 == 0 )continue;
else if ( i%3 == 1 )sum += i;
else /* i%3 == 2 */sum -= i;
}
return sum;
}
int main( void )
{
int max;
printf( "INPUT MAX > " );
scanf( "%i", &max );
printf( "result: %d\n", solve(max) );
return 0;
}
0032デフォルトの名無しさん
2006/05/20(土) 04:55:50結果として返すプログラムを、 入力データの記憶にリスト構造を利用して作れ。
なお、入力は1文字ずつ return で区切って入力し、その終了は '.' (ピリオド)
で示すものとする。
このプログラムにおいて、内部的に記憶しておく必要があるデータは、
* 入力された「文字」
* その文字が「入力された回数」
の2つである。
わかりません。お願いします。
0033デフォルトの名無しさん
2006/05/20(土) 06:06:16わざわざリスト構造を使う意味が理解できないけど書いてみた。
int count[1<<CHAR_BIT];て書いたほうが絶対楽。
あと、>>1嫁
#include<iostream>
#include<list>
#include<utility>
#include<algorithm>
void output(const std::pair<char,int>&p){
std::cout << "入力文字'"<< p.first << "' 入力回数 "<< p.second << std::endl;
}
int main(){
typedef std::list<std::pair<char,int> >list_t;
list_t count;
for(char c;std::cin.get(c) && c != '.';){
if(c == '\n')continue;
list_t::iterator it = count.begin(),end=count.end();
for(;it != end;++it)
if(it->first == c)break;
if(it == end){
count.push_back(std::make_pair(c,0));
it = count.end();
--it;
}
++it->second;
}
std::for_each(count.begin(),count.end(),output);
}
[2] スレッドに関する課題
[3] 環境
[3.1] OS: Linux [3.2] gcc 3.4 [3.3] C++
[4] 期限: 2006年5月22日
[5] 特になし
学校の課題なんですがC++ で自作のスレッドクラスを作成し、
このスレッドクラスを継承した機能クラスを作成。
メイン側で機能クラスのインスタンスを作成し、Runすると別スレッドでインスタンス(?)が動作する
プログラムというのは作ることができるのでしょうか?ご指導よろしくおねがいしますm(_ _)m
// 自作スレッドクラス
class Thread {
:public
run(){
//スレッド作成
}
};
// スレッドで動かしたいクラス
class FUNC : public Thread {
:public
//スレッドで動かしたい処理
threadFunc(){} //実際にスレッドで動く処理
};
int main() {
FUNC instans;
instans.run(); //スレッド作成、機能実行
}
0035デフォルトの名無しさん
2006/05/20(土) 12:17:31思うに微妙なスレ違い
C/C++環境依存スレいった方がいいんじゃね?
0036デフォルトの名無しさん
2006/05/20(土) 13:16:25まあ待て、環境依存な宿題も別に禁止にはなってない。
分かる人が答えればいいだけの話。
0037デフォルトの名無しさん
2006/05/20(土) 14:15:56いやそういう意味じゃなくて、ここよりも環境依存スレの方がいい回答得られるんじゃないかな?と思っただけ
0038デフォルトの名無しさん
2006/05/20(土) 14:28:390039デフォルトの名無しさん
2006/05/20(土) 14:34:490040デフォルトの名無しさん
2006/05/20(土) 14:41:46それを別スレッドで走らせられるのか?って質問だから
宿題とはちょっと違うと思うが
0041デフォルトの名無しさん
2006/05/20(土) 14:55:42ご迷惑おかけしました。
[1] 授業単元: C言語演習
[2] 問題文(含コード&リンク): お絵かきツールの作成
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1920.txt
アップローダーにテキストを張りました。ここまではなんとかできたのですが。
課題の内容:Xウィンドウシステムで簡単なお絵かきツールを作成する。
具体的な用件:マウスのドラッグにより、フリー曲線を描き、メニューの「end」をマウス
でクリックするか、キーボードから「e」を入力すると終了する。
また、デフォルト(メニューをクリックするまで)は何も描けないようにする。
<1>メニューを複数用意し、マウスのクリックにより、機能を使い分けられるようにする。
<2>各機能は、以下のもの
フリー曲線:画面上にマウスのドラッグで曲線を書く。
文字の描画:画面のマウスでクリックした位置に文字を表示する。
直線の描画:画面上の2点をクリックしたら、その2点を結ぶ直線を表示する。
[3] 環境
[3.1] OS: Windows (cygwin)
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年5月22日00:00
よろしくお願いいたします。
0042billy
2006/05/20(土) 15:07:03単語に分けた上で、第2引数と第3引数のフィールドを入れ替えて出力するプログラムを作成する。
ただし、入れ替えるように指定されたフィールドの一方もしくは両方が存在しなかった場合は
入れ替えを行わないようにする。
実行例:
%cat source
This,is,source.
file,end.
%gcc -o fieldswap kadai.c
%./fieldswap source 2 3
-- Line 1 --
Field 1: This
Field 2: source.
Field 3: is
-- Line 2 --
Field 1: file
Field 2: end.
環境
OS:Linux
コンパイラ名とバージョン:gcc
言語:C
期限: 5/25
0043デフォルトの名無しさん
2006/05/20(土) 15:29:53デザインパターンのテンプレートメソッドを見ると幸せになれるかも。
0044デフォルトの名無しさん
2006/05/20(土) 17:04:40#include <stdio.h>
#include <stdlib.h>
double f(int n, int i, double x)
{
if (n<=1) return 1; else return 1 - x * x / i / (i+1) * f(n-1, i+2, x);
}
double sin_n(int n, double x)
{
return f(n, 2, x) * x;
}
int main()
{
char buf[100];
while (fgets(buf, sizeof(buf), stdin)) {
double x = atof(buf);
printf("sin_10=%f\n", sin_n(10, x));
}
return 0;
}
0045デフォルトの名無しさん
2006/05/20(土) 17:16:37こんな感じ
class Thread {
public:
static int run(){
//共通の開始前の処理
int ret = threadFunc();
//共通の終了処理
return ret;
}
protected:
virtual int threadFunc() = 0;
};
中断フラグとか、動作中フラグとかはThreadクラスに含めておくと良い。
0046デフォルトの名無しさん
2006/05/20(土) 17:17:450047デフォルトの名無しさん
2006/05/20(土) 17:26:04それができないのがstatic。
ついでにスレ違い。
0048デフォルトの名無しさん
2006/05/20(土) 17:52:08staticの意味が無い。諦めてextern汁。
ついでにスレ違い。
0049デフォルトの名無しさん
2006/05/20(土) 18:18:32[1] 授業単元:C言語実習
[2] 問題文:X,Y座標上の2点(X1,Y2)と(X2、Y1)を与えると、その2点間の距離を求めるプログラムを作成せよ。
ただし、距離を求める関数を用い、キーボードから与える座標値は、実数値とすること。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: bcc
[3.3] 言語: C
[4] 期限: 2006年5月21日まで。
0050デフォルトの名無しさん
2006/05/20(土) 18:46:54距離を求める関数を用いってのはどういうことだ?
そういう関数を作れってことなのか、それともC99で
math.hに追加されたhypot()を使えということなのか?
0051デフォルトの名無しさん
2006/05/20(土) 19:10:09斬新な表現だな。普通は(X1,Y1),(X2,Y2)なんだが。
0052>>49
2006/05/20(土) 19:26:57#include<math.h>
double getDist( double x1, double y1, double x2, double y2 ){
return sqrt( (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1) );
}
int main(int argc, char* argv[]){
double x1,x2,y1,y2;
scanf("%lf",&x1);
scanf("%lf",&x2);
scanf("%lf",&y1);
scanf("%lf",&y2);
printf("%lf",getDist( x1, x2, y1, y2) );
return 0;
}
0053デフォルトの名無しさん
2006/05/20(土) 19:29:46[2] 問題文(含コード&リンク): http://briefcase.yahoo.co.jp/ningenxp/
スプライトが表示されません。
どこを修正すればいいか書いてください
directx05.zip パスワード:cpp
[3] 環境
[3.1] OS: XP
[3.2] VC++2005EE
[3.3] C++
[4] 期限: 5/21 17:00
[5] その他の制限: とくになし
005453
2006/05/20(土) 19:31:06ID3DXSprite9::Draw
0055デフォルトの名無しさん
2006/05/20(土) 21:30:29// Begin the scene
if( SUCCEEDED( g_pd3dDevice->BeginScene() ) )
{
//Rendering of scene objects can happen here
if( g_pVB ) { // g_pVB が作成されるのは初回のRender呼び出し後の為
g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) );
g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX );
g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLELIST, 0, 1 );
}
g_pSprite->Begin(D3DXSPRITE_ALPHABLEND);
g_pSprite->Draw(g_pTexture, NULL, NULL, NULL,0xFFFFFFFF);
g_pSprite->End();
// End the scene
g_pd3dDevice->EndScene();
}
他にもリソースリーク有りますよ。
・Cleanup に RELEASE( g_pVB ); が抜けてる
・InitD3D で D3DXCreateSprite を2回呼び出してる
0056デフォルトの名無しさん
2006/05/21(日) 01:37:420057デフォルトの名無しさん
2006/05/21(日) 01:38:090058デフォルトの名無しさん
2006/05/21(日) 02:50:34[2] 問題文: 質量m [kg]の物体が,時間t = 0 [s]で初期速度v0 [m/s]の状態から加速度a [m/s2]で直線運動するとき,
t [s]後の物体の速度v [m/s],移動距離x [m]および運動エネルギー[J]を求めるプログラムを作りなさい.
ただし,速度,移動距離および運動エネルギーは,それぞれget_vel(),get_dis(), get_e()なる関数を各自定義し,
それらにより計算させること.また,変数m,v0,aをローカル変数で宣言した場合とグローバル変数で宣言した場合の2通りで作成すること.
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ:gcc
[3.3] 言語: C
[4] 期限: 5月24日
[5] その他の制限:特にございません、職人様よろしくおねがいします
0059デフォルトの名無しさん
2006/05/21(日) 03:41:04private:とpublic:をアクセス指定子に用いたクラスを設
計しプログラムを作成すること。
出来るだけ、自分の身の回りの実世界を反映させたものである
こと。
って漠然とし過ぎで何をすればいいやら。
何かアイディアないっすか?
0060デフォルトの名無しさん
2006/05/21(日) 03:48:58アドレス帳。
データをプライベート
データをいじくる関数をパブリック
0061デフォルトの名無しさん
2006/05/21(日) 04:11:04なるほど。
参考にします。
0062デフォルトの名無しさん
2006/05/21(日) 04:58:08[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc(version不明です)
[3.3] 言語: C
1,2,3,4,5 の5つの数字から3つを選び、全ての並びを出力する。というものです。
並び替えのアルゴリズムがさっぱり思いつきません。
1 2 3
1 3 2
2 1 3
・・・
3 1 2
3 2 1
1 2 4
1 4 2
・・・
と、5P3 = 5*4*3 = 60通り出力されるものです。
よろしくお願いします。
出来れば配列は使わず、
int a, b, c;
・・・
printf("%d %d %d\n", a, b, c);
の形式でお願いします。
0063デフォルトの名無しさん
2006/05/21(日) 05:10:55#include<stdio.h>
int main(void){
int a,b,c;
for(a=1;a<=3;++a){
for(b=a+1;b<=4;++b){
for(c=b+1;c<=5;++c){
printf("%d %d %d\n", a, b, c);
printf("%d %d %d\n", a, c, b);
printf("%d %d %d\n", b, a, c);
printf("%d %d %d\n", b, c, a);
printf("%d %d %d\n", c, a, b);
printf("%d %d %d\n", c, b, a);
}
}
}
return 0;
}
006562
2006/05/21(日) 07:11:090066デフォルトの名無しさん
2006/05/21(日) 07:17:20//ローカル変数
#include <stdio.h>
//速度
float get_vel(float v0, float a, float t)
{
return v0+a*t;
}
//移動距離
float get_dis(float v0, float t, float a)
{
return v0*t+a*t*t/2.0f;
}
//運動エネルギー
float get_e(float m, float v)
{
return m*v*v/2.0f;
}
0067デフォルトの名無しさん
2006/05/21(日) 07:17:51int main()
{
float m=10.0f; //質量
float v0=3.0f; //初期速度
float a=7.0f; //加速度
float t=25.0f; //経過時間
float v; //物体の速度
float x; //移動距離
float j; //運動エネルギー
v=get_vel(v0, a, t);
x=get_dis(v0, t, a);
j=get_e(m, v);
printf("%f\n%f\n%f\n", v, x, j);
return 0;
}
0068デフォルトの名無しさん
2006/05/21(日) 07:20:57//グローバル変数
#include <stdio.h>
float m=10.0f; //質量
float v0=3.0f; //初期速度
float a=7.0f; //加速度
float t=25.0f; //経過時間
float v; //物体の速度
float x; //移動距離
float j; //運動エネルギー
//速度
float get_vel()
{
return v0+a*t;
}
//移動距離
float get_dis()
{
return v0*t+a*t*t/2.0f;
}
//運動エネルギー
float get_e()
{
return m*v*v/2.0f;
}
0069デフォルトの名無しさん
2006/05/21(日) 07:21:27int main()
{
v=get_vel();
x=get_dis();
j=get_e();
printf("%f\n%f\n%f\n", v, x, j);
return 0;
}
0070デフォルトの名無しさん
2006/05/21(日) 08:58:510071billy
2006/05/21(日) 09:55:34単語に分けた上で、第2引数と第3引数のフィールドを入れ替えて出力するプログラムを作成する。
ただし、入れ替えるように指定されたフィールドの一方もしくは両方が存在しなかった場合は
入れ替えを行わないようにする。
実行例:
%cat source
This,is,source.
file,end.
%gcc -o fieldswap kadai.c
%./fieldswap source 2 3
-- Line 1 --
Field 1: This
Field 2: source.
Field 3: is
-- Line 2 --
Field 1: file
Field 2: end.
環境
OS:Linux
コンパイラ名とバージョン:gcc
言語:C
期限: 5/25
0072デフォルトの名無しさん
2006/05/21(日) 10:16:59いい加減うざい。死ね
0073>>22
2006/05/21(日) 11:43:09ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1921.txt
1ラインあたりの最大文字数は BUFFER_SIZE-1 な。
0074>>42
2006/05/21(日) 11:46:31ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1921.txt
1ラインあたりの最大文字数は BUFFER_SIZE-1 な。
0075デフォルトの名無しさん
2006/05/21(日) 12:04:29(1) 次の仕様の磁気ディスクにおいて、必要とされるシリンダ数を求め
よ。ここでブロック間隔(IBG: Inter Block Gap)はブロックとブロッ
クの間に存在し、ブロックの情報を記録する領域である。またブロッ
ク化因数とは一つのブロックを構成するレコードの数である。
1シリンダ当たりのトラック数 19 トラック
1トラック当たりのバイト数 19,000 バイト
1レコードのバイト数 250 バイト
ブロック間隔 150 バイト
レコード件数 50,000 件
ブロック化因数 6
(2) 次の仕様の磁気ディスクの1ブロックアクセス時間を求めよ。ここで
rpm(revolution per second)は一分当たりの回転数である。
平均位置決め時間 20 ミリ秒
1トラック当たりのバイト数 20,000 バイト
ディスク回転速度 6,000 rpm
1レコードのバイト数 250 バイト
ブロック間隔 150 バイト
ブロック化因数 6
0076デフォルトの名無しさん
2006/05/21(日) 12:42:09スレ違い。いや、鼬害か。
0077デフォルトの名無しさん
2006/05/21(日) 12:46:10基本情報技術者スレ行けば教えてもらえるかも
0078デフォルトの名無しさん
2006/05/21(日) 12:57:58[2]
double型の2数a,bを入力してaをbで割った商の
小数点以下だけを表示させるプログラムを作りなさい。
ただし、while構文を使ってa,bを入力させ続けるものとします。
[3]C [4]5/22 [5]制限はありません。
全く手のつけようがありません。
よろしくお願いいたします。
0079デフォルトの名無しさん
2006/05/21(日) 13:19:45#include <stdio.h>
#include <math.h>
int main()
{
int a,b;
double c;
while(1) {
printf("a>");
scanf("%d", &a);
printf("b>");
scanf("%d",&b);
printf("%f\n", modf((double)a/b,&c));
}
return 0;
}
0080>>78
2006/05/21(日) 13:21:13#include <string.h>
int main(int argc, char* argv[])
{
while(1){
char buff[256];
double a;
double b;
scanf("%lf",&a);
scanf("%lf",&b);
sprintf(buff,"%lf",a/b);
printf("%s\n",strchr(buff,'.'));
}
return 0;
}
008178
2006/05/21(日) 13:29:24後は独力で仕組みを理解するようにがんばります。
また分からなくなったらお願いします。
0082デフォルトの名無しさん
2006/05/21(日) 13:49:06この時期のこの程度の問題に、こんな答えを提出したら教師に目をつけられるだろうな
これからも頑張れよ
0083デフォルトの名無しさん
2006/05/21(日) 14:13:13[2]標準入力から「id, 名前, 年月日, 住所」のようなコンマ区切り形式(CSV形式)の名簿データ
を受け付けて項目を切り出してメモリ中に格納せよ。
また、% で始まる入力行をコマンド入力として解釈し、格納されたデータ表示や整列せよ。
実装すべきコマンドを以下に示す。
%Q: 終了
%C: 登録内容のチェック
%P n: 先頭から n 件表示(n=0: 全件, nが負: 後ろからn件)
入力する名簿データのCSV入力形式は以下の通りである。
5100001,Bower Primary School,1999-2-5,Canisbay Wick,019073 2397
5102673,The Bridge,1845-11-2,Bowermadden Bower Caithness,01955 69322
5126377,Canisbay Primary School,1938-8-3,Castletown Thurso,01847 2812 2821
5177777,Castletown Primary School,2006-5-10,Seafield Road Longman Inverness,SEN Unit
各行における項目には以下の意味がある。
ID:32bit整数 学校名:70bytes 設立年月日:struct date 所在地:70bytes 備考データ:任意長
上記を格納するためのデータ構造としては構造体struct profile を定義して、1行を1つの構造体に変換して
格納することが自然である。上記のn bytesはnバイトのchar配列に格納可能であることを意味する。
設立年月日はstruct dateを定義して用いればよい。
また、入力行中の','は、項目切りの意味でしか出現しないものとし、項目値としては考慮せずともよい。
008483
2006/05/21(日) 14:13:56各コマンドは0個以上の引数を持ちコマンド名と引数の間にはただ1つの空白が存在する。
例
%Q: プログラムの終了
%C: メモリ中に保持しているデータの項目数など、要約した情報を出力に出力する。最低限項目数を出力する。
出力例: 285 profiles
%P: メモリ中に保持しているデータを読み易い形式に変換して標準出力する。
引数nは先頭からn個のデータを出力することを意味している。ただし、nが0の場合は、保持している全項目、
負の数の場合は登録されている項目の後ろからn個の項目を正順で出力する。
例えば0〜99番目までの100人分のデータが登録されている場合、
%P 8: 0番目→7番目の順で表示
%P -10: 90番目→99番目の順で表示
のようになる。出力形式の例を以下に示す。
出力例: Id: 5100001
Name: Bower Primary School
Date: 1999/2/5
Addr: Canisbay Wick
Misc: 019073 2397
Id: 5102673
Name: The Bridge
Date: 1845/11/2
Addr: Bowermadden Bower Caithness
Misc: 01955 69322
0085デフォルトの名無しさん
2006/05/21(日) 14:30:27CSVをstdinから受け付けてコマンドもstdinからってなんかおかしくないか?
データとコマンドを同一ファイルに入れてバッチ処理もどきってなら分からないでも無いが
普通は、引数としてデータファイル名を受け取って、コマンドはstdinからだろ
008683
2006/05/21(日) 14:40:111.CSVデータは、配列などを使って1000件以上登録できるようにすること。
2.CSVデータの保存には、構造体struct profile及びstruct dateを定義してそれを用いること。
3.通常、画面出力には、標準出力と標準エラーによって行われる。それらを区別して、
本来のコマンドの実行結果出力には不必要なエラーや警告は標準エラー出力に出力すること。
上記用件の中には、演習で作成するプログラムであるがゆえの要件も含んでいる。また前節までに述べた
プログラムの仕様には概要であり、要求される最低限の仕様であるので詳細について言及されていない。
例えば、登録するデータが規定の数を超えた場合の動作や、データとして不正な値を入力した時の
動作などについては規定されてない。それらの場合における動作の詳細は、各人で作成して実装せよ。
[3]環境
[3.1]unix
[3.2]gcc 3.4
[3.3]C
[4]2006年5月23日
[5]特になし
以上です。よろしくお願いします。
0087デフォルトの名無しさん
2006/05/21(日) 16:10:31[2] 問題文(含コード&リンク):
テキストファイル(英文)を入力してさまざまな処理を行う。
1、ひとつの英単語が2行に渡らないように出力する。
2、禁則処理…「.」「,」「?」「…」などを行頭に置かない。「(」などを行末に置かない。
[3] 環境
[3.1] unix
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] c
[4] 期限:5/22
0088デフォルトの名無しさん
2006/05/21(日) 16:13:51CRCの計算プログラムが以下のようにして与えられているのですが
意味が全く分かりません。
なぜこれでCRC値が求められるのでしょうか、どなたかご説明お願い致します<(_ _)>
===================================================
#define CRCPOLY2 0xEDB88320UL /* 左右逆転 */
typedef unsigned char byte;
unsigned long crc(int n, byte c[])
{
unsigned int i, j;
unsigned long r;
r = 0xFFFFFFFFUL;
for (i = 0; i < n; i++) {
r ^= c[i];
for (j = 0; j < CHAR_BIT; j++)
if (r & 1) r = (r >> 1) ^ CRCPOLY2;
else r >>= 1;
}
return r ^ 0xFFFFFFFFUL;
}
===================================================
0089デフォルトの名無しさん
2006/05/21(日) 16:34:54テキストファイルが「.」「,」「?」で始まる場合、「(」で終わる場合はないと判断。
#include<stdio.h>
int main(void){
int c;
while((c = getchar()) != EOF) if(c != '\n') putchar(c);
return 0;
}
0091デフォルトの名無しさん
2006/05/21(日) 17:15:59そういうものだから。としか言い様がない
お前さんの質問は、なんでMP3ファイルには音が保存できるんですか?ってのと同列
そういう仕様だからとしか答えようがないだろ
009288です
2006/05/21(日) 19:32:19ご回答ありがとうございます!
仕様なんですか・・・。
ソースはネットで探して見つけたものだったんですが、
中身も理解して無いと提出は出来ないと思って教えていただこうと思ったのですが・・・。
0093デフォルトの名無しさん
2006/05/21(日) 19:41:22宿題なら、教科書に載っているだろ。
もしWebで探せって宿題なら中身は関係ないだろうし。
そもそも、ここは宿題の解説をするスレじゃないんだからスレ違いだ。
0094デフォルトの名無しさん
2006/05/21(日) 19:49:55文字の表示ってのはペイントで言うところのテキストみたいなの?
それとも、あらかじめ決めておいた文字列を表示するの?
0095デフォルトの名無しさん
2006/05/21(日) 20:01:42スレ違いだがついでだから言っておく
お前さんは、木という漢字を書けという問題に
なんで木は木という漢字になったのかまで理解するのか?
0096デフォルトの名無しさん
2006/05/21(日) 20:03:150097デフォルトの名無しさん
2006/05/21(日) 20:04:06まるで木を鼻で括ったような回答だな。
0098デフォルトの名無しさん
2006/05/21(日) 20:11:19009987
2006/05/21(日) 21:08:04え?
0101デフォルトの名無しさん
2006/05/21(日) 22:16:26if(event->x < Menu_width && event->y < Menu_height){ XCloseDisplay(display); exit(1); }
if(event->x < Menu_width && event->y < Menu_height * 2){ mode = 1; }
else if(event->x < Menu_width && event->y < Menu_height * 3){ mode = 2; }
else if(event->x < Menu_width && event->y < Menu_height * 4){ mode = 3; m3f = 0; }
if(event->window == window){ pX = event->x; pY = event->y; }
if(mode == 3){ if(m3f == 0){ m3f = 1; x0 = event->x; y0 = event->y; }
else{ m3f = 0; XDrawLine(display, window, context, x0, y0, event->x, event->y); } } }
void HitKey(XKeyEvent *event){
char ch;
KeySym keysym;
if(mode == 2){ XLookupString(event, &ch, 1, &keysym, NULL);
XDrawString(display, window, context, event->x, event->y, &ch, 1);
mode = 0; }
else{ XLookupString(event, &ch, 1, &keysym, NULL); if(ch == 'e'){ XCloseDisplay(display); exit(1); } } }
>>41
要求されてるものと多少違うかも試練が…
0102デフォルトの名無しさん
2006/05/21(日) 22:22:23Xプログラマカコ(・∀・)イイ!!
0103デフォルトの名無しさん
2006/05/21(日) 22:26:46よく分からんが乙
X Window SystemでのGUIプログラミングってW32APIと似たような物なのか?
0104billy
2006/05/21(日) 22:30:49表示するのは
-- Line 1 --
Field 1: This
Field 2: source.
Field 3: is
-- Line 2 --
Field 1: file
Field 2: end.
だけでいいんだけどな
0105デフォルトの名無しさん
2006/05/21(日) 22:38:07そうそうそんなかんじ
たまたま去年似たような課題やったからサルベージしただけだけどなー
0106C初心者
2006/05/21(日) 23:06:44い。(例: 3661 秒! 1 時間1 分1 秒)
os winxp
コンパイラ gcc
言語 c
期限 5月22日朝まで
0107デフォルトの名無しさん
2006/05/21(日) 23:14:12GTK使うならまだしも
0108デフォルトの名無しさん
2006/05/21(日) 23:14:190109デフォルトの名無しさん
2006/05/21(日) 23:15:590110デフォルトの名無しさん
2006/05/21(日) 23:18:16[2] 問題文(含コード&リンク): 実数がどのように保存されているかを表示する。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C++
[4] 期限: 5/22 17:00
[5] ビットシフト、int のポインタ、論理演算
よろしくお願いします
0111デフォルトの名無しさん
2006/05/21(日) 23:23:36#include <stdio.h>
int input, hour, min, sec;
scanf("%d", &input);
hour = input / 3600;
min = input % 3600 / 60;
sec = input % 3600 % 60;
printf("%d時間%d分%d秒\n", hour, min, sec);
return 0;
}
0112デフォルトの名無しさん
2006/05/21(日) 23:24:39011341
2006/05/21(日) 23:25:01ありがとうございます。
ですが、
C:13: warning: built-in-function 'y0' declared as non-function
C:93: error: parse error before "EventLoop"
というエラーが出てしまいます。
ろだに教えていただいた内容を入れて、少し編集したファイルをアップしたので
ちょっと見てみてください
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1922.txt
よろしくお願いいたします。
011483ですが
2006/05/21(日) 23:41:56自分で未完成な物を作成しましたが、どこをどう訂正すれば良いでしょうか?
どなたかアドバイスをお願いします。
0115デフォルトの名無しさん
2006/05/21(日) 23:53:48そのエラーは>101のせいじゃ無いと思うぞ。
0116デフォルトの名無しさん
2006/05/21(日) 23:56:13ちょっとまて、俺にデバッグやらせるつもりかwww
0117デフォルトの名無しさん
2006/05/22(月) 00:02:44#include <stdio.h>
main()
{
float f;
int i;
scanf("%f", &f);
for ( i = 31; i >= 0; --i ) printf("%d", *(int *)&f & 1 << i ? 1 : 0);
}
0118デフォルトの名無しさん
2006/05/22(月) 00:12:22ざっと見たけどほとんどできてんじゃん。
後command_checkとcommand_print作ったら終わりだろ。ガンガレ。
しいて言うなら、printfのかわりにfputs使うぐらいか。
011941
2006/05/22(月) 00:14:45いや、自分が理解できてないから悪いんですけど
101さんのせいとは思ってないです
ただどうすればよいのかなと思って
>>116
デバッグ、、、確かに今気づいたらそうですねw
申し訳ないです
すみません、もうちょっと自分で考えてみます
0120デフォルトの名無しさん
2006/05/22(月) 00:16:27>自分で未完成な物を作成しましたが、どこをどう訂正すれば良いでしょうか?
くだらねー嘘つくな
0121デフォルトの名無しさん
2006/05/22(月) 00:16:32たぶんだけどね、
EventLoopのところをよーく見ると分かると思うよ
0122デフォルトの名無しさん
2006/05/22(月) 00:24:15ありがとうございました〜。
0123デフォルトの名無しさん
2006/05/22(月) 00:27:18確かにあそこまで出来て残りが出来ないはずは無いな。
0124billy
2006/05/22(月) 00:42:48http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1921.txt
表示するのは
-- Line 1 --
Field 1: This
Field 2: source.
Field 3: is
-- Line 2 --
Field 1: file
Field 2: end.
だけでいいんだけど
どうすればいいのかな
0125デフォルトの名無しさん
2006/05/22(月) 00:47:00[2] 問題文
ガウスの消去法によって次の連立一次方程式を解け。
( 1,0 2,0 3,0 ) ( 1,1 )
( 2,0 4,0 5,0 ) x = ( 2,2 )
( 3,0 5,0 6,0 ) ( 3,3 )
[3] 環境
[3.1] OS: Linuxです。
[3.2] コンパイラ名とバージョン: gccです。バージョンまでは分かりません。
[3.3] 言語:C言語
[4] 期限: 23日までです。
[5] その他の制限:CとC++を習いました。
ヒントが与えられたので下に書きます。
0126デフォルトの名無しさん
2006/05/22(月) 00:50:180127125
2006/05/22(月) 00:50:28main()
{
int N,IERR;
double *a,*b,*x;
/***ステップ1 データの入力***/
printf("ガウスの消去法によるAx=b(A:n*n x,b:n*1)の計算\n""n=");
scan("%d,&N");
a=(double *)calloc(N*N,sizeof(double));
b=(double *)calloc(N,sizeof(double));
x=(double *)calloc(N,sizeof(double));
if(a==NULL||b==NULL||x==NULL)puts("メモリ不足"),exit(1);
S_INMG(a,N,N,"a");
S_INMG(b,N,1,"b");
0128125
2006/05/22(月) 00:51:02IERR=S_GAUS(x,a,b,N);
/***ステップ3 計算結果の表示***/
if(IERR)
printf("不足または不能\n");
else
S_OUTM(x,N,1,"解 x");
}
/*<ガウスの消去法の関数>*/
int S_GAUS(double x[],double a[],double b[],intN)
{
int i,j,k;
double p;
0129125
2006/05/22(月) 00:51:41for(k=0;k<N-1;k++){
if(S_PIVO(a,&j,N,k)!=0)return 1;
if(j!=k){
p=b[j];
b[j]=b[k];
b[k]=p;
}
for(i=k+1;i<N;i++){
p=a[i*N+k]/a[k*N+k];
for(j=k+1;j<N;j++) a[i*N+j]=a[i*N+j]-p*a[k*N+j];
}
}
/***ステップ2 後退代入***/
for(k=N-1;k>=0;k--){
if(fabs(a[k*N+k])<=e_eps)return 1;
p=0.0;
for(j=k+1;j<N;j++)p+=a[k*N+j]*x[j];
x[k]=(b[k]-p)/a[k*N+k];
}
return 0;
}
0130125
2006/05/22(月) 00:52:13int S_PIVO(double *a,int *M,int N,int k)
{
int i,j;
double d,tmp;
/***ステップ1 初期設定***/
*M = k;
d=fabs(a[k*N+k]);
/***ステップ2 ピボットの検索***/
for(i=k+1;i<N;i++){
if(fabs(a[N*i+k])>d){
*M = i;
d=fabs(a[N*i+k]);
}
}
/***異常処理***/
if(fabs(d)<=e_eps)return 1;
if(*M==k)return 0;
0131125
2006/05/22(月) 00:53:49for(i=k;i<N;i++){
tmp=a[k*N+i];
a[N*k+i]=a[N*(*M)+i];
a[N*(*M)+i]=tmp;
}
return 0;
}
/*<行列のキー入力関数>*/
void S_INMG(double a[],int N,int M,char NAME[])
{
int i,j;
for(i=0;i<N;i++){
for(j=0;j<M;j++){
printf("\x1b[%dC%s%d%d=]",j*12,NAME,i+1,j+1);
scanf("%1f",&a[i*M+j]);
printf("\x1bM");
}
printf("\n");
}
}
0132デフォルトの名無しさん
2006/05/22(月) 00:54:52http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0134デフォルトの名無しさん
2006/05/22(月) 01:00:11[2] 問題文
ガウスの消去法によって次の連立一次方程式を解け。
( 1,0 2,0 3,0 ) ( 1,1 )
( 2,0 4,0 5,0 ) x = ( 2,2 )
( 3,0 5,0 6,0 ) ( 3,3 )
行列式です。分かり難くて申し訳ありません。
[3] 環境
[3.1] OS: Linuxです。
[3.2] コンパイラ名とバージョン: gccです。バージョンまでは分かりません。
[3.3] 言語:C言語
[4] 期限: 23日までです。
[5] その他の制限:CとC++を習いました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1923.txt
がヒントのプログラムです。
宜しくお願いします。
0136デフォルトの名無しさん
2006/05/22(月) 01:36:11ヒントをちょっと書き換えるだけで計算できるんだけど…
0137デフォルトの名無しさん
2006/05/22(月) 01:54:56scanf("%1f"とかを修正したら動く。どういう事だ?
0138デフォルトの名無しさん
2006/05/22(月) 02:03:51>>137
当方全然分かりません…
修正したプログラムを教えて頂けないでしょうか。
0139デフォルトの名無しさん
2006/05/22(月) 07:55:00型不適合のWarnが出るはずだが
>>105
スレ違いなんでスルーしてもらって構わないが、
もしよければX WindowでのGUIのいいページがあったら紹介してもらえないだろうか?
0140灰色の幽霊
2006/05/22(月) 10:42:10[2]
(1)
標準入力から入力された文字が小文字ならば大文字に、大文字ならば小文字に
変換し、それ以外ならばそのまま標準出力に出力するプログラムを作成せよ。
ただし、マクロ置換を用いて一文字ずつ文字の変換を行うプログラムとして
実現せよ。
(2)
標準入力から数行にわたるテキストファイル(1バイト文字のみからなる
もの)を読み込み、同一内容の行(空行を含む)が続いた場合には、それ
を一行にまとめて標準出力に出力するプログラムを作成せよ。
例えば、
main()
{
printf("a\n");
printf("a\n");
printf("b\n");
printf("c\n");
printf("c\n");
printf("c\n");
}
の場合、下記のように出力するプログラムを作成せよ。
main()
{
printf("a\n");
printf("b\n");
printf("c\n");
}
[3]unix,gcc,C [4]5/24 [5]特に制限はありません
プログラムに精通した皆さん、よろしくお願いします
0141灰色の幽霊
2006/05/22(月) 10:43:14[2](3)
char型配列として定義された任意の文字列に対し、下記の例のように
先頭から1文字ずつ文字数を増やしながら行を変えて表示し、
最終行で文字列全体を表示するような関数
incremental_string_print(char *x)
を作成せよ。関数内部ではchar型ポインタをインクリメントしながら
1文字ずつ putchar() を用いて出力せよ。
(表示例)
O
Os
Osa
Osak
Osaka
Osaka
この関数は、例えば、以下のような利用の仕方を想定している。
(キーボードから入力された文字列(例えば Osaka)を
上記の表示例のように表示する)
main()
{
char s[100];
fgets(s, sizeof(s), stdin);
incremental_string_print(s);
}
[3]unix,gcc ,C [4]5/24 [5]制限はありません
よろしくお願いします。
0142デフォルトの名無しさん
2006/05/22(月) 11:57:47#include <stdio.h>
#include <ctype.h>
#define CONV(x) ( isupper(x) ? tolower(x) : toupper(x) )
int main(void)
{
int ch;
ch = getchar();
ch = CONV(ch);
printf("%c\n", ch);
return 0;
}
文句は一切受け付けない。コンパイル通るかもシラネ
0143デフォルトの名無しさん
2006/05/22(月) 14:00:36[2] 成績、合計点の並び替え
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: visual c++
[3.3] 言語 C
[4] 期限: 今日の5時まで
[5] その他の制限:
成績については自分で並び変える事ができたのですが、合計点が並び替えできません。
↓
0144デフォルトの名無しさん
2006/05/22(月) 14:01:27#include<stdio.h>
#define N 15 /*データの数*/
int main (void)
{
int i,j,temp;
int d[5][N]={{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}, /*番号*/
{17,38,100,95,23,62,77,45,69,81,83,51,42,36,60}, /*数学*/
{43,39,86,88,52,49,80,25,73,77,64,47,62,50,76}, /*理科*/
{30,55,58,63,72,58,84,62,48,95,55,47,85,64,38}, /*英語*/
{0}}; /*合計点*/
0145デフォルトの名無しさん
2006/05/22(月) 14:03:02for(i=0; i<N; i++){
d[4][i]+=d[1][i];
d[4][i]+=d[2][i];
d[4][i]+=d[3][i];
}
/*成績降順sorting*/
for(i=0; i<N-1; i++){
for(j=i+1; j<N; j++)
if(d[4][i]<d[4][j]){
temp=d[4][i];
d[4][i]=d[4][j];
d[4][j]=temp;
}
}
/*番号降順sorting*/
for(i=0; i<N-1; i++){
for(j=i+1; j<N; j++)
if(d[4][i]<d[4][j]){
temp=d[0][i];
d[0][i]=d[0][j];
d[0][j]=temp;
}
}
/*出力*/
for(i=0; i<N; i++)
printf("番号%6d 合計点%6d\n",d[0][i],d[4][i]);
return(0);
}
0146デフォルトの名無しさん
2006/05/22(月) 14:34:04#include<stdio.h>
#define change(dat) data[dat]<0 ? dat : data[dat]
int main(void){
int data[256];
int c;
for(c=0;c<=255;++c) data[c] = -1;
for(c=0x41;c<=0x5a;++c){
data[c] = c | 32;
data[32 | c] = c;
}
while((c = getchar()) != EOF) putchar(change(c)); //マクロ置換を用いて一文字ずつ文字の変換
return 0;
}
0147デフォルトの名無しさん
2006/05/22(月) 14:35:12#include<stdio.h>
int main(void){
char *s, *t;
int c = 0;
unsigned char data[2][256];
int h[2] = {-1,-1};
int i = 0;
while (gets(data[i]) != NULL){
h[i] = 0;
for(s = data[i];*s;s++) h[i] = h[i] * 137 + *s;
h[i] %= 1987;
c = (h[i] != h[i^1]);
if(!c) for(s=data[i],t=data[i^1];*s && *t;s++,t++) if(*s != *t){ c = 1; break; }
if(c){
puts(data[i]);
i ^= 1;
}
}
return 0;
}
0148デフォルトの名無しさん
2006/05/22(月) 14:36:01#include<stdio.h>
void incremental_string_print(char *x){
char *s[100] = {0};
int i,j;
for(i=0;i<100 && *x;++i){
if(*x == '\n') break;
s[i] = x++; //char型ポインタをインクリメント
for(j=0;j<100 && s[j];++j) putchar(*s[j]); //1文字ずつ putchar()で出力
putchar('\n');
}
}
int main(void){
char s[100];
fgets(s, sizeof(s), stdin);
incremental_string_print(s);
return 0;
}
0149デフォルトの名無しさん
2006/05/22(月) 14:39:27マクロ
#define ISUP(A)((0x40)<(A)&&(0x5b)>(A))?((A + 0x20)):(A)//小文字を大文字
#define ISLOW(A) ((A)<(0x7b))&&((A)>(0x60))?(A - 0x20):(A)//大文字を小文字
0150143-145
2006/05/22(月) 15:03:51成績の並び替えを行うと同時に番号も並び変えるということです。
誰か分かる方よろしくお願いします
0151デフォルトの名無しさん
NGNG>を作成せよ。関数内部ではchar型ポインタをインクリメントしながら
>1文字ずつ putchar() を用いて出力せよ。
すげえ無意味な条件のような気もするが。
void incremental_string_print(char* x)
{
int i, j, len = strlen(x);
char* s;
for (i=0; i<len; i++) {
s = x;
for (j=0; j<i; j++) {
putchar(*s);
s++;
}
putchar('\n');
}
puts(x);
}
0152デフォルトの名無しさん
2006/05/22(月) 17:30:48[2] 問題文(含コード&リンク):<通常課題> 変数nameには名前変数amountには貯金額(最初は0円)が入っている。以下のように3回貯金できるプログラムを作成せよ。ただし、変数はname,amount以外には1つしか使えない
名前を入力してください:michinobu
michinobu さん.
現在の貯金額は,0円です.
今回はいくら貯金しますか?(単位:千円):10.5
michinobuさん.
現在の貯金額は,10500円です.
今回はいくら貯金しますか?(単位:千円):0.03
michinobuさん
現在の貯金額は、10530円です.
今回はいくら貯金しますか?(単位:千円):100.0
michinobuさん.
全部で110530円貯まりました.
よくがんばりました.
<応用課題>通常課題を拡張して,金額を表示する際に,1万円の桁と千円の桁の間に「,」を入れる(例:11,0530円)ようにせよ.
[3] 環境
[3.1] OS: (Windows
[3.2] コンパイラ名とバージョン: Visual Studio.NET2003
[3.3] 言語: C++
[4] 期限: 5月26まで
[5] その他の制限: まだ初期。関数printf,scanfの分野 。算術演算子、代入演算子など
応用の方がいまいちわかりません。よろしくお願いします。
0153デフォルトの名無しさん
2006/05/22(月) 17:42:58前スレにあったやつ
#include <stdio.h>
char name[256] = {0};
int amount = 0;
void input(void){
float f;
printf("%sさん\n現在の貯金額は,%d円です. \n今回はいくら貯金しますか?(単位:千円):",name,amount);
scanf("%f",&f);
amount += (int)(f*1000);
}
int main(){
printf("名前を入力してください:");
scanf("%s",name);
input();
input();
input();
printf("%sさん.\n全部で%d円貯まりました.\nよくがんばりました.\n",name,amount);
return 0;
}
応用のほうは
printf("%d,%04d\n", amount/10000, amount%10000);
な感じでうまくいくんじゃない、試してないけど
0154デフォルトの名無しさん
2006/05/22(月) 17:58:25ありがとうございます。一度試してみます。
0156デフォルトの名無しさん
2006/05/22(月) 19:17:24105じゃないけどGTKとかどうよ
http://www.gnome.gr.jp/docs/gtk+-2.0.x-tut/gtk-tut.html
0157デフォルトの名無しさん
2006/05/22(月) 20:21:56>>143
テンポラリ変数を二つ使って、成績をキーにして、
番号と成績を同時にひっくり返せばいいだよ。単純なことアル。
for(i=0; i<N-1; i++){
for(j=i+1; j<N; j++)
if(d[4][i]<d[4][j]){
temp1=d[4][i];
temp2 = d[0][i];
d[4][i]=d[4][j];
d[0][i] = d[0][j];
d[4][j]=temp1;
d[0][j] = temp2;
}
}
こんな感じでどうよ?
それにしてもいろいろ問題あるソースじゃな。
0158デフォルトの名無しさん
2006/05/22(月) 20:36:52f*1000のところでエラーがでてしまったんですけど、他に方法あります?
引数を取り込む関数には評価されません。と出ました
0159デフォルトの名無しさん
2006/05/22(月) 20:54:570160billy
2006/05/22(月) 21:18:22単語に分けた上で、第2引数と第3引数のフィールドを入れ替えて出力するプログラムを作成する。
ただし、入れ替えるように指定されたフィールドの一方もしくは両方が存在しなかった場合は
入れ替えを行わないようにする。
実行例:
%cat source
This,is,source.
file,end.
%gcc -o fieldswap kadai.c
%./fieldswap source 2 3
-- Line 1 --
Field 1: This
Field 2: source.
Field 3: is
-- Line 2 --
Field 1: file
Field 2: end.
環境
OS:Linux
コンパイラ名とバージョン:gcc
言語:C
期限: 5/25
0161デフォルトの名無しさん
2006/05/22(月) 21:36:3373 名前:>>22[] 投稿日:2006/05/21(日) 11:43:09
>>22
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1921.txt
1ラインあたりの最大文字数は BUFFER_SIZE-1 な。
74 名前:>>42[sage] 投稿日:2006/05/21(日) 11:46:31
>>71
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1921.txt
1ラインあたりの最大文字数は BUFFER_SIZE-1 な。
0162デフォルトの名無しさん
2006/05/22(月) 22:02:40[2] 問題文(含コード&リンク):電気回路に使われる抵抗の抵抗値は、色と数字が表1のように対応付けられたカラーコード3つで表示されている。
表1
黒 black 0
茶 brown 1
赤 red 2
橙 orange 3
黄 yellow 4
緑 green 5
青 blue 6
紫 purple 7
灰 gray 8
白 white 9
1番めと2番目の色で2桁の数字を表し、3番目の色で10の何乗倍かを表している。例えば、赤(1)黒(0)橙(3)の順に並んでいれば、20×10^3=20000オームを表している。抵抗の3つのカラーコードから抵抗値を計算するプログラムを作りなさい。
*キーボードから3つのカラーコードを入れるとそのコードに対応する抵抗値を出力すること
*キーボードの入力は、表1にまとめられたような色を意味する英単語の文字列が入力されると期待してよい
*出力は整数で表示し、最後に単位「ohm」をつけること。表1に上げられる文字列以外の入力があったときは「Error!」を表示する。
ヒント
*べき乗を求める場合、プログラムの1番上に「#include&Itmath.h>」を入れる。そうするとpow(n,m)を使うことができる。返り値はn^mである
*コンパイルをするとき、-lmをつける。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 明日の午前3時頃まで
手の付けようがなくて困っています。どなたかよろしくお願いします。
0163デフォルトの名無しさん
2006/05/22(月) 22:21:260164デフォルトの名無しさん
2006/05/22(月) 22:27:55[2] 問題文(含コード&リンク):ファイルを読み込ませ文中の文字の数がそれぞれ何個あるか表示するプログラム。
a:○個、あ:○個のように。
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: 5/23
よろしくお願いします
0165デフォルトの名無しさん
2006/05/22(月) 22:38:55#include <stdio.h>
#include <string.h>
#include <math.h>
enum clr { BLK, BRN, RED, ORG, YLW, GRN, BLU, PRP, GRY, WHT };
struct _ClrList{
char *s;
enum clr c;
};
struct _ClrList clrlist[]={
{"black", BLK},{"brown", BRN},{"red", RED},{"orange", ORG},{"yellow", YLW},
{"green", GRN},{"blue", BLU},{"purple", PRP},{"gray", GRY},{"white", WHT}
};
int searchC(char *s){
int i;
for(i = 0;i < (sizeof(clrlist) / sizeof(clrlist[0])); i++)
if(strcmp(s, clrlist[i].s) == 0)return ((int)clrlist[i].c);
return -1;
}
int main(){
int a[3], d, i;
char buf[255], c[3][10];
fgets(buf, sizeof(buf) - 1, stdin);
sscanf(buf, "%s %s %s", c[0], c[1], c[2]);
for(i = 0;i < 3; i++)if((a[i] = searchC(c[i])) == -1){puts("Error!");return 1;}
printf("%d ohm\n", (a[0] * 10 + a[1]) * (int)pow(10.0, a[2]));
return 0;
}
こんなのしか思いつかんかった
0166デフォルトの名無しさん
2006/05/22(月) 22:42:25[2] 問題文(含コード&リンク):シーザー暗号のプログラムで、平文と何文字ずらすかキーボードから入力すると暗号文を表示する。
変換する文字はアルファベット大文字だけで、ずらす文字数は0〜25字が入力されると仮定する。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等)
[3.3] 言語: C
[4] 期限: 明日朝7時まで
どなたか教えてください。お願いします。
0167デフォルトの名無しさん
2006/05/22(月) 22:57:46#include <stdio.h>
int main()
{
int i, n;
char buf[255];
puts("平文");
scanf("%s", buf);
puts("ずらす");
scanf("%d", &n);
for(i = 0; buf[i] != NULL; i++)if((buf[i] += n) > 'Z')buf[i] = buf[i] - 'Z' + 'A' - 1;
puts("暗号文");
puts(buf);
return 0;
}
至極、適当
0168デフォルトの名無しさん
2006/05/22(月) 23:01:36ありがとうございます。
小文字出力したいときはどのようにプログラムを変えたらいいのですか?
例えば、red blackなどで実行したいのですが。
0169デフォルトの名無しさん
2006/05/22(月) 23:11:160170>>165
2006/05/22(月) 23:13:28http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1924.txt
遅かったか。
0171170
2006/05/22(月) 23:14:340172デフォルトの名無しさん
2006/05/22(月) 23:24:37[2] 問題文(含コード&リンク):
長くなってしまったので以下にアップロードさせていただきました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1927.txt
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: Cygwin
[3.3] 言語: C++
[4] 期限: [2006年5月24日10:00まで]
[5] その他の制限: 問題文に従うこと
途中まで書いたのですが、長さに混乱してしまいにっちのさっちも行かない状態になってしまいました。
どなたかご教示お願いいたします。
0173166
2006/05/22(月) 23:25:37なるほど!やってみます。ありがとうございました。
0174デフォルトの名無しさん
2006/05/22(月) 23:27:11できました!!ありがとうございます。
0176デフォルトの名無しさん
2006/05/22(月) 23:54:54つーかテストプログラムのコンパイルもしてないってどうよ。
0177デフォルトの名無しさん
2006/05/22(月) 23:57:070179デフォルトの名無しさん
2006/05/22(月) 23:58:430180デフォルトの名無しさん
2006/05/23(火) 00:25:57class Setの宣言部分は全部教師が書いたのか?
なんか間違いが散見されるが・・・
しかも明らかにヘッダとして記述するファイルにusing namespace std;書いてるし。
つうかね、学生でこれキッチリ書ける人いたら授業いらんと思う。
0181デフォルトの名無しさん
2006/05/23(火) 01:35:24>>172のをやってみたけど思ったように動かNEEEE
0182デフォルトの名無しさん
2006/05/23(火) 02:19:421,授業単元 基礎プログラミング
2,問題文
(1)キーボードで二つの整数を入力し、それらの和と差を求め、表示するプログラムを作成せよ。
和と差を計算する部分をvoid keisan()のように関数にし、計算した結果をmain関数で表示せよ。
ただし、関数keisan()の型名がvoidであることと、引数をもたないことに注意せよ。
ヒント:外部変数を使う。
0183デフォルトの名無しさん
2006/05/23(火) 02:20:57実行結果を参照の上、関数void printTable()を補足せよ。
#include<stdio.h>
int max=10;
void printTable(int m,int n)
{
/*この部分を補足せよ*/
}
int main(void)
{
int i,j;
for(i=0;i<max;i++)
for(j=0;i<max;j++)
printTable(i,j);
return 0;
}
[実行結果]
0 0 0 0 0 0 0 0 0 0
0 1 2 3 4 5 6 7 8 9
0 2 4 6 8 10 12 14 16 18
0 3 6 9 12 15 18 21 24 27
0 4 8 12 16 20 24 28 32 36
0 5 10 15 20 25 30 35 40 45
0 6 12 18 24 30 36 42 48 54
0 7 14 21 28 35 42 49 56 63
0 8 16 24 32 40 48 56 64 72
0 9 18 27 36 45 54 63 72 81
よろしくお願いします
0184デフォルトの名無しさん
2006/05/23(火) 02:26:03GTKか。名前は聞いたことあるが細かいことは知らなかったな
ちょっと見てみる、わざわざサンクス
0185デフォルトの名無しさん
2006/05/23(火) 03:06:29for(j=0;i<max;j++) //ナイス引っかけ
0186デフォルトの名無しさん
2006/05/23(火) 04:17:46ろだの使い方がわからなくて向こうにコメントつけてしもた
0187デフォルトの名無しさん
2006/05/23(火) 05:11:51#include <stdio.h>
int a,b,wa,sa;
void keisan()
{
wa=a+b;
sa=a-b;
}
int main()
{
scanf("%d",&a);
scanf("%d",&b);
keisan();
printf("%d\n%d\n",wa,sa);
return 0;
}
0188デフォルトの名無しさん
2006/05/23(火) 05:17:05void printTable(int m,int n)
{
printf("%2d ",m*n);
if (n==max-1)
printf("\n");
}
0189172
2006/05/23(火) 12:16:53クラス宣言の部分は全部書いてありました。
問い合わせたところ、間違いがあった場合直してもかまわないとのことです。
0190172
2006/05/23(火) 12:21:13ありがとうございます。
授業3回ごとに教師が変わるんですが、2人目の先生はちょっとアバウトみたいです。
授業以外の予備知識がまったく無いので困ってました。
0192デフォルトの名無しさん
2006/05/23(火) 16:21:52[2] 問題文(含コード&リンク):条件分岐(出力の制御)
西暦(1926年以降)を入力すると年号を表示するプログラミングを作成しなさい(例えば2000と入力すると平成12年と表示する)
西暦と年号の対応は次のとおり
平成:1989- 昭和:1926-1989
なお、1989年は平成1年とする(昭和63年としない)
[3] 環境
[3.1] OS: WinXPhome
[3.2] コンパイラ名とバージョン: 分かりません、lcc.batなるものを使ってコンパイルしてます
[3.3] 言語: 多分C?
[4] 期限: あと90分でできたら…
[5] その他の制限: 授業開始してまだ3〜4回目程度なので高度なことはしないと思いますが…
intとscanとかいうのを使うとは思うんですが、いまいち分からなくて
0193デフォルトの名無しさん
2006/05/23(火) 16:38:46# include <stdio.h>
int main(void)
{
int year;
scanf("%d", &year);
if(year >= 1989)
printf("平成%d年\n", year - 1988);
else
printf("昭和%d年\n", year - 1925);
return 0;
}
0194デフォルトの名無しさん
2006/05/23(火) 16:43:51素早いレスありがとうございます
あとはprintfでちょこちょこっといじってみます
0195デフォルトの名無しさん
2006/05/23(火) 16:49:04漏れはどうしても気になってしまう
0196デフォルトの名無しさん
2006/05/23(火) 17:17:39そんな流れでも無しに、更にお前の意見は誰も聞いてないよ。
0197デフォルトの名無しさん
2006/05/23(火) 17:22:59逝っておくがな、今まで俺に喧嘩を売ってきた香具師はな・・・
みな自信を付けて帰ってったぜ?
0198デフォルトの名無しさん
2006/05/23(火) 17:27:39[2] 問題文(含コード&リンク):再帰関数を利用して、フィボナッチ数列を生成するプログラムを作成せよ。
ただし、生成するフィボナッチ数列の要素数をキーボードから入力する。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:
[3.3] 言語:どちらでも可
[4] 期限:明日まで
[5] その他の制限:
初心者で 全く分からないので、お願いします!
0199billy
2006/05/23(火) 17:49:14[2] 問題文(含コード&リンク):
145614,Koichi Fujita,MUSIC
145615,Hitoshi Mori,READING
145616,Yutaka Mizuta,PROGRAMMING
というCSVファイルを作っておき
実行例:
%gcc -o retrieval retriveal.c
%./retrieval student.csv
Enter your question :
> 145615 name
The name of No. 145615 is "Hitoshi Mori".
Enter your question:
>
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年5月24日
[5] その他の制限: 構造体を使う
0200デフォルトの名無しさん
2006/05/23(火) 17:59:05俺は空白を入れないほうがよっぽど気になる。
0201デフォルトの名無しさん
2006/05/23(火) 18:09:12#include <stdio.h>
int f(int n){
int x;
if(n == 0) x = 0;
else if(n == 1) x = 1;
else x = f(n - 1) + f(n - 2);
return x;
}
int main(){
int n;
printf("要素数 = ");
scanf("%d", &n);
printf("%d : %d\n", n, f(n));
return 0;
}
0202緊急です!
2006/05/23(火) 18:12:27[2] 問題文:実数x、整数nを入力し、項数nの級数展開によりcosxを求めよ
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:Visual C++ 6.0
[3.3] 言語: C言語で
[4] 期限: 2006年5月24日11:30まで(明日の昼前までです・・)
[5] その他の制限: (まだ4回目で基本的なことしかやっていません。for文while文などでお願いします。。
0203デフォルトの名無しさん
2006/05/23(火) 18:15:31[2] 問題文:
最初に
1:sinwt
2:coswt
という画面を表示させて選んだ番号の三角関数の計算をさせるプログラムを
作りなさい
OS:WindowsXP
期限:明日まで
三角関数の計算はさせることができるので、
1:sinwt
2:coswt
という画面を表示させて、選んだ番号の計算をさせるところまでをお願いします
0204デフォルトの名無しさん
2006/05/23(火) 18:20:50#include <stdio.h>
int main()
{
char ch;
puts("1:sinwt");
puts("2:coswt");
ch = getchar();
switch(ch){
case '1':
//sinwt
break;
case '2':
//coswt
break;
}
return 0;
}
こんな感じ?
0205デフォルトの名無しさん
2006/05/23(火) 18:47:02ありがとうございます
なんとか、頑張ってみます
0206デフォルトの名無しさん
2006/05/23(火) 18:51:58getsでstrcmpでもいいんじゃないのかなとか思ったり
0207デフォルトの名無しさん
2006/05/23(火) 18:52:47#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct _data{int _no;char _name[20];char _hobby[20];};
int main(int argc, char *argv[]){
int i = 0, no, busy = 1;char buf[0xff], com[10];char *p;FILE *fp;struct _data data[10];
if((fp = fopen(argv[1], "r")) == NULL)return 1;
while(fgets(buf, sizeof(buf) - 1, fp) != NULL){
p = strtok( buf, "," );data[i]._no = atoi(p);
p = strtok(NULL,",");strcpy(data[i]._name, p);
p = strtok(NULL,",");strcpy(data[i]._hobby, p);
i++;
}
while(1){
puts("Enter your question :");fgets(buf, sizeof(buf) - 1, stdin);sscanf(buf, "%d %s", &no, com);
switch(com[0]){
case 'n':
if(strcmp(com, "name") != 0)break;
for(int j = 0; j < i; j++)if(no == data[j]._no)printf("the name of %d is \"%s\"\n", data[j]._no, data[j]._name);
break;
case 'h':
if(strcmp(com, "hobby") != 0)break;
for(int j = 0; j < i; j++)if(no == data[j]._no)printf("the hobby of %d is \"%s\"\n", data[j]._no, data[j]._hobby);
break;
}
}
fclose(fp);return 0;
}
0208デフォルトの名無しさん
2006/05/23(火) 19:03:59[2]問題文(含コード&リンク):
e=a+b*c+d;とe=(a+b)*c+d;は異なる。
前の式に演算子の優先順位や結合規則を考えて、あえてカッコをつけると
(e=((a+(b*c))+d));となる。
式e=d=a-b+c+b*(a+c)/a;
を実行した後のd,eの値を表示するプログラムを作成してください。
変数は全てint型で、a,b,cの初期値は、それぞれ10、20、30とする。
演算子の優先順位や結合規則を考えて、計算する順に全部あえてカッコをつけて下さい。
そしてカッコをつけないときと結果が同じになることを確認して下さい。
(注)カッコが多いと見づらくなるので、普通は必要のないカッコは書きません。
次のようにする。
a,b,cの初期値を設定してから
e=d=a-b+c+b*(a+c)/a;
printf("d=%d", "e=%d\n", d, e); ・・・�@
e=d=a-b+c+b*(a+c)/a; ・・・左の式に全部カッコをつける
printf("d=%d", "e=%d\n", d,e); ・・・�A
�@と�Aの結果が同じになることを確認してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0209デフォルトの名無しさん
2006/05/23(火) 19:13:40ただし小数の場合も含む。
↑この難問解けるやつはいるか?無理だろぉ!?
0210デフォルトの名無しさん
2006/05/23(火) 19:23:06int main(void){
int a,b,?;
for(a=1;a<=?;?){
for(b=1;b<=?;?){
d = a*b;
printf("%4d",?);
}
printf("?");
}
return(0);
}
0211210です
2006/05/23(火) 19:24:01#include <stdio.h>
int main(void){
int a,b,?;
for(a=1;a<=?;?){
for(b=1;b<=?;?){
d = a*b;
printf("%4d",?);
}
printf("?");
}
return(0);
}
0212若葉マーク
2006/05/23(火) 19:38:510213210です
2006/05/23(火) 19:40:300214デフォルトの名無しさん
2006/05/23(火) 19:46:15int main(void){
int a,b,d;
for(a=1;a<=9;a++){
for(b=1;b<=9;b++){
d = a*b;
printf("%4d",d);
}
printf("\n");
}
return(0);
}
0215209
2006/05/23(火) 19:56:150216デフォルトの名無しさん
2006/05/23(火) 19:58:17[2]問題文(含コード&リンク):
製品数(lot)と、そのうちの不良品数(substandard)を読み込み、良品が製品全体の何パーセント
(stdPercent)か計算し、表示して下さい。製品数(lot)と、その不良品数(substandard)はint型で、パーセント
(stdPercent)はdouble型で、表示は小数部2桁までとして下さい。
(double型の値を、少数第2位まで表示するには、printfの変換書式で、%.2fとする。)
(注)定数で、0はint型、0,0はdouble型になります。
この課題ではパーセント計算で100.0を使ってください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0217デフォルトの名無しさん
2006/05/23(火) 20:04:11学校で出された問題なんですが、全然分かりません。
C言語を習ってまだ1週間なのでドドド素人です。
助けてくださいm(_ _)m
入力ファイルから100個のデータを取り込み、その平均、分散、標準偏差を
求めよ。
さらにその結果を出力ファイルに格納するプログラムを作成せよ。
0218デフォルトの名無しさん
2006/05/23(火) 20:04:29■提出日:5月24日0時0分
■プログラム作成及びコンパイラ:Visual Stdio.NET2003
■OS:Windows XP
■課題内容:
Prog33.c を、stat を使わずに、メモリに全てのレコードを読み込んでからソートして
保存するように変更せよ。
※ソースが長いのでUPしました。
【プログラム】
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1930.txt
よろしくお願いいたします。
0219デフォルトの名無しさん
2006/05/23(火) 20:06:59女だろうが爺だろうが>>1も読まない奴には答えが出ない
0220デフォルトの名無しさん
2006/05/23(火) 20:07:50int main(void){
int lot, substandard;
puts("製品数");
scanf("%d", &lot);
puts("不良品数");
scanf("%d", &substandard);
double stdPercen = (double)(lot - substandard) / lot * 100.0;
printf("良品は全体の%.2f%%\n", stdPercen);
return 0;
}
0221 ◆4xnaa3pj4A
2006/05/23(火) 20:13:30[2] 問題文(含コード&リンク):
入力ファイルから100個のデータを取り込み、その平均、分散、標準偏差を
求めよ。
さらにその結果を出力ファイルに格納するプログラムを作成せよ。
[3] 環境
[3.1] OS:Unix
[3.2] コンパイラ:gcc (詳しいことは分かりません)
[3.3] 言語:C言語
[4] 期限:無期限ですが早い方が...
[5] その他の制限:全くの素人です
すいませんでした
0222デフォルトの名無しさん
2006/05/23(火) 20:30:09エラーがでまくるんですが・・・
0223デフォルトの名無しさん
2006/05/23(火) 20:30:44#include <stdio.h>
#include <math.h>
int main(void){
double a, s= 0.0, s2 = 0.0, v, o;
FILE *fp;
if((fp = fopen("in.txt", "r")) == NULL)return 1;
for(int i = 0; i < 100; i++){
fscanf(fp, "%lf", &a);
s += a;
s2 += a * a;
}
s /= 100;
s2 /= 100;
v = s2 - s;
o = sqrt(v);
fclose(fp);
if((fp = fopen("out.txt", "w")) == NULL)return 1;
fprintf(fp, "平均%f\n", s);
fprintf(fp, "分散%f\n", v);
fprintf(fp, "標準偏差%f\n", o);
fclose(fp);
return 0;
}
分散求めるのが多少怪しいけど…
0224デフォルトの名無しさん
2006/05/23(火) 20:31:50どうせ、#include <stdio.h>してないってオチだろ
0225デフォルトの名無しさん
2006/05/23(火) 20:33:40いやそれしても
9行目ここでは宣言できない関数ってでる
0226デフォルトの名無しさん
2006/05/23(火) 20:36:36double stdPercen;
をintの下にでも加えて
double stdPercen = (double)(lot - substandard) / lot * 100.0;
を
stdPercen = (double)(lot - substandard) / lot * 100.0;
って書き直せばできるんじゃね
0227デフォルトの名無しさん
2006/05/23(火) 20:37:13たぶんあってると思う。。。
#include <stdio.h>
int main(void){
double x,xx,y,m;
int i,n;
scanf("%lf %d",&x ,&n);
xx = m = y = 1;
for(i = 1; i < n; i++){
xx *= (-1) * x * x;
m *= (double) (2 * i) * (2 * i - 1);
y += xx / m;
}
printf("%.15f\n",y);
return 0;
}
0228デフォルトの名無しさん
2006/05/23(火) 20:48:11できました。サンクスコ
0229デフォルトの名無しさん
2006/05/23(火) 20:53:28[2]問題文(含コード&リンク):
2つの正の実数値(a,b)を読み込み、その商(div)を整数値で求め、余り
(mod)を実数値で求め、表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0230デフォルトの名無しさん
2006/05/23(火) 20:56:32[2]問題文(含コード&リンク):
正の実数値を読み込んで、その値の少数第1位を四捨五入した整数値を求め、
表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0231デフォルトの名無しさん
2006/05/23(火) 21:09:11#include <stdio.h>
int main(void){
double x;
scanf("%lf", &x);
printf("%d\n", (int)(x+0.5));
return 0;
}
こんなんでおkだったきがする
0232デフォルトの名無しさん
2006/05/23(火) 21:15:31[2]問題文(含コード&リンク):
金額(price)を整数値で読み込み、その金額に対する消費税額(tax)を整数値で求め、
消費税額と消費税込み金額を表示してください。消費税率は5%とする。
(消費税額は、0,05を掛けて求める。)
消費税額は、少数第1位を四捨五入するものとする。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0233デフォルトの名無しさん
2006/05/23(火) 21:21:46#include<stdio.h>
int main(){
int price,tax;
printf("price? ");scanf("%d",&price);
tax = price / 20;
printf("price = %d\ntax = %d\ntotal = %d\n",price,tax,price+tax);
}
0234デフォルトの名無しさん
2006/05/23(火) 21:25:54理論的におかしなところはありますか?
#include<stdio.h>
#include<math.h>
int main(){
doubled, ans, divide;
int i, j = 0;
char s[256];
scanf("%lf", &d);
for (i = -1; i > -10; i--) {
divide = pow(2, i);
ans = d / divide;
if (ans >= 1) {
s[j] = '1';
d = d - divide;
}
else {
s[j] = '0';
}
j++;
}
s[j] = '\0';
printf("%s\n", s);
return 0;
}
0235デフォルトの名無しさん
2006/05/23(火) 21:28:32[2]問題文(含コード&リンク):
整数値を2つ(a,b)読み込み、a,bが格納している値を交換して、結果を表示してください。
例:input a b:10 20
交換前a:10, b:20
交換後a:20, b:10
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0236デフォルトの名無しさん
2006/05/23(火) 21:31:44[2]問題文(含コード&リンク):
int 型の値の最大値と、それに1を足した値を10進数と16進数で表示してください。
-2147483648を初期値としたとき、waring(警告)メッセージがでた場合は、
n = -2147483648 -1などとしてください
消費税額は、少数第1位を四捨五入するものとする。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0237デフォルトの名無しさん
2006/05/23(火) 21:36:150238デフォルトの名無しさん
2006/05/23(火) 21:36:56消費税額ってなんだよ。
0239237
2006/05/23(火) 21:37:50>>229 こんなんでどうですか?
#include <stdio.h>
#include<math.h>
int main(void){
double a, b, mod;
int div;
scanf("%lf", &a);
scanf("%lf", &b);
mod = fmod(a, b);
div = (int)(a / b);
printf("div:%d, mod:%lf\n", div, mod);
return 0;
}
0240デフォルトの名無しさん
2006/05/23(火) 21:38:3210進小数から2進小数の変換は確か倍々ゲームするんだっけか
まあどっちにしろ>>1を読まない奴は氏ねばいいし
そもそもここはお前の添削スレじゃない
0241デフォルトの名無しさん
2006/05/23(火) 21:59:43#include<math.h>
はまだ習ってないので使えないと思います。すいません。
0242デフォルトの名無しさん
2006/05/23(火) 22:00:48[1]授業単元:演習
[2]問題文(含コード&リンク):
int 型の値の最大値と、それに1を足した値を10進数と16進数で表示してください。
-2147483648を初期値としたとき、waring(警告)メッセージがでた場合は、
n = -2147483648 -1などとしてください
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
消し忘れた。
0243デフォルトの名無しさん
2006/05/23(火) 22:04:04プログラムだけでは分かりにくいと思ったので、
Visual Stdio.NET2003で作られるプロジェクトフォルダをUPしました。
(Prog33)この中に、プログラムなどが入っています。
http://www.uploda.org/uporg398554.zip.html
よろしくお願いします。
0244デフォルトの名無しさん
2006/05/23(火) 22:05:29#include <stdio.h>
int main(void){
double a, b;
puts("a=");
scanf("%lf", &a);
puts("b=");
scanf("%lf", &b);
printf("a = %f, b = %f\n", a, b);
printf("b div a = %d\n", (int)(b / a));
printf("b mod a = %f\n", b - (int)(b / a) * a);
return 0;
}
0245デフォルトの名無しさん
2006/05/23(火) 22:09:51#include <stdio.h>
#include <limits.h>
int main(void){
puts("int型の最大");
printf("%d\n", INT_MAX);
printf("%x\n", INT_MAX);
puts("+1");
printf("%d\n", INT_MAX + 1);
printf("%x\n", INT_MAX + 1);
}
0246デフォルトの名無しさん
2006/05/23(火) 22:13:11ちょくちょくそういうの見るが、そもそもヘッダで習うとか習わないとかって物じゃないと思うがな
0247デフォルトの名無しさん
2006/05/23(火) 22:13:13#include <limits.h>とかは習ってないので使えないっぽいです。
int_MAX+1とかのあたりもおそらく
そこらへん最初に制限書けなくてすいませんです。
0248デフォルトの名無しさん
2006/05/23(火) 22:14:25あint maxは短くしただけだからおkだ。
ヘッダとか用語がまず解らないし
0249デフォルトの名無しさん
2006/05/23(火) 22:23:15[2]問題文(含コード&リンク):
月(month)を読み込み、範囲チェックをして下さい。月が1〜12の範囲なら、"正しい月"
、1〜12意外なら"誤った月"と表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:論理積演算子(&&)、
論理和演算子(||)を使わないで下さい。
0250デフォルトの名無しさん
2006/05/23(火) 22:30:41#include <stdio.h>
int main(){
int month;
puts("何月?");
scanf("%d", &month);
switch(month){
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
puts("正しい月");
break;
default:
puts("誤った月");
}
}
0251デフォルトの名無しさん
2006/05/23(火) 22:32:510252デフォルトの名無しさん
2006/05/23(火) 22:35:49[2]問題文(含コード&リンク):
月(month)を読み込み、範囲チェックをして下さい。月が1〜12の範囲なら、"正しい月"
、1〜12意外なら"誤った月"と表示してください。
論理演算子を使ってください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
0253デフォルトの名無しさん
2006/05/23(火) 22:41:22[2]問題文(含コード&リンク):
アルファベット文字を1文字読み込み、小文字なら"Lower"、大文字なら"Upper"と表示して下さい。
英文字しか入力されないものとして下さい。
小文字は'a'以上'z'以下です。ASCIIコードで'a'〜'z'は、連続した値です。
例えば、変数cに'b'という文字の値が入ってるかどうか判定する場合、
c=='b'と書きます
c==98と書くよりもはるかにわかりやすくなります。
1文字を入力する2つの方法(どちらでもいいです。)
�@この問題集で使っている方法
char c;
scanf("%c", &c);
�A他の方法
int c;
c = getcher();
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
0254デフォルトの名無しさん
2006/05/23(火) 22:42:45■言語:C言語
■提出期限:5月24日0時0分
■プログラム及びコンパイラ:Visual Stdio.NET2003
■OS:Windows XP
■問題文:
次のプログラムを stat を使わずに、メモリに全てのレコードを読み込んでからソートして
保存するように変更せよ。
※ソースが長いのでUPしました。
【プログラム】
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1930.txt
よろしくお願いいたします。
0255デフォルトの名無しさん
2006/05/23(火) 22:52:51#include <stdio.h>
#include <ctype.h>
int main(void){
char c;
scanf("%c",&c);
printf("%s\n",islower(c)? "Lower":"Upper");
return 0;
}
0256デフォルトの名無しさん
2006/05/23(火) 22:53:500257デフォルトの名無しさん
2006/05/23(火) 22:57:58#include <ctype.h> がわからない・・・・これ使わない書き方ってないですか?
0258デフォルトの名無しさん
2006/05/23(火) 22:59:37#include <stdio.h>
int main(void){
char c;
scanf("%c",&c);
if( 'A' <= c && c <= 'Z' ) puts("Lower");
else puts("Upper"); /*英文字しか入力されないなら*/
if( 'a' <= c && c <= 'z' ) puts("Upper"); /*英文字以外の可能背もあるなら*/
return 0;
}
0259デフォルトの名無しさん
2006/05/23(火) 23:00:14[2] 問題文:
1.引数にファイル名を指定すると、そのファイルのサイズと
ファイルの種類(一般ファイル、ディレクトリ、パイプ等)、
最終変更時刻を表示する(fview)を作成せよ。但し、引数には複数
のファイルを指定できるようにすること。また、fstatシステムコール
を用いること。
2.引数に指定した複数のテキストファイルの内容を結合して一つの
ファイルにまとめるコマンド(cat2)を作成せよ。但し、まとめた内容を
格納するファイル名は"concat.txt"とすること。但し、catコマンドを
system関数内部で呼ばないこと。
[3] 環境
[3.1] OS:windowsXP cygwin
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C言語
[4] 期限: ([2006年5月26日23:59まで]
[5] その他の制限: 高水準ライブラリ関数は使用せずに
システムコールのみを使用する。
難しすぎて、分かりません。システムコールのみだとなおさらです。
よろしくお願いします。
0260デフォルトの名無しさん
2006/05/23(火) 23:00:42表示部分だけ変更してくれ
0261デフォルトの名無しさん
2006/05/23(火) 23:03:25>但し、catコマンドをsystem関数内部で呼ばないこと。
チッ、先を読まれたw
0262デフォルトの名無しさん
2006/05/23(火) 23:04:58Upperが2度出るのは何故ですか?
0263デフォルトの名無しさん
2006/05/23(火) 23:22:12コメントアウトし忘れた
英文字しか入力されないなら次ので十分
else puts("Upper");
英文字以外も入力されるなら次のにする
if( 'a' <= c && c <= 'z' ) puts("Upper");
0264デフォルトの名無しさん
2006/05/23(火) 23:32:59stat を使わずにするには、このプログラムどこを変更すればいいですか?
0265デフォルトの名無しさん
2006/05/24(水) 00:08:57printfも使えないのか O| ̄|_
0266デフォルトの名無しさん
2006/05/24(水) 00:16:50[2]問題文(含コード&リンク):
出席率(attend)と試験の得点(test)を読み込み、2つの条件を満たす場合
”合格”と表示し、満たさない場合”不合格”と表示してください。2つの条件は以下の通り。
�@出席率が70以上、�A試験得点が60以上。
この課題はif文のネストで、
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
0268デフォルトの名無しさん
2006/05/24(水) 00:44:23-void
0269デフォルトの名無しさん
2006/05/24(水) 00:46:07-Void
+void
な。
0270デフォルトの名無しさん
2006/05/24(水) 00:52:42(2)
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int main(int argc, char *argv[]){
int i, size, fd_in, fd_out;
char buf[256];
fd_out = creat("concat.txt", S_IRUSR | S_IWUSR);
for (i = 1; i < argc; i++) {
fd_in = open(argv[i], O_RDONLY);
while((size = read(fd_in, buf, sizeof(buf))) > 0) {
write(fd_out, buf, size);
}
close(fd_in);
}
close(fd_out);
return 0;
}
0271デフォルトの名無しさん
2006/05/24(水) 01:00:40[2] 問題文(含コード&リンク):
//includ文
#include <stdio.h>
void main(void){
inti,j;
printf("好きな数字を一桁入力するのだ:");
scanf("%1d",&j);
for(i=0;i<0;i++){
if(j==0){}
else if(i==0){}
else if(i%j==0){
printf("\n");}
printf("%d ",i);}
printf("\n");}
結果が入力した数値iの個数ごとに改行するプログラム。
例:3を入力した場合
0 1 2
3 4 5
6 7 8
9
となるようにする。
で、自分で考えた結果が上記なのですが、「力技だからもっとスマートにしろ」と言われました。orz
まだ学校入学したばっかりで、これ以上の案が浮かびません。ご助力をお願いします。orz
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: .net2003
[3.3] 言語: C
[4] 期限: 5月30日(火)
[5] その他の制限: if文の実習です。とりあえず、そういうレベルです。orz
0272デフォルトの名無しさん
2006/05/24(水) 01:13:49まだやってたのか
エラーメッセージぐらいちゃんと読もうよ…
0273デフォルトの名無しさん
2006/05/24(水) 01:19:03#include<stdio.h>
int main(void){
int i,j;
printf("好きな数字を一桁入力するのだ:");
scanf("%1d",&j);
for(i=0;i<10;i++){
printf("%d ",i);
if((i+1)%j == 0){
printf("\n");
}
}
return 0;
}
>272
たぶん単語の意味がわからなかったんじゃないかな。beforeとか。
0274デフォルトの名無しさん
2006/05/24(水) 01:19:530275デフォルトの名無しさん
2006/05/24(水) 01:27:16とりあえず書く。おkなら答えを書いてくれるやつがいる…かもしれん
0276デフォルトの名無しさん
2006/05/24(水) 01:28:14#include <stdio.h>
void main(void){
int i,j;
printf("好きな数字を一桁入力するのだ:");
scanf("%1d",&j);
for(i=0;i<10;i++)printf("%d%c", i, (i + 1) % j == 0 ? '\n' : ' ');
puts("");
return 0;
}
もう>>273にあるけど
それにしても、beforeは中学生でも分かるだろ
0277デフォルトの名無しさん
2006/05/24(水) 01:28:16異なるn個の整数(まあ実数ならなんでもいいんだが)がランダムで並んだ
数列から、もっとも長い部分増加列をすばやく見つけるアルゴリズムを
考えて欲しいんだ。総当りだと最長で2^n回もかかるからだめなんです。
プログラムは自分で書くから、手法だけ教えて欲しい。
0278デフォルトの名無しさん
2006/05/24(水) 01:33:110279デフォルトの名無しさん
2006/05/24(水) 01:34:51ぐぐったらこんなんあったけど…
0280デフォルトの名無しさん
2006/05/24(水) 01:40:07[2] 問題文(含コード&リンク):
標準入力から数行にわたるテキストファイル(1バイト文字のみからなる
もの)を読み込み、同一内容の行(空行を含む)が続いた場合には、それ
を一行にまとめて標準出力に出力するプログラムを作成せよ。
例えば、入力が
main()
{
printf("a\n");
printf("a\n");
printf("b\n");
printf("c\n");
printf("c\n");
printf("c\n");
}
の場合、下記のように出力するプログラムを作成せよ。
main()
{
printf("a\n");
printf("b\n");
printf("c\n");
}
[3] 環境
[3.1] OS: Windows (cygwin)
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 2006年5月24日17:00
0281デフォルトの名無しさん
2006/05/24(水) 01:40:45ありがとうございます。
これをヒントにして考えたいと思います。
0282デフォルトの名無しさん
2006/05/24(水) 01:47:44#include <stdio.h>
#include <string.h>
int main(){
FILE *fp;
char s1[0xff], s2[0xff];
fp = fopen("in.txt", "r");
fgets(s1, sizeof(s1), fp);
while(fgets(s2, sizeof(s2), fp) != NULL){
if(strcmp(s1, s2) != 0)printf("%s", s1);
strcpy(s1, s2);
}
printf("%s\n", s1);
return 0;
}
>>276
おいおい、voidで値返すなよ
0283デフォルトの名無しさん
2006/05/24(水) 01:55:08それだと標準入力にならないぞ。
つーか前にあったな。>147だ。
0284デフォルトの名無しさん
2006/05/24(水) 01:58:41>>283
ありがとうございます。
>>147を参考にやってみます!
0285デフォルトの名無しさん
2006/05/24(水) 02:13:390286284
2006/05/24(水) 02:22:47>>282のを標準入力にするのはどうすればいいんでしょうか?
0287デフォルトの名無しさん
2006/05/24(水) 02:39:12一番簡単なのは
- fp = fopen("in.txt", "r");
+ fp = stdin;
違和感あるけど、間違いではない。
0289デフォルトの名無しさん
2006/05/24(水) 02:54:280290デフォルトの名無しさん
2006/05/24(水) 06:20:53お願いします
0291困ってます
2006/05/24(水) 07:38:03偏差を表示するプログラムを作成せよ。for文を使うこと。
2. 14の段数をもつピラミッドを表示するプログラムを作成
せよ。
3. 9段の市松模様(以下の例を参考にせよ)を表示するプロ
グラムを作成せよ.
段数は? 3
**** **** **** ****
**** **** **** ****
**** **** **** ****
**** **** **** **** *ここまで1段
**** **** **** ****
**** **** **** ****
**** **** **** ****
**** **** **** **** *ここまで2段
**** **** **** ****
**** **** **** ****
**** **** **** ****
**** **** **** **** *ここまで3段
0292デフォルトの名無しさん
2006/05/24(水) 08:24:57ひんと。
char buf[256];
num=0;
while((i = fread(buf,1,sizeof(buf),fp))>0){
num += i;
}
num /= sizeof(recA);
0293デフォルトの名無しさん
2006/05/24(水) 09:35:14[2] 問題文(含コード&リンク):
double sin4(double x){
int i;
double ans=1.0,term=1.0,mx2=-x*x;
for(i=1;term!=0;i++){
term*=mx2/(2*i*(2*i-1));
ans+=term;
}
return(ans);
}
この関数はcosxのマクローリン展開を求めるものなんですが、sinxを求めるように改良したいんですが、
よくわからないので、教えて下さい
[3] 環境
[3.1] OS WinXp
[3.2] Borland
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: 今日中
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0294デフォルトの名無しさん
2006/05/24(水) 09:54:27void main() {
int a, b;
printf( "input a b: " ); scanf( "%d %d", &a, &b );
printf( "before a: %d b: %d\n", a, b );
a += b; b = a - b; a -= b;
printf( "after a: %d b: %d\n", a, b );
}
>>252
void main() {
int month;
printf( "input month :" ); scanf( "%d", &month );
printf( "%s\n", ( 1 <= month && month <= 12 ) ? "正しい月" : "誤った月" );
}
>>266
void main() {
int attend, test;
printf( "input attend test: " ); scanf( "%d %d", &attend, &test );
if ( attend >= 70 ) if ( test >= 60 ) printf( "合格\n" ); else printf( "不合格\n" ); else printf( "不合格\n" );
}
0295デフォルトの名無しさん
2006/05/24(水) 09:55:53double ans=0.0,term=x,mx2=-x*x;
for(i=1;term!=0;i++){
ans+=term;
term*=mx2/(2*i*(2*i+1));
}
0296デフォルトの名無しさん
2006/05/24(水) 10:00:02算術関数で出した値とだいぶずれるんですが・・・
0297デフォルトの名無しさん
2006/05/24(水) 10:07:49mx2=-((x-1.570796326)*(x-1.570796326));
0298デフォルトの名無しさん
2006/05/24(水) 10:09:56それはなんの処理ですか?
0299デフォルトの名無しさん
2006/05/24(水) 10:11:13mx2=-x*x;
と入れ替えろと言っている
0300デフォルトの名無しさん
2006/05/24(水) 10:15:221.5・・・・がどこからでてくるのかさっぱりです・・
0301デフォルトの名無しさん
NGNG0302デフォルトの名無しさん
2006/05/24(水) 10:30:230303デフォルトの名無しさん
NGNG0304デフォルトの名無しさん
2006/05/24(水) 13:23:15{
double ans, term, mx2;
int i;
ans = 0.0;
x = fmod(x, 3.141592653589793238462643383 * 2);
term = x;
mx2 = -x * x;
for( i = 1 ; term != 0 ; i++ ) {
ans += term;
term *= mx2 / (2 * i * (2 * i + 1));
}
return ans;
0305デフォルトの名無しさん
2006/05/24(水) 17:20:38#include <stdio.h>
#include <math.h>
int main(){
int i, n;
double a, s = 0.0, ss = 0.0, v, o;
printf_s("n = ");
scanf_s("%d", &n, 1);
for(i = 0; i < n; i++){
scanf_s("%lf", &a, 1);
s += a;
ss += a * a;
}
ss /= n;
v = ss - s/n;
o = sqrt(v);
printf_s("合計:%f\n平均:%f\n分散:%f\n標準偏差:%f\n",s , s / n, v, o);
return 0;
}
0306デフォルトの名無しさん
2006/05/24(水) 17:30:01調べたんですけど、詳しく教えてくれるサイトが見当たりませんでした。
0307デフォルトの名無しさん
2006/05/24(水) 17:36:13#include <stdio.h>
int main(){
int i, j, n = 14;
for(i = 0; i < n; i++){
for(j = 0; j < n - i; j++)
putchar(' ');
for(j = 0; j < 2 *(i + 1) - 1; j++)
putchar('*');
puts("");
}
return 0;
}
0308デフォルトの名無しさん
2006/05/24(水) 17:48:08#include <stdio.h>
int main(){
int n;
scanf_s("%d", &n, 1);
while(n--)
for(int k = 0; k < 4; k++)
for(int j = 0; j < 4; j++){
for(int i = 0; i < 4; i++)putchar('*');
putchar((j + 1) % 4 ? ' ' : '\n');
}
}
0310デフォルトの名無しさん
2006/05/24(水) 19:37:50[2] 問題文(含コード&リンク):コンピュータとのじゃんけんプログラム
ただしファイルの入出力を必ずする。
コンピュータの出すぐーかちょきかぱーの順番をファイルに書いておいて呼び出す
勝敗を常に表示してファイルに書きこんでいく
[3] 環境
[3.1] OS: Windows/
[3.2] コンパイラ名とバージョン:>>291と同じ
[3.3] 言語: C++
[4] 期限: 今週中
[5] その他の制限:無いと思う
お願いします
0311デフォルトの名無しさん
2006/05/24(水) 19:38:27[2] 問題文(含コード&リンク): コマンドから2つの文字列を入力して、後ろにある文字列にある単語を検索できるようにする。何番目に登場するかも表示。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:よく分からないです…
[3.3] 言語:C
[4] 期限:今週中
[5]文字を比較する関数は使用不可
main以外に最低一つ使う
【例】"ahoahoshine" "shine"
結果:shineは7文字目からみたいよ
"ahoahoshine" "baka"
結果:無いわボケ
0312デフォルトの名無しさん
2006/05/24(水) 19:44:190313デフォルトの名無しさん
2006/05/24(水) 19:52:01それもダメっぽいです…
strlenとかな大丈夫ぽいです
0314デフォルトの名無しさん
2006/05/24(水) 19:54:27# include <stdio.h>
int str_search(char *str,char *search)
{
int i;
for (i=1;*str!='\0';i++,str++){
if (*str==*search){
return i;
}
}
return 0;
}
int main(void)
{
int a;
char str[256],search[256];
scanf("%s",str);
scanf("%s",search);
a=str_search(str,search);
if (a==0){
printf("結果:無いわボケ\n");
}else{
printf("結果:%d番目からあるっぽいよ\n",a);
}
return 0;
}
0315デフォルトの名無しさん
2006/05/24(水) 19:57:17助けて下さい(`・ω・´)
0316デフォルトの名無しさん
NGNG#include<stdio.h>
#include<string.h>
int main(int argc, char* argv[]){
char* find;
if (argc > 2) {
find = strstr(argv[1], argv[2]);
if (find) {
printf("%sは%i文字目からみたいよ\n", argv[2], (find - argv[1]));
} else {
printf("無いわボケ\n");
}
return 0;
}
0317デフォルトの名無しさん
2006/05/24(水) 19:59:14判定甘くね?
0318デフォルトの名無しさん
2006/05/24(水) 19:59:550319デフォルトの名無しさん
2006/05/24(水) 20:00:33ばれなきゃいいんだ
0320デフォルトの名無しさん
2006/05/24(水) 20:01:39何だったんだおれは…orz
strstrは不可みたいです
楽しちゃダメらしいっす
0321デフォルトの名無しさん
2006/05/24(水) 20:04:400322デフォルトの名無しさん
2006/05/24(水) 20:05:480323デフォルトの名無しさん
2006/05/24(水) 20:07:360324デフォルトの名無しさん
2006/05/24(水) 20:10:29参考もなにもないだろ
0325デフォルトの名無しさん
2006/05/24(水) 20:15:252文字目以降が分からないです
0326デフォルトの名無しさん
NGNG#include<stdio.h>
char* mystrstr(const char* str1, const char* str2)
{
int i;
for(i=0; str2[i] != '\0'; i++) {
if (*str1=='\0' && str2[i] != '\0') {
return NULL;
}
if (*str1 == str2[i]) {
str1++;
} else {
continue;
}
}
return str1;
}
int main(int argc, char* argv[]){
char* find;
if (argc > 2) {
find = mystrstr(argv[1], argv[2]);
if (find) {
printf("%sは%i文字目からみたいよ\n", argv[2], (find - argv[1]));
} else {
printf("無いわボケ\n");
}
return 0;
}
0327デフォルトの名無しさん
NGNG全然駄目じゃん。
char* mystrstr(const char* str1, const char* str2)
{
int i;
for(i=0; str2[i] != '\0'; i++) {
if (*str1=='\0' && str2[i] != '\0') {
return NULL;
}
if (*str1 != str2[i]) {
i=0;
}
str1++:
}
return str1;
}
0328デフォルトの名無しさん
2006/05/24(水) 20:59:18標準入力から、最大で1行600文字の文字列を受け取るにはどうしたら良いので
しょうか?ためしに書いてみたのですが、このコードだと600文字を超えると
暴走してしまいます。
#include <iostream>
# define MAXLEN 600
int main()
{
char line[MAXLEN];
while(!std::cin.eof())
{
std::cin.getline( line, MAXLEN ) ;
std::cout << line << std::endl;
}
return 0;
}
環境は、以下のとおりです。
g++ (GCC) 3.4.3 20041212 (Red Hat 3.4.3-9.EL4)
0329デフォルトの名無しさん
2006/05/24(水) 21:05:39暴走。どの辺が?
まぁよう分からんけどstd::stringでも使えば。
#include<iostream>
#include<string>
int main()
{
std::string line;
while(getline(std::cin,line))
{
std::cout << line << std::endl;
}
return 0;
}
0330デフォルトの名無しさん
2006/05/24(水) 21:06:24[2] 問題文(含コード&リンク):指定したノードより下のノードを
(指定したノードは含まず)
すべて削除する関数int deletetree(Node *p)を作成せよ。
返り値は実際に削除したノードの数とせよ。
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1933.txt
まではできています。
[3] 環境
[3.1] OS:Windows XP
[3.2] コンパイラ名とバージョン:bcc32
[3.3] 言語:C
[4] 期限:2006年5月29日18:00まで
お願いします。トリップは要りますか?
0331デフォルトの名無しさん
2006/05/24(水) 21:11:29# define MAXLEN 600
0332328
2006/05/24(水) 21:16:56ありがとうございます。
私にも原因は分かりませんが、確かにこのコードを実行すると、ASCIIキャラ
クタを600文字以上与えると暴走するのです。topコマンドが振り切れてしまい
ます。
いただいたコードはこちらでも動作しました。しかし、長さは不定になってし
まうようです。600文字で打ち切るにはどうしたら良いのでしょうか?
0333デフォルトの名無しさん
NGNGint deltree_t(Node* p, int ct){
if (p && p->left) {
++ct;
ct += deltree_t(p->left, ct);
free(p->left);
p->left=NULL;
}
if (p && p->right) {
++ct;
ct += deltree(p->right);
free(p->right);
p->right=NULL;
}
return ct;
}
int deltree(Node* p){
return deltree_t(p, 0);
}
0334デフォルトの名無しさん
NGNG×ct += deltree(p->right);
○ct += deltree_t(p->right, ct);
0335デフォルトの名無しさん
NGNGMAXLENを600にしても600文字は受けられない。
0337デフォルトの名無しさん
2006/05/24(水) 21:34:33string使う場合は、メンバメソッドのresizeを使うか、
substrを使って部分文字列を取る。
あくまでレガシーな配列にこだわる場合は、
大きく配列サイズを取っておいて、
600文字分コピーする。
0338328
2006/05/24(水) 21:39:48ありがとうございます。
とりあえず、こんな感じでやってみることにしました。
#include<iostream>
#include<string>
#define MAXLEN 600
int main()
{
std::string line, line2;
while(getline(std::cin,line))
{
if (line.length() > MAXLEN) {
line = line.substr(MAXLEN);
}
std::cout << line << std::endl;
}
return 0;
}
0339デフォルトの名無しさん
2006/05/24(水) 21:46:48[2] 問題文(含コード&リンク):
キーボードから入力した文字列に,'a'という文字と'A'という文字の出現数の合計を表示するプログラムを作成しなさい
* 入力する文字列の長さは最大で80文字までとしてよい.
* 文字は1文字ずつ読み込むのではなく文字列として読み込むこと.
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc 4.00
[3.3] 言語: C
[4] 期限: 今晩12時
[5] その他の制限:とくになし
0340339
2006/05/24(水) 21:49:07よろしくお願いします。
0341デフォルトの名無しさん
2006/05/24(水) 21:52:20#include<stdio.h>
int main()
{
char l[81],*p=l,c=0;
gets(l);
while(*p)c+=(*p++|32)=='a';
printf("%d\n",c);
}
0342デフォルトの名無しさん
2006/05/24(水) 23:04:30[2] 問題文(含コード&リンク)
簡単なタイピングソフトを作成しなさい.画面上に,例文を表示し,ユーザーにキーボードから入力させる入力した文字列と例文が等しい時には,"Ok!",等しくない時には"Miss!"と表示するようにしなさい.
例文は「How is it that our conscious and private minds have a sense of self?」とすること.
文字列を比較するC言語の標準関数であるstrcmpを使ってプログラムを作成すること.
入力される文字列の最大の長さはで80文字とする
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 木曜日 朝9時まで
[5] その他の制限:とくになし
よろしくお願いします
0343デフォルトの名無しさん
2006/05/24(水) 23:06:55[2] 問題文(含コード&リンク):
正整数の組n,kに対する関数subsum(n,k)は集合{1,2,・・・n}の部分集合Sで、S中の数の総和が丁度kとなるものの
種類数を表すとする。このときf(0,k)を適切に定めると以下が成り立つ。
f(n,k)=f(n-1,k)+f(n-1,k-n) (1≦n≦k)
f(n-1,k) (1≦n, n>k)
1 (n=0=k)
0 (n=0,k>0)
上記の式を用いて、f(n,k)を計算するプログラムを作成せよ。
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 明日までです
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
問題の意味から理解できなくて・・・お願いします!m(_ _)m
0344デフォルトの名無しさん
2006/05/24(水) 23:14:27#include <stdio.h>
#include <string.h>
int main()
{
char buf[80];
char ex[] = "How is it that our conscious and private minds have a sense of self?";
puts(ex);
fgets(buf, sizeof(buf) - 1, stdin);
buf[strlen(buf) - 1] = NULL;
if(strcmp(buf, ex) == 0)puts("ok");
else puts("miss");
return 0;
}
ありがとうございます!!
しかしながら配列(fgetsってそうですか?)まだ習ってないのを忘れてました…_| ̄|○
0346デフォルトの名無しさん
2006/05/24(水) 23:18:23#include <stdio.h>
#include <string.h>
#define ANS "How is it that our conscious and private minds have a sense of self?"
int main(void)
{
char str[81];
puts(ANS);
gets(str);
if (strcmp(str,ANS)==0){
puts("OK!");
}else{
puts("Miss!");
}
return 0;
}
0347デフォルトの名無しさん
2006/05/24(水) 23:18:50[2] 問題文(含コード&リンク):
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1934.txt
[3] 環境
[3.1] OS:freeBSD
[3.2] コンパイラ名:gcc
[3.3] 言語:C
[4] 期限:5月25日12:00まで
[5] その他の制限:特に無し
お願いします
0348デフォルトの名無しさん
2006/05/24(水) 23:25:22int f(int n, int k){
int r;
if(n == 0){
if(k == 0) r = 1;
else r = 0;
}else if(n >= 1){
if(n > k) r = f(n - 1, k);
else r = f(n - 1, k) + f(n - 1, k - n);
}
return r;
}
f(n,k)はこんな感じになると思う
あとは、mainに組み込めば
0349デフォルトの名無しさん
2006/05/24(水) 23:30:19配列をまだ習っていない…
文字列比較関数strcmpを使う…
矛盾してね?
0350デフォルトの名無しさん
NGNG実際に動かしてみろ。
0351デフォルトの名無しさん
2006/05/24(水) 23:33:530352デフォルトの名無しさん
2006/05/24(水) 23:34:040353デフォルトの名無しさん
2006/05/24(水) 23:37:24ありがとうございました。関数f(n,k)が成り立つことを示せと言われたんですが、やはり意味がわかりません。教えて下さい
0354デフォルトの名無しさん
2006/05/24(水) 23:41:59関数subsumって関数f?
0355デフォルトの名無しさん
2006/05/24(水) 23:44:52動かしたら、
JohnJimJaneClyde%s
と出力されるのですがなにがいけないのかがわかりません。
0356デフォルトの名無しさん
2006/05/24(水) 23:48:23よくわかんないんですが、他になにも書かれてないので、そうと考えるしかないですよね
0357デフォルトの名無しさん
2006/05/25(木) 00:20:24レス番号の読み違い?
0358デフォルトの名無しさん
2006/05/25(木) 00:27:40よろしくお願いします。
[1] 授業単元:C言語実践演習
[2] 問題文(含コード&リンク): 人数Xを読み込んだ後,配列に身長のデータを読み込んでいき,
入力された身長を10cmごとにわけたヒストグラムを生成するプログラムの作成
[3] 環境
[3.1] OS: Linux
[3.2] gcc 3.4
[3.3] 言語: C
[4] 期限: 明日
[5] その他の制限: 先週の時点でWhille fo if文などを、
今回で配列を学びました。
0359デフォルトの名無しさん
2006/05/25(木) 00:28:26>listに格納された名前を表示させるというものである
それ以外のものが表示されてはいけないとは思わないか?
0360デフォルトの名無しさん
2006/05/25(木) 00:38:33なぜ%sが出力されてしまうのかがわからない、
という意味で言ったのですが答え方が悪かったですね。
0361デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
#define MAXITEM 100
int main(void){
char tmp[100];
int tall[MAXITEM];
int hist[30];
int i, j, bound;
fgets(tmp, 100, stdin);
if ((bound=atoi(tmp)) < MAXITEM){
for(i=0; i<bound; i++){
fgets(tmp, 100, stdin);
tall[i] = atoi(tmp);}
for(j=0; j<300; j+=10)
for(i=0; i<bound; i++)
if (j<=tall[i] && tall[i]<(j+10))
hist[j/10]++;
for(j=0; j<300; j+=10){
printf("%03i ", j);
for(i=0; i<hist[j/10]; i++)
putchar('*');
putchar('\n');}
return 0;}
0362デフォルトの名無しさん
NGNGlistの要素数に対して、ループが何回回っているか考えろ。
0363デフォルトの名無しさん
2006/05/25(木) 01:15:43MEMBERを4にしても%sが出力されてしまいます
0364デフォルトの名無しさん
2006/05/25(木) 01:19:372:環境 リナックス gcc C言語
3:問題文 整数Xと実数データa1, a2, ..., aXを読み込んだ後,a1, a2, ...,
aXを小さい順に並べ替えるプログラムを作成せよ.
4:期限 26日
5:制限、習ったところ 講義では配列まで
よろしくお願いします
0365デフォルトの名無しさん
2006/05/25(木) 01:38:52[2] 問題文:文字を入力して、入力した文字列の中から"均s"と"均e"を検索する。もし"均s"
と"均e"の両方が入っていれば、main関数に0を返し、「編集していません」と表示して、入
力した文字列は、そのまま出力せよ。もしも"均s"か"均e"のどちらかしかなければ、main
関数に1を返して、「編集しました」と表示して、文字列から"均s"か"均e"の部分を削除して
表示させよ。
(具体例)
入力された文字 出力時
均sあいうえお均e ------> 均sあいうえお均e
あいうえお均e ------> あいうえお
均sあいうえお ------> あいうえお
あい均sうえお均e ------> あい均sうえお均e
あ均sいうえ均sお ------> あいうえお
あい均eうえお均e ------> あいうえお
[3] 環境
[3.1] OS:unix
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 今日中
[5] その他の制限: 文字の入力と関数で行われた処理の結果を出力する部分は、main関
数内で、検索や削除は自作関数内で行う。
少々難しいかもしれませんが、職人の皆様よろしくお願いします。
0366デフォルトの名無しさん
2006/05/25(木) 01:53:13ループの中で index の値を表示させてみ?
0367デフォルトの名無しさん
2006/05/25(木) 01:56:31MEMBERが4ならループする回数は何回?
0368デフォルトの名無しさん
2006/05/25(木) 01:59:46あぁ、
index <= MEMBERではなく index < MEMBER にするのか。
ありがとうございました。
0369デフォルトの名無しさん
2006/05/25(木) 03:41:54問題文:次のような機能を持つ電卓プログラムを実現せよ。
(1)基本機能
1.演算子は+,-,*,/を許す。
2.被演算子にはdouble型を許す。
3.式の記法には逆ポーランド記法を用いよ。
4.演算子=により結果を表示する。
実行例(左端の>は入力を表す):(1-3)*(5+6)の計算
>1 3 - 5 6 + * =
>-11
(2)数学関数
sin,cos,tan,exp,sqrなど(サポートする関数は各自決めよ)
実行例:
>3 sqr =
>9
>2 sin sqr 2 cos sqr + =
>1
(3)メモリ機能
代入法は特定しないが、次のような方法がある。
'>'+英文字によって、英文字変数に直前の演算結果の内容を保存する。
>1 2 + >a
>3 a * >b
>b a - =
>6
環境:OS→WindowsXP、コンパイラ→gcc
言語:C
期限:2006年05月29日0:00まで
その他:配列を利用したスタックを使うようです。ポインタなどの知識はありません。
よろしくお願いします。
0370デフォルトの名無しさん
2006/05/25(木) 03:56:32(1)が分かる方、どなたかいらっしゃいませんか?
0371困ってます
2006/05/25(木) 05:29:00を表示するプログラムの書き方がわかる方いますか?
0372デフォルトの名無しさん
2006/05/25(木) 08:12:50#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<ctype.h>
double s[80],*t=s,value[80];
char c[80],name[80][80];
int max_p=0;
double*srch(char*p){
int i;
for(i=0;i<max_p;++i)
if(strcmp(name[i],p)==0)return value+i;
strcpy(name[i],p);
return value+i;
}
#define o(p) else if(strcmp(c,#p)==0){--t;t[-1] = t[-1] p t[0];}
int main(){
while(!~-scanf(" %79s",c))
if(0){}o(+)o(-)o(*)o(/)
else if(strcmp(c,"=")==0)printf("%g\n",*--t);
else if(strcmp(c,"sin")==0)t[-1] = sin(t[-1]);
else if(strcmp(c,"cos")==0)t[-1] = cos(t[-1]);
else if(*c=='>') printf("%g\n",*srch(c+1) = *--t);
else if(isdigit(*c)) *t++=atof(c);
else *t++ = *srch(c+1);
return 0;
}
0373デフォルトの名無しさん
2006/05/25(木) 08:23:28ライブラリ使っちゃったモナ。
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdio.h>
#include <time.h>
int main(int argc,char *argv[]){
struct stat st;
int i,fd;
for(i=1;i<argc;i++){
fd = open(argv[i],O_RDONLY);
fstat(fd,&st);
printf("%16s %10d %8o %s",argv[i],st.st_size,st.st_mode,ctime(&st.st_mtime));
close(fd);
}
return 0;
}
0374デフォルトの名無しさん
2006/05/25(木) 08:33:26[1] 授業単元: C言語プログラミング1
[2] 問題文(含コード&リンク):配列を利用し、整数Xと実数データa1, a2, ..., aXを読み込んだ後,a1, a2, ...,
aXを小さい順に並べ替えるプログラムを作成せよ.
[3] 環境
[3.1] OS:VineLinux
[3.2] コンパイラ名とバージョン: gcc3.4
[3.3] 言語: C
[4] 期限: 本日13:00
[5] その他の制限:ifやwhileなどの構文や、配列まで
0375デフォルトの名無しさん
2006/05/25(木) 08:35:47あれ、良く見たら同じ問題っぽいのがあるや…
学校同じなのかな・・・
重複失礼しました。
0376デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
int cmpdbl(const double* a, const double* b){return (int)*a-*b;}
int main(void){
char tmp[100];
int x, i;
double* f;
fgets(tmp, 100, stdin);
x=atoi(tmp);
f=(double*)malloc(sizeof(double)*x);
for(i=0; i<x; i++){
fgets(tmp, 100, stdin);
f[i]=atof(tmp);
}
qsort(f, x, sizeof(double), (int (*)(const void*, const void*))cmpdbl);
for(i=0; i<x; i++){
printf("%f\n", f[i]);
}
return 0;
}
0377デフォルトの名無しさん
NGNGやべ。
×int cmpdbl(const double* a, const double* b){return (int)*a-*b;}
○int cmpdbl(const double* a, const double* b){return (*a>*b)?1:((*a<*b)?-1:0);}
0378デフォルトの名無しさん
2006/05/25(木) 12:10:43例えば、
int x = 10;
があって、
write()を使って10をプロンプトに出力するには
どうすればいいのでしょうか?
0380デフォルトの名無しさん
2006/05/25(木) 12:35:06標準出力にwrite(2)を使ってと言うことなら、
char buf[20];
sprintf(buf, "%d", x);
write(1, buf,strlen(buf);
こんなもんで。
0381デフォルトの名無しさん
2006/05/25(木) 13:11:00sprintfって高水準ライブラリ関数ですか?
システムコールのみしかつかえないっていう制約があるのですが。
0382デフォルトの名無しさん
2006/05/25(木) 13:22:48[2] 問題文:円周率を小数点以下100桁を計算するプログラム
[3] 環境
[3.1] OS:WinXP
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:5月28日
[5] その他の制限:マーチンの公式
π=16arctan1/5-4arctan1/239
を使って求める
初心者なのでサーパリわかりません、職人様よろしくお願いします。
0383デフォルトの名無しさん
NGNG#define STACK_DEPTH 100
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
double stack[STACK_DEPTH];
int sp=STACK_DEPTH;
double pop(void){return (sp<STACK_DEPTH)?stack[sp++]:0.0;}
void push(double f){if(sp>0)stack[--sp]=f;}
int main(void){
char line[100],*str,*str2,tmp[100];
while(1){
fgets(line, 100, stdin);
str=line;str2=strchr(line,' ');
if(str2){strncpy(tmp,str,str2-str);str=str2+1;
if(strcmp(tmp, "sin")==0) push(sin(pop())); else
if(strcmp(tmp, "cos")==0) push(cos(pop())); else
if(strcmp(tmp, "sqr")==0) push(pow(pop(),2)); else
if(strcmp(tmp, "+")==0) push(pop()+pop()); else
if(strcmp(tmp, "-")==0) push(pop()-pop()); else
if(strcmp(tmp, "*")==0) push(pop()*pop()); else
if(strcmp(tmp, "/")==0) push(pop()/pop()); else
if(strcmp(tmp, "=")==0) printf("%f\n", pop()); else
push(atof(tmp));
}
return 0;
}
0384デフォルトの名無しさん
NGNGいけね。内側ループ忘れ。
while(1){ str=line;
while((str2=strchr(line,' '))){strncpy(tmp,str,str2-str);str=str2+1;
if(strcmp(tmp, "sin")==0) push(sin(pop())); else
if(strcmp(tmp, "cos")==0) push(cos(pop())); else
if(strcmp(tmp, "sqr")==0) push(pow(pop(),2)); else
if(strcmp(tmp, "+")==0) push(pop()+pop()); else
if(strcmp(tmp, "-")==0) push(pop()-pop()); else
if(strcmp(tmp, "*")==0) push(pop()*pop()); else
if(strcmp(tmp, "/")==0) push(pop()/pop()); else
if(strcmp(tmp, "=")==0) printf("%f\n", pop()); else
push(atof(tmp));
}}
return 0;
0385デフォルトの名無しさん
2006/05/25(木) 13:49:05すみません、これを
mode, m3f, x0, y0を宣言しないでやることはできますか?
0386デフォルトの名無しさん
2006/05/25(木) 15:12:460387デフォルトの名無しさん
2006/05/25(木) 15:29:09(一般ファイル、ディレクトリ、パイプ等)を
表示するにはどうすればよいでしょうか?
0388デフォルトの名無しさん
2006/05/25(木) 15:47:290389デフォルトの名無しさん
2006/05/25(木) 15:53:54ボクの脳では、もうお手上げです・・・。
自動で書き換えるソフトを検索したりもしたのですが
Win98用だったりで使えなかったりと、ダメでした。
http://heppoko.fam.cx/upload/min/download.cgi?mode=form&file=159
DLKey memo
N88Basic→C++の作業を
もしよろしければ、お願いします。
0390デフォルトの名無しさん
2006/05/25(木) 15:56:570391デフォルトの名無しさん
2006/05/25(木) 16:18:37[2] 問題文(含コード&リンク):
中置記法で書かれた式を後置記法に変換するプログラムを作成せよ。
ただし、負の数やカッコを考える必要はない。
(実行例)
12+34-56*789/10
1234+56789*10/-
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 5月29日(月)
[5] その他の制限:
キューとスタックの演習なので、できるだけ用いていただきたいです。
0392デフォルトの名無しさん
2006/05/25(木) 16:20:41[2] 問題文:
1.引数にファイル名を指定すると、そのファイルのサイズと
ファイルの種類(一般ファイル、ディレクトリ、パイプ等)、
最終変更時刻を表示する(fview)を作成せよ。但し、引数には複数
のファイルを指定できるようにすること。また、fstatシステムコール
を用いること。
2.引数に指定した複数のテキストファイルの内容を結合して一つの
ファイルにまとめるコマンド(cat2)を作成せよ。但し、まとめた内容を
格納するファイル名は"concat.txt"とすること。但し、catコマンドを
system関数内部で呼ばないこと。
[3] 環境
[3.1] OS:windows cygwin
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C言語
[4] 期限: ([2006年5月27日23:59まで]
[5] その他の制限: 高水準ライブラリ関数は使用せずに
システムコールのみを使用する。
すみません。宜しくお願いします。
0393デフォルトの名無しさん
2006/05/25(木) 16:29:00ポインタを使わずに記述したらどのようになるのか
どなたか、教えていただけないでしょうか?
0394デフォルトの名無しさん
2006/05/25(木) 16:31:17おまいはCSの誰だ?
[2] 問題文(含コード&リンク): 再帰的関数定義とsin(x)のマクローリン展開の初めの10項を用いてsin(x)の近似値を出力するプログラムを作成せよ。
この際、xの値をキーボード入力すると、sin(x)の値の近似値を
sin_10=*******
の形式で表示させるようにせよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々) winxp
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) LSI-C86試食
[3.3] 言語: (C/C++/どちらでも可 のいずれか) c
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 2006.5.26
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
再帰的関数定義でやる。
ポインタ?、配列は未習です。
先日もうpしたのですが、[5]を忘れていました。
どなたかやさしい人おねがいします_| ̄|○
0396デフォルトの名無しさん
2006/05/25(木) 16:45:17ざっと見たがソース変じゃないか。
WHITEってwhileじゃね?とか*SELPが2700と2770の両方にあってGOSUB *SETPの飛び先が無いようだが?とか。
エラー出ずに動くのか?これ。
0397デフォルトの名無しさん
NGNG#include<stdio.h>
#include<math.h>
#include<stdlib.h>
double fact(int n){ return n>0?n*fact(n-1):1;}
int main(void){
int n; double sinx, x; char tmp[100];
fgets(tmp, 100, stdin);
x=atof(tmp); sinx=0.0;
for(n=0; n<=10; n++){ sinx += (pow(x,2*n-1)/fact(2*n+1)); }
printf("sin_10=%f\n", sinx);
return 0;
}
0398デフォルトの名無しさん
NGNG必ずどっかしら間違うな。一発コーディングは難しい…
×pow(x,2*n-1)
○pow(x,2*n+1)
0399デフォルトの名無しさん
NGNG符号も抜けてるし…
sinx += pow(-1,n)*(pow(x,2*n+1)/fact(2*n+1));
0400デフォルトの名無しさん
2006/05/25(木) 17:39:36( . . )
( )~~~
この画像を指定した座標を中心に回転させるプログラムを作りなさい。
という課題です(?_?)
三角関数を使うらしいんですけど…。
どなたか教えてください(ノ_・。)
0401デフォルトの名無しさん
2006/05/25(木) 17:39:47[2] 問題文
Gauss−Seidel反復法、及びSOR反復法によって連立一次方程式を解くプログラムを作成せよ。
(プログラム実行時に行列のデータ入力を行ない、計算できる様にプログラムせよ。)
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc、バージョンは分かりません。
[3.3] 言語:C言語
[4] 期限: 29日までです。
[5] その他の制限:CとC++を少し習いました。
0402デフォルトの名無しさん
2006/05/25(木) 18:19:14char l[81],i,c=0;
for(i=0;l[i];i++)c+=(l[i]|32)=='a';
こんな感じ
0403デフォルトの名無しさん
2006/05/25(木) 18:46:24[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1937.txt
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン:gcc4.00
[3.3] 言語: C
[4] 期限: 明日朝8時まで
[5] その他の制限: とくになし
よろしくお願いします。
0404デフォルトの名無しさん
2006/05/25(木) 18:54:02CS学科のプログラミングできないおバカさん、オレ様はもう課題終わったぜ。
まだ、やってんのか?
こんなトコで質問すると誰だかバレるな。
かわいそうに。
0405デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
int main(void){
double m1[3][3],m2[3][3],m3[3][3]; char tmp[100]; int i,j,k;
for(i=0; i<3; i++){
fgets(tmp, 100, stdin);
sscanf(tmp, "%lf %lf %lf", &m1[0][i], &m1[1][i], &m1[2][i]);
}puts("-----");
for(i=0; i<3; i++){
fgets(tmp, 100, stdin);
sscanf(tmp, "%lf %lf %lf", &m2[0][i], &m2[1][i], &m2[2][i]);
}puts("-----");
for(i=0;i<3;i++)for(j=0;j<3;j++)m3[j][i]=0;
for(i=0;i<3;i++)for(j=0;j<3;j++)for(k=0;k<3;k++)m3[j][i]+=m1[j][k]*m2[k][i];
for(i=0;i<3;i++){for(j=0;j<3;j++)printf("%g ",m3[j][i]);putchar('\n');}
return 0;
}
0406デフォルトの名無しさん
2006/05/25(木) 21:06:03おまえここで何してんの
0407311
2006/05/25(木) 21:11:24やっとできた・・・
0408灰色の幽霊
2006/05/25(木) 21:14:04>>147
>>148
どうもありがとうございました。完璧でした、
[1]情報処理
[2]標準入力から最初に与えられた個数(整数)の要素を持つ配列を
動的に生成し、その後、その個数分だけ(標準入力から)与えられた整数
データを逆順にして出力するプログラムを作成せよ(動作例参照)。
なお、プログラム終了時の領域の解放についても留意すること。
(動作例)「> 」の後の文字列はキーボードからの入力を表す
生成する配列の要素数を入力してください。
> 4
1つめの値を入力してください。
> 12
2つめの値を入力してください。
> 23
3つめの値を入力してください。
> 34
4つめの値を入力してください。
> 99
入力された値を逆順に表示します。
99 34 23 12
おわり
[4]6/1迄
よろしくお願いします。。
040941
2006/05/25(木) 21:52:50確かに単純なエラーでした orz
大文字のVと小文字のVかよ、、、
こちらのプログラムだとエラーなし、で動くのですが、
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1938.txt
メニュークリックまで線を描かない
線が右上から勝手に始まってしまう
テキストが一文字のみ
2点をつなげるなどができません
最後、ご教授下さい!お願いします
0410デフォルトの名無しさん
2006/05/25(木) 22:02:02課題:GRAPHIC関数を使った愛のあるアート
まじで頼む
0411デフォルトの名無しさん
2006/05/25(木) 22:10:24[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1939.txt
[3] 環境
[3.1] OS: linux
[3.2] コンパイラ名とバージョン:gcc4.00
[3.3] 言語: C
[4] 期限: 明日朝まで
[5] その他の制限: ポインタは習っていません
よろしくお願いします。
0412デフォルトの名無しさん
2006/05/25(木) 22:12:280413デフォルトの名無しさん
2006/05/25(木) 22:19:56[2] 問題文(含コード&リンク):
中置記法で書かれた式を後置記法に変換するプログラムを作成せよ。
ただし、負の数やカッコを考える必要はない。
(実行例)
12+34-56*789/10
12 34 + 56 789 * 10 / -
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C言語
[4] 期限: 5月29日(月)
[5] その他の制限:
キューとスタックの演習なので、できるだけ用いていただきたいです。
0414デフォルトの名無しさん
2006/05/25(木) 22:24:28[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1940.txt
[3] 言語: ProC
[4] unix
期限:もう過ぎてる・・・
その他の制限:sqlplusに接続しなくてはならない
[内容]
会員登録、削除等のプログラム
現在、プログラムの起動はされるのですが
各種項目が正常に作動しておりません。
入力そのものはできてるので、各関数部分に問題があるようです。
Procなのでスレ違いかもですがもしわかる方がおりましたらお願いします・・・
ありがとうございます!!
でも、fgetsは配列関係ですか??
習ってないので良く分からないんですが(;´д`)
良ければfgetsを使わない方法お願いします(´・ω・`)
0417デフォルトの名無しさん
2006/05/25(木) 22:35:48英作文で教科書にまだ出てない単語使うなって言うようなものだよなぁ
0418デフォルトの名無しさん
2006/05/25(木) 22:39:06[1]授業単元:CAD/CAM演習
[2]問題文:GRAPHIC関数を使った愛のあるアート(なんかの絵、何でも良い)のプログラムを作れ
[3]環境
[3.1]OSと言われてイマイチ分からないXPで良いのかな?
[3.2]C言語
[3.3]1年前
ほんとお願いします><゛
0419デフォルトの名無しさん
2006/05/25(木) 22:40:05[言語]C言語
[提出日]5月26日
[環境]Visual Stdio.NET2003
[OS]Windows XP
[問題]
次の2題のプログラムを参考にしてプログラムを作成せよ。
1.データファイル DatFile.dat を読み込み、「会員番号」と「通し 番号」
(最初の会員番号 555 の A さんが 0 番、最後の 333 の J さん が 9 番)を順番に表示するプログラム
2. 「会員番号」と「通し番号」を順番に表示した後、「会員番号」 と「位置」を保存したインデックスファイル
IdxFile.dat を自動的 に作成するプログラム
とりあえず、1問目だけでもいいのでお願いします。
プログラムはUPしました。
■参考プログラム1
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1941.txt
■参考プログラム2
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1942.txt
0420デフォルトの名無しさん
2006/05/25(木) 22:47:24#include <stdio.h>
#include <stdlib.h>
int main(){
int num, *p, i, *p_tmp;
printf("生成する配列の要素数を入力してください。\n> ");
scanf("%d", &num);
if ((p = (int *)calloc(num, sizeof(int))) != NULL){
p_tmp = p;
for (i = 0; i < num; i++){
printf("%dつめの値を入力してください。\n> ", i + 1);
scanf("%d", p++);
}
printf("入力された値を逆順に表示します。\n");
do {
printf("%d ", *(--p));
} while (p != p_tmp);
free(p);
printf("\nおわり\n");
}
return 0;
}
0421デフォルトの名無しさん
2006/05/25(木) 22:57:54言語仕様でならってないなら分かるが標準ライブラリだもんな
習うとかじゃなくて、自分で調べるレベルだし
0422デフォルトの名無しさん
2006/05/25(木) 23:06:05あれれ?単語と文法の違いも分からないのかな?
馬鹿の僕たちが学習しているのはIやpenなどの単語じゃないでしょ?
I have a pen というIやpenの使い方を学習してるんだよ
それだから英語ができないんだよ^^
0423デフォルトの名無しさん
2006/05/25(木) 23:12:27ほんと誰かお願いします><゛
0424デフォルトの名無しさん
2006/05/25(木) 23:20:21ネタにマジレスしてみる。
>OSと言われて…
グラフィック関係なら、OSとコンパイラが指定されないと実質的に無理。
>GRAPHIC関数を使った
↑とも関連するけど、標準にはGRAPHIC関数という物はないので、その辺の指定を詳しく。
>1年前
何で今頃頑張ってるの?
>>422
例え話の揚げ足取るなんて、暇だね。
0425デフォルトの名無しさん
2006/05/25(木) 23:21:55具体例の使い方が間違ってますよ って言ってるだけだお^^
0426デフォルトの名無しさん
2006/05/25(木) 23:39:39ほんとスイマセン><゛
こんな感じのですhttp://p.pic.to/5637u
昨年単位取れなかったやつで、追認をしてくれないので出しますって言ったら明日なって言われたんです><;
だから明日ですスイマセン><゛
0427デフォルトの名無しさん
2006/05/25(木) 23:43:42お願いします。問題でもいいので
0428365
2006/05/25(木) 23:44:290429デフォルトの名無しさん
2006/05/25(木) 23:47:05Cのifやwhileってのは文法だと思うぞ。
関係代名詞習ってないので使わないでって言うのと同じ気がする。
>426
>大変申し訳ございませんが、ただいまの時間はPCでのアクセスを制限しております。
別のところにアップしたほうがいいぞ。
0430デフォルトの名無しさん
2006/05/25(木) 23:47:06明らかに、まだ期限内だろ。そういう態度が気に食わない。
0431苦しい ◆6plO32FN4k
2006/05/25(木) 23:48:33[2] 問題文(含コード&リンク):
(問題1)削除コマンド(myrm)及びハードリンクとシンボリックリンクの違い。
unlinkを用いて、リンクを削除するプログラムmyrmを作成してください
(問題2)ファイル属性を保存してコピーするコマンドmylsを作成してください。
保存すべき属性は以下のものとします。
・モード(アクセス許可)
・最終変更時刻
ヒント:statを用いてコピー元の情報を取り出し、chmodやutimeで設定します
[3] 環境
[3.1] OS: UNIX
[3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0 であってると思う
[3.3] 言語: C
[4] 期限: 2006年05月30日12:00まで
[5] その他の制限:特になし。よろしくお願いします
0432デフォルトの名無しさん
NGNGあとは自分で。
0433デフォルトの名無しさん
NGNG> [3.1] OS: UNIX
> [3.2] コンパイラ名とバージョン: gcc 3.4 VC 6.0 であってると思う
ねえよw
0434苦しい ◆6plO32FN4k
2006/05/25(木) 23:59:140435デフォルトの名無しさん
2006/05/26(金) 00:10:17http://a.p2.ms/n3vlq
0436デフォルトの名無しさん
2006/05/26(金) 00:18:51動作チェックはしてない。
#include <stdio.h>
#include <string.h>
int jisaku(char str[])
{
char *p, *q, *constr;
p = strstr(str, "均s");
q = strstr(str, "均e");
if( (p == NULL && q == NULL) || (p != NULL && q != NULL) ) return 0; /*前半は念のため*/
constr = (p == NULL)?"均e":"均e";
for( p = strstr(str, constr) ; p ; p = strstr(p + 1, constr) ) {
for( q = p ; *(q + 3) ; q++ ) *q = *(q + 4);
}
return 1;
}
int main(void)
{
char str[256];
whlie( fgets(str, 256, stdin) ) {
if( jisaku(str) ) puts("編集しますた");
else puts("編集してません");
printf("%s", str);
}
return 0;
}
0437デフォルトの名無しさん
2006/05/26(金) 00:20:10読めるか阿呆め。
文章で書かれてるなら、その内容をここに写せ。
0438デフォルトの名無しさん
2006/05/26(金) 00:25:46正直、そうくるとは思わなかった。
0439デフォルトの名無しさん
2006/05/26(金) 00:34:42#include <Glibw32>
int main()
{
ginit(300,300,WHITE);
GRAPH g;
g.line(100,100,200,200);
}
gend();
[EOF]
こんな感じです><゛
0440デフォルトの名無しさん
2006/05/26(金) 00:36:28すいませんこっちです><゛
#include <glibw32>
int main()
{
ginit(300,300,WHITE);
GRAPH g;
g.line(100,100,200,200);
}
gend();
[EOF]
こんな感じです><゛
0442デフォルトの名無しさん
2006/05/26(金) 00:43:470443デフォルトの名無しさん
2006/05/26(金) 00:48:39簡単な文字とかじゃダメみたいでまったく分からないんです><゛
0444デフォルトの名無しさん
2006/05/26(金) 00:51:08ざっと見た感じ、参考プログラムそのままでいいんじゃないの?
何か駄目なの?
このスレを卒業するべくもう一度一から勉強しようと思いました(´・ω・`)
今、学校で使っている『Cによるプログラミング演習』という本しかないのですが、
何かはじめに読むには最適な、↑の本より分りやすいものを教えてください!!
お願いします!!
0446デフォルトの名無しさん
NGNGカオスかフラクタルでもやればよかろ。
0447デフォルトの名無しさん
2006/05/26(金) 01:06:25>>383
レスありがとうございました
内側のループとは何処につくのでしょうか?
0448デフォルトの名無しさん
2006/05/26(金) 01:09:06これ出さないとヤバいんです><゛
0449デフォルトの名無しさん
2006/05/26(金) 01:09:23[2] リストの最後に順次要素を追加できるように下線部を埋めなさい。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1943.txt
改行エラーが出たのでリンクで貼らせていただきます。
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: borland C++
[3.3] 言語: C
[4] 期限: 5/29
何卒お願いします。
0450224
2006/05/26(金) 01:10:53『さようなら』って左上に文字列が出て。
10秒後、ピンク色で『でも大好き!』って文字列が右下に出る。
0451224
2006/05/26(金) 01:11:44あっ?
ライフゲームでいいじゃなーい!
0452デフォルトの名無しさん
2006/05/26(金) 01:30:39void lastin(int x, struct cell *head)
{
struct cell *p, *q;
p = head;
while(p->next!=NULL){
p = p->next;
}
q = (struct cell*)malloc(sizeof(struct cell));
p->next = q;
q->element = x;
q->next = NULL;
}
0453デフォルトの名無しさん
2006/05/26(金) 01:31:480454デフォルトの名無しさん
2006/05/26(金) 01:33:24[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1944.txt
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン: gcc 4.0
[3.3] 言語: C
[4] 期限: 26日08:00
よろしくお願いします
0455デフォルトの名無しさん
2006/05/26(金) 01:39:29もしかして、問題違うんじゃ…
0456デフォルトの名無しさん
2006/05/26(金) 01:46:380458413
2006/05/26(金) 01:53:020459デフォルトの名無しさん
2006/05/26(金) 01:58:29void to_low(char s[]){
int i;
for(i = 0; s[i] != NULL; i ++)
if(s[i] >= 'a' && s[i] <= 'z')
s[i] -= 'a' - 'A';
}
0460デフォルトの名無しさん
2006/05/26(金) 02:05:16大体何年生くらいからなんですか?
0462デフォルトの名無しさん
2006/05/26(金) 02:11:02>1
0463デフォルトの名無しさん
2006/05/26(金) 02:21:57[2] 問題文:
次の5×5行列を次のように整列し、出力も行列の形で出力せよ
22 19 12 6 20 1 2 3 4 5
5 11 2 19 9 6 7 8 9 10
21 18 1 13 4 → 11 12 13 14 15
3 10 25 7 14 16 17 18 19 20
23 15 8 16 24 21 22 23 24 25
[3] 環境
[3.1] OS: windowsXP
[3.2] コンパイラ: gcc
[3.3] C
[4]今日中
お願いします
0464463
2006/05/26(金) 02:26:3222 19 12 6 20
5 11 2 19 9
21 18 1 13 4
3 10 25 7 14
23 15 8 16 24
これを
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
に整列する問題です
0465デフォルトの名無しさん
2006/05/26(金) 02:36:23[2] 問題文(含コード&リンク):
変数nameには名前,変数amountには貯金額(最初は0円)が入っている.
以下のように3回貯金できるプログラムを作成せよ.ただし変数はname, amount以外には一つしかつかえない.
-----------------------------
名前を入力して下さい:michinobu
michinobu さん.
現在の貯金高は,0円です.
今回はいくら貯金しますか?(単位:千円):10.5
michinobu さん.
現在の貯金額は,10500円です.
今回はいくら貯金しますか?(単位:千円):0.03
michinobu さん.
現在の貯金額は,10530円です.
今回はいくら貯金しますか?(単位:千円):100.0
michinobu さん.
全部で110530円貯まりました.
よくがんばりました.
------------------------------
[3] 環境
[3.1] OS:WindowsXP-SP2
[3.2] Microsoft Visual Studio 2003
[3.3] 言語:C++
[4] 期限: 05月26日13:00まで
[5]下の状態までは出来ました。しかし貯金額に少数を打ち込むと失敗します。
あと、応用で[10530円]を[10,530円]といった具合にコンマを入れる問題があるのですがさっぱりです(汗
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1945.txt
0466デフォルトの名無しさん
2006/05/26(金) 02:45:41int enter; を double enter;
scanf("%d", &enter);をscanf("%lf", &enter);に書き直す
,のほうは
printf("%d,%d", amount/10000, amount%10000);
一万以下だと表示的におかしいけどif文でも使って分岐させれば…
0467デフォルトの名無しさん
2006/05/26(金) 04:15:41適当
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1946.txt
0468デフォルトの名無しさん
2006/05/26(金) 05:32:43ほい、愛あるアート
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1947.cpp
0470デフォルトの名無しさん
2006/05/26(金) 12:05:37このプログラムお願いします!
0471デフォルトの名無しさん
2006/05/26(金) 12:09:560472デフォルトの名無しさん
2006/05/26(金) 12:30:310473デフォルトの名無しさん
2006/05/26(金) 13:25:17[2] 問題文:
連結リストに対して、それを逆順に書き換える関数Reverse(struct node* p)を作成せよ。
(連結リストにおける構造体はこのように学習しました。)
struct node {
int i;
struct node* next;
}
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5/29(月)
0474デフォルトの名無しさん
2006/05/26(金) 13:47:10struct node* Reverse(struct node* p)
{
struct node* prev = NULL;
while(p)
{
struct node* next = p->next;
p->next = prev;
prev = p;
p = next;
}
return prev;
}
0475デフォルトの名無しさん
2006/05/26(金) 14:33:51本当にどうもありがとうございます。これからもがんばってください!
0476デフォルトの名無しさん
2006/05/26(金) 14:38:10オマエモナー
0477デフォルトの名無しさん
2006/05/26(金) 15:20:16[2] 問題文:
社員5名の給与を一万円,五千円,二千円,千円,五百円,百円,五
十円,十円,五円,一円の各紙幣および硬貨で支払う条件下で,社員5名の給与
をキーボードから入力し,各金額に対して用意すべき紙幣・貨幣の札数・個数およ
びそれらの合計を表示するプログラムを作成せよ.ただし,計算には
配列を使用すること.
入出力例)
Please input salary.
ID#1:216787
ID#2:150986
ID#3:357800
ID#4:109999
ID#5:234439
ID#1: Salary 216787YEN
10000YEN: 21 5000YEN: 1 2000YEN: 0 1000YEN: 1 500YEN: 1
100YEN: 2 50YEN: 1 10YEN: 3 5YEN: 1 1YEN: 2
ID#2: Salary 150986YEN
・
・
・
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5/31
[5] どうかおねがいします(ノД`)なんかエグそうで申し訳ないですが・・・
0478デフォルトの名無しさん
2006/05/26(金) 16:10:52漏れの頭じゃこんなのしかできんかった
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1948.c
0479デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
#define MEMBERS 5
int changes(int money,int par){int res=0;while(money>par){money-=par;res++;}return res;}
int main(void){
int salary[MEMBERS];int fukuzawa[MEMBERS];int higuchi[MEMBERS];int noguchi[MEMBERS];
int shureimon[MEMBERS];int coin500[MEMBERS];int coin100[MEMBERS];int coin 50[MEMBERS];
int coin10[MEMBERS];int coin5[MEMBERS];int coin1[MEMBERS];
int i;char tmp[100];
for(i=0;i<MEMBERS;i++){printf("ID#%i:", i);fgets(tmp,100,stdin);salary[i]=atoi(tmp);}
for(i=0;i<MEMBERS;i++){printf("ID#%i: Salary %iYEN\n",i,salary[i]);
fukuzawa[i]=changes(salary[i],10000);salary[i]-=10000*fukuzawa[i];
higuchi[i]=changes(salary[i],5000);salary[i]-=5000*higuchi[i];
shureimon[i]=changes(salary[i],2000);salary[i]-=2000*noguchi[i];
noguchi[i]=changes(salary[i],1000);salary[i]-=1000*shureimon[i];
coin500[i]=changes(salary[i],500);salary[i]-=500*coin500[i];
coin100[i]=changes(salary[i],100);salary[i]-=100*coin100[i];
coin50[i]=changes(salary[i],50);salary[i]-=50*coin50[i];
coin10[i]=changes(salary[i],10);salary[i]-=10*coin10[i];
coin5[i]=changes(salary[i],5);salary[i]-=5*coin5[i];coin1[i]=salary[i];
printf("10000YEN:%i 5000YEN:%i 2000YEN:%i 1000YEN:%i 500YEN:%i\n",
fukuzawa[i],higuchi[i],shureimon[i],noguchi[i],coin500);
printf("100YEN:%i 50YEN:%i 10YEN:%i 5YEN:%i 1YEN:%i\n",
coin100[i],coin50[i],coin10[i],coin5[i],coin1[i]);}
return 0;}
0480デフォルトの名無しさん
2006/05/26(金) 16:35:56int shureimon
ワロタw
その命名センスに座布団5枚w
0481デフォルトの名無しさん
NGNG0483デフォルトの名無しさん
2006/05/26(金) 17:12:430484デフォルトの名無しさん
NGNGバグ3件くらい仕込んである。自分でデバッグしる。
0485デフォルトの名無しさん
NGNG嫌がらせ。
0486難問〜
2006/05/26(金) 17:36:44[1] 授業単元:C言語
[2] 問題文(含コード&リンク): 素因数分解の問題で、再帰を使って、和が一定となる自然数の列をすべて列挙するプログラムを考えよ。
また再帰を用いずに素因数分解を行うプログラムも考えよ。
そして、再帰を用いたプログラムと、再帰を用いないやつの比較 検討せよ
[3] 環境
[3.1] OS: Windows
[3.2] スタジオ6.0
[3.3] 言語: C++
[4] 期限: 05月31日まで
です。
ほんとわかりません・・。
助けてください・・・。
どうかお願いします!
0487難問〜
2006/05/26(金) 17:37:38#include<stdio.h>
void abs_sum(int n,int w);
int main(){
int w=2,n=3;
abs_sum(n,w);
return 0;}
void abs_sum(int n,int w){
void in_abs_sum(int total_length,int n,int w);
in_abs_sum(n,0,w);}
void in_abs_sum(int total_length,int pos,int w){
int i,j,called=0;
if(pos>=total_length){
putchar('\n');
return;}
for(i=0;i<=w;++i){
if(called++){
for(j=0;j<pos;++j){
printf(" ");}}
printf(" %2d",i);
in_abs_sum(total_length,pos+1,w-i);}}
0488デフォルトの名無しさん
2006/05/26(金) 17:38:33意味が分からん。
0489デフォルトの名無しさん
2006/05/26(金) 17:50:07日本語でおk
それが原文なら教官にアフォって言っとけ
0490難問〜
2006/05/26(金) 17:50:07111
12
21
3
みたいに和が一定になるようなプログラムを作ってください。お願いします!!
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
2006/05/26(金) 17:57:07素因数分解じゃねーじゃん
0493難問〜
2006/05/26(金) 17:59:220494デフォルトの名無しさん
NGNG0495デフォルトの名無しさん
2006/05/26(金) 18:03:480496難問〜
2006/05/26(金) 18:12:35[非負整数 -> 自然数],[長さ一定 -> 和一定]といった変形を加えることを考える
っていってました。
3っていうのは、例えです。
111で3
12で3
21で3
3で3
という風にすべての列が、和が3になっているということです。
素因数分解では,同じ因数が複数回出て来ることがあることに 注意.とも言ってました。
わかりましたでしょうか??
0497難問〜
2006/05/26(金) 18:16:56000
1
2
10
1
20
100
1
10
200
です。
参考までに・・。
お願いします。
0498デフォルトの名無しさん
NGNG例えの「3」の根拠が分からん。「3」に相当する物は入力なのか自分で作るのか。
素因数分解がどこにどう関係してるのかもさっぱり分からん。
0499デフォルトの名無しさん
2006/05/26(金) 18:17:37というかその場合、和が一定は列じゃなくて行だし
0500難問〜
2006/05/26(金) 18:18:37すいません。
0501デフォルトの名無しさん
NGNGその実行結果が問題と何の関係があるのかもさっぱり分からん。
というか、参考プログラムが何をする物なのか、何の参考になるのかがまずわからん。
0502デフォルトの名無しさん
2006/05/26(金) 18:21:50#include<stdio.h>
int array[1000];
void trial(int sum, int n){
int i;
if (sum <= 0) {
for (i = 0; i < n; ++i) printf("%2d", array[i]);
putchar('\n');
} else {
for (i = 1; i <= sum; ++i) {
array[n] = i;
trial(sum - i, n + 1);
}
}
}
int main(){
int wa=3;
trial(wa, 0);
return 0;
}
0503デフォルトの名無しさん
2006/05/26(金) 18:22:570504デフォルトの名無しさん
NGNG0505デフォルトの名無しさん
2006/05/26(金) 18:40:550506デフォルトの名無しさん
2006/05/26(金) 19:23:09わかりません、ごめんなさいとはっきり言えよ
0507デフォルトの名無しさん
2006/05/26(金) 20:15:57int input (char);
int calc1 (int,int);
int calc2 (int,int);
int calc3 (int,int);
void output (int,int,int,int);
void main (void)
{
int a,b,c,n;
a=input('1');
b=input('2');
c=input('3');
n=calc1(a,b);
n=calc2(b,c);
n=calc3(a,c);
output(a,b,c,n);
}
。
0508デフォルトの名無しさん
2006/05/26(金) 20:16:56{
int x;
if(m=='1')
printf("入力1→");
else if(m=='2')
printf("入力2→");
else
printf("入力3→");
scanf("%d",&x);
return x;
}
calc1 (int a,int b)
{
return a+b;
}
calc2 (int b,int c)
{
return b+c;
}
calc3 (int c,int a)
{
return c+a;
}
0509デフォルトの名無しさん
2006/05/26(金) 20:17:27{
printf("\n");
printf("%d+%d=%d\n",a,b,n);
printf("%d+%d=%d\n",b,c,n);
printf("%d+%d=%d\n",c,
inputの部分が違うと思うんだけど、どう直せばいい?
入力123って続くのが入力333になる・・・
0510デフォルトの名無しさん
2006/05/26(金) 20:20:22長い上にインデント崩れて見にくい
次からはうpろだに貼れ
多分だが、if条件式の中の'1', '2', '3'が全角なのが原因
0511デフォルトの名無しさん
2006/05/26(金) 20:20:290512デフォルトの名無しさん
2006/05/26(金) 20:23:03それにしても汚いコードだ
0513デフォルトの名無しさん
2006/05/26(金) 21:32:28int number=110530;
printf("%d",number);
という風にして実行すると
110530 という風に表示されるじゃないですか。
それを
11,0530 という風に11と0530の間に,を入れて表示したいのですががどうすればいいでしょうか?
0514難問〜
2006/05/26(金) 21:44:04入力するのではなく
int w=2,n=3; の部分の数字を変えてくパターンです。
数字をいじれば和の合計が変わっていくような。
もし3にすれば、和はすべて3になるし、
5にすれば和はすべて5になるっといった感じです。
参考プログラムを少しいじればできる問題だそうです・・。
参考のでは、非負整数で、長さが一定なんですが、
それを非負整数ではなく自然数にし、長さ一定 ではなく、和一定にすればできるらしいんですが。
なんか意味わからなくてすいません・・。
0515デフォルトの名無しさん
2006/05/26(金) 21:44:33>>466
を参考に
0516デフォルトの名無しさん
2006/05/26(金) 22:04:09コマンドプロンプトでCを始めたいんですが、設定変えたり必要ですか?
0517デフォルトの名無しさん
2006/05/26(金) 22:12:20失せろ
0518デフォルトの名無しさん
2006/05/26(金) 22:46:15しかもそれで相手の期待通りのモノができなきゃダメなの?
0519デフォルトの名無しさん
2006/05/26(金) 22:58:30ひどいとそうだけど、
まともな人間なら客からヒアリングをきちんとして
スケジュール、要件定義書、機能設計書、詳細設計書、テスト計画書、その他諸々
ドキュメントを書き、
「これでいいんですよね?これでつくりますよ?後で違うとか文句言うなよ?」
と確認を取ってからつくります
0520デフォルトの名無しさん
NGNGchar number[]="11,0530";
printf("%s",number);
>>514
もう付き合ってられん。通訳連れてこい。
0521デフォルトの名無しさん
2006/05/26(金) 23:18:49ただし、nの値はmainのローカル変数の初期値として与える。
ってことだろ。
0522デフォルトの名無しさん
NGNG0523デフォルトの名無しさん
2006/05/26(金) 23:29:18再帰のような初歩的なものしか学習してないのに、自分で難問とかほざいてる
つまりこの問題は解かなくてもいい問題だと先生が言ってるんでしょ(必修問題ではない)
はい、さようなら
0524デフォルトの名無しさん
2006/05/26(金) 23:36:47最初から義務ではないんだから、「無視していいと思うよ」という発言は無意味。
そういうスレだろ?
0525デフォルトの名無しさん
2006/05/26(金) 23:45:10ここのヒーローになれるぜ!!
解けなかったらお前は所詮そこまでだったってことだ。
0526デフォルトの名無しさん
2006/05/26(金) 23:52:210527デフォルトの名無しさん
2006/05/26(金) 23:53:52君にヒーローの称号を譲るよ。
所詮、俺はそこまでだ。
0528デフォルトの名無しさん
2006/05/27(土) 00:03:13処理の前半で適当に因数分解すればいいんじゃね?
12とか。んで適当に3とか抜き出してnにセット
0529デフォルトの名無しさん
2006/05/27(土) 00:08:090530デフォルトの名無しさん
2006/05/27(土) 00:10:57あ、俺は見せんよ。
0531デフォルトの名無しさん
NGNG0532デフォルトの名無しさん
2006/05/27(土) 00:26:260533デフォルトの名無しさん
2006/05/27(土) 00:27:15エスパーではないからな。
0534デフォルトの名無しさん
2006/05/27(土) 00:28:290535デフォルトの名無しさん
2006/05/27(土) 00:34:28和って言ってるけど積だったってオチ。
0536デフォルトの名無しさん
2006/05/27(土) 00:36:360537デフォルトの名無しさん
2006/05/27(土) 00:38:15でも積は一定だから素数の順列を表示とか?意味ねえw
0538デフォルトの名無しさん
NGNG0539デフォルトの名無しさん
2006/05/27(土) 00:54:21勝手に束縛条件をつけて解答
#include <stdio.h>
#define KOU_SUU 5//項の数
#define HENIKI 5//それぞれが0~HENIKIの値をとりうる 0が自然数でない派はnum[]を1で初期化して、num[i]=0をnum[i]=1に直す
#define WA 10//表示する和
int main(void)
{
int num[KOU_SUU]={0},i,goukei,show=0;
for(;num[KOU_SUU-1]<=HENIKI;)
{
for(i=KOU_SUU-1,goukei=0;i>=0;i--)goukei+=num[i];
if(goukei==WA)
{
for(i=KOU_SUU-1;i>=0;i--){printf("%d",num[i]);if(i)printf("+");else printf("=");}
printf("%d\n",WA);show++;
if((show%20)==0)getchar();
}
num[0]++;
for(i=0;i<=KOU_SUU-2;i++)
if(num[i]>HENIKI){num[i]=0;num[i+1]++;}
}
return 0;
}
和が一定となる自然数の列を列挙する というところまでは答えた。
0540デフォルトの名無しさん
2006/05/27(土) 00:59:14[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1949.txt
課題の内容:hash関数を用いてデータの格納、検索を行うプログラムを作成し、
分割コンパイルする。
[3] 環境
[3.1] OS: Windows (cygwin)
[3.2] gcc
[3.3] 言語: C
[4] 期限: ([2006年5月30日12:00amまで]
[5] その他の制限: 特になし
上記のろだに詳細を書きました、
以上です、長々とすみません
よろしくお願いいたします。
0541デフォルトの名無しさん
2006/05/27(土) 01:14:37[2] 問題文(含コード&リンク): 3個の変数のうち、最小のものを返す関数型引数マクロmin3(a,b,c)を作成し、これを確認するメイン関数をかけ。ただし、メイン関数内では、a,b,cの値がキーボード入力されると、その最小値を出力せよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々) winxp
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) 3個の変数のうち、最小のものを返す関数型引数マクロmin3(a,b,c)を作成し、これを確認するメイン関数をかけ。ただし、メイン関数内では、a,b,cの値がキーボード入力されると、その最小値を
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 再来週
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
マクロがわかりません…
0542デフォルトの名無しさん
2006/05/27(土) 01:15:07[2] 問題文(含コード&リンク): 10までの整数値(length)を読み込んで,以下のような表示をするプログラムを作成せよ.
[実行結果1]
一辺の長さを入力してください(1から10まで):3
xxx
xxo
xoo
[実行結果2]
一辺の長さを入力してください(1から10まで):7
xxxxxxx
xxxxxxo
xxxxxoo
xxxxooo
xxxoooo
xxooooo
xoooooo
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン: VisualStudio.net2003
[3.3] 言語: C++
[4] 期限: 6月7日
[5] その他の制限: まだ、初期で、for文、while文まで習いました。
よろしくお願いします!
0543デフォルトの名無しさん
2006/05/27(土) 01:26:25#include<stdio.h>
//マクロ
#define min2(a, b) ((a) < (b) ? (a) : (b))
#define min3(a, b, c) (min2((min2((a),(b))),(c)))
int main(){
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
printf("%d\n", min3(a, b, c));
}
0544デフォルトの名無しさん
2006/05/27(土) 01:29:52#include <stdio.h>
int main(void) {
int i,j,length=10;
for(i=0;i<length;i++) {
for(j=0;j<length;j++) {
printf("%s",(j < length-i ? "x" : "o"));
}
printf("\n");
}
return (0);
}
0545デフォルトの名無しさん
2006/05/27(土) 01:30:30#include<iostream>
using namespace std;
int main(){
int n,i;
cout<<"一辺の長さを入力してください(1から10まで):";
cin >> n;
for(i=n;i;)cout.write("xxxxxxxxxxooooooooo"+10-i--,n) << endl;
}
0547デフォルトの名無しさん
2006/05/27(土) 01:43:10マクロ2つ使うんですね!!
1つだけでめちゃめちゃになってました。
ありがとうございます。
0548デフォルトの名無しさん
2006/05/27(土) 02:16:20//(1)
nt enter(char *id1, int info1){
int x, count = 0;
x = hash(id1);
while(strlen(table[x].id)){
if(strcmp(id1, table[x].id) == 0 || ++count == M)return (-1);
if(++x == M)x = 0;
}
table[x].info = info1;
strcpy(table[x].id, id1);
return (x);
}
int search(char *id1){
int x, count = 0;
x = hash(id1);
while(strcmp(id1, table[x].id)){
if(strlen(table[x].id) == 0 || ++count == M)return (-1);
if(++x == M)x = 0;
}
return (table[x].info);
}
0549デフォルトの名無しさん
2006/05/27(土) 02:23:28(2), (3)↓ (4)は勝手に分割してやっちゃって
つかmain内に変数buf用意したけどあんまり意味ないなぁ…
int cancel(char *id1){
int x, count = 0;
x = hash(id1);
while(strcmp(id1, table[x].id)){
if(strlen(table[x].id) == 0 || ++count == M)return (-1);
if(++x == M)x = 0;
}
strcpy(table[x].id, "");table[x].info = -1;
return (x);
}
/* ---main.c--- */
int main(){
int t, busy = 1; char key[20], buf[10];
initialize();
while(busy){
printf("a:add member\nc:remove member\ns:search member\nq:quit\n");
scanf("%9s", buf); //fseek(stdin, 0L, SEEK_CUR);
switch(buf[0]){
case 'a':
printf("add (ex. hoge 2006)\n"); scanf("%19s %d", key, &t); enter(key, t); break;
case 'c':
printf("cancel (ex. hoge)\n"); scanf("%19s", key); cancel(key); break;
case 's':
printf("search (ex. hoge)\n"); scanf("%19s", key); t = search(key); printf("%s => %d\n", key, t); break;
case 'q':
busy = 0; break; } }
show_table(); return 0;
}
0550デフォルトの名無しさん
2006/05/27(土) 02:54:10[2] 問題文(含コード&リンク):
#include <stdio.h>
int main(void)
{
int i,j;
for(i=1; i<=9 ; i++)
{
printf("%dの段スタート!\n",i);
for(j=1 ; j<=9 ; j++)
{
printf("%dかける %d は %d\n",i,j,i*j);
}
printf("%dの段おわり!\n\n",i);
}
}
------------------------------------------------------------------------------
このリストをwhile文を使って作成せよ.なお,使用する変数の数は制限しない.
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: VisualStudio.net2003
[3.3] 言語: C++
[4] 期限: 6月9日13:30まで)
[5] その他の制限:特になし
0551デフォルトの名無しさん
2006/05/27(土) 03:01:38おいおい
このスレで言っちゃいけないかも知れんが
ごく簡単な基礎の問題だし、締め切りもまだ先なんだから
ちょっとは自分で考えた方がよくないか?
気に障ったらスルーしてね
0552デフォルトの名無しさん
2006/05/27(土) 05:13:13int main(void)
{
int i,j;
while(1){
for(i=1; i<=9 ; i++)
{
printf("%dの段スタート!\n",i);
for(j=1 ; j<=9 ; j++)
{
printf("%dかける %d は %d\n",i,j,i*j);
}
printf("%dの段おわり!\n\n",i);
}
break;
}
}
0553デフォルトの名無しさん
2006/05/27(土) 06:39:08#include <stdio.h>
int main(void)
{
int i,j;
i = 1;
while(i <= 9) {
printf("%dの段スタート!\n",i);
j = 1;
while(j <= 9) {
printf("%dかける %d は %d\n",i,j,i*j);
j++;
}
printf("%dの段おわり!\n\n\a",i);
i++;
}
}
0554デフォルトの名無しさん
2006/05/27(土) 09:32:07好き。
0555デフォルトの名無しさん
2006/05/27(土) 09:44:41[2] 問題文:f(x)=5exp(-3.28x)sin(13x)+x^3-0.8=0(0<x<1)を2分法、ニュートン法を用いて解け
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C
[4] 期限: 5月29日
[5] その他の制限:
0556デフォルトの名無しさん
2006/05/27(土) 14:43:22[2] 西暦年を入力し,その年がうるう年かどうかを調べ,結果を表示するプログラムを考え,下のようなプログラムを作った.しかし,このプログラムには誤りがあり,うまく動かなかった.
1. 下のプログラムの誤りを指摘せよ.ただし,誤りは1つではない. 2.当初の目的の機能を持つよう直せ. 3指摘し,直した点は,なぜ下のプログラムではうまくいかないのか.考察せよ.
なお,うるう年は以下のルールに従う.基本的に4で割りきれる年がうるう年であるが,100年に一度はうるう年でなく,その中でも400年に一度はうるう年である.(例:1900年,2006年はうるう年でない.2000年,2004年はうるう年である.)
1:#include <stdio.h>
2:
3:int main(void)
4: {
5: int year, leep;
6:
7: printf("西暦年を入力してください:");
8: scanf("%d",&year);
9:
10: leep = (year%4==0) && (!year%100==0) && (year%400==0);
11:
12: if (leep=1)
13: {
14: printf("%d年はうるう年です\n",year);
15: }
16: printf("%d年はうるう年ではありません\n",year);
17: }
--------------------------------------------------------------------------------
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: VisualStudio.net2003
[3.3] 言語: C++
[4] 期限: 5月29日
考えたけどよく分かりません。提出期限が近いので教えてもらいたいです。
0557デフォルトの名無しさん
2006/05/27(土) 15:04:59○leep==1
0558デフォルトの名無しさん
2006/05/27(土) 15:06:10なんというか間違いの嵐だな。
1. 言語がC++と指定しているのに書き方がC
2. if文の中で==ではなく=を使っている。==が正しい
3. if文の直後にprintfがあるがelse文でくくるべき
4. leepではなくleapが正しい綴り
5. 閏年の判定が全体的に間違っている
正しくは leep = year%4==0 && ( year%100!=0 || year%400==0 );
上記を踏まえて修正するとこう。
#include <stdio.h>
int main(void){
int year, leap;
printf("西暦年を入力してください:");
scanf("%d",&year);
leap = year%4==0 && ( year%100!=0 || year%400==0);
if (leap==1) printf("%d年はうるう年です\n",year);
else printf("%d年はうるう年ではありません\n",year);
return 0;
}
0559デフォルトの名無しさん
2006/05/27(土) 15:10:120560デフォルトの名無しさん
2006/05/27(土) 15:13:59leep = (year%4==0) && (year%100!=0) || (year%400==0);
おそらくこれで行ける
それとleepじゃなくてleapじゃね?
ちなみに上の奴の根拠はこれ↓
((x mod 4 = 0)∧(x mod 100 ≠ 0))∨(x mod 400 = 0)
0561デフォルトの名無しさん
2006/05/27(土) 15:17:050562デフォルトの名無しさん
2006/05/27(土) 16:02:030563デフォルトの名無しさん
2006/05/27(土) 16:37:13とか言ってみたり。
0564デフォルトの名無しさん
2006/05/27(土) 16:53:130565デフォルトの名無しさん
2006/05/27(土) 17:09:36#include <stdio.h>
#include <math.h>
#define EPS .00001//相対誤差
double func_y(double x){ return (pow(x, 3)-2*pow(x,2)-x+2.0); }
double nibun(double a, double b){
int i = 0;double x;//xをnextと読みかえて
printf(" a b c f(c)\n");
do{
x = (a + b) / 2.0;
if((func_y(x) * func_y(a)) < 0)b = x;
else a = x;
printf("%02d : %6.3lf %6.3lf %6.3lf %6.3lf\n", i, a, b, x, func_y(x));
i++;
}while(fabs(a - b) > EPS);
return (x);
}
int main(void){
double a, b, x;//a,bをx0,x1と読みかえて
printf("範囲の左の値を入力してください.\n");
scanf("%lg",&a);
printf("範囲の右の値を入力してください.\n");
scanf("%lg",&b);
printf("x^3 - 2x^2 - x + 2 = 0の二分法による数値計算\n");
printf("初期値a=%6.3lf\n",a);
printf("初期値b=%6.3lf\n",b);
x = nibun(a, b);
printf("近似解x=%6.3lf\n",x);
return 0;
}
前スレにあったやつ、関数func_yを書き換えれば多分いける
0566デフォルトの名無しさん
2006/05/27(土) 17:28:37>上限の数未満
これがぬけて組まれてない?
0567デフォルトの名無しさん
2006/05/27(土) 17:29:26繰り返しがforを使うやつでお願いします
0568デフォルトの名無しさん
2006/05/27(土) 17:36:08それに、簡潔に書けるのがいいとかって
解答が気に入らなければ自分でやればいいじゃん
0569デフォルトの名無しさん
2006/05/27(土) 17:59:04今後の課題でも回答されたのと同じかそれ以上のクオリティで書けるならまだしも
そうじゃないなら簡潔なコードなんて求めるな
0570デフォルトの名無しさん
2006/05/27(土) 18:17:27[2] 問題文(含コード&リンク):
入力された英単語をリスト構造に格納し、格納された単語を出力するプログラムを作成せよ。
参考プログラム↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1950.txt
1. 単語格納領域と次ポインタを持つリスト構造を構造体で宣言する.
2. 1単語分のリスト構造体データをmalloc関数で確保する。
3. readword関数を使って1単語を読み込み,リスト構造体データの単語格納領域に保存する.
4. 1 単語分の構造体データをリストの末尾に連結する.追加されたデータの次ポインタはnullにしておく.リスト先頭データのアドレスは,ポインター型変数headに記憶させておく.
5. 単語がすべて読み込まれたら、リストの先頭から終わりまで単語を表示する。
[3] 環境
[3.1] OS: Windows XP
[3.2] コンパイラ名とバージョン: Borland C++
[3.3] 言語: C
[4] 期限: 5/29
お願いします。
0571デフォルトの名無しさん
2006/05/27(土) 18:19:24このスレか前スレ辺りで似たような課題を見た気がするから
それ探してきて自分で修正しろ
とゆうかここで質問してる奴は類題探してきて修正したり組み合わせるって事しないのか?
0572デフォルトの名無しさん
2006/05/27(土) 18:28:340573デフォルトの名無しさん
2006/05/27(土) 19:22:320575デフォルトの名無しさん
2006/05/27(土) 21:53:42ありがとう
0576デフォルトの名無しさん
2006/05/27(土) 22:26:34[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1952.txt
[3] 環境
[3.1] Windows
[3.2] gcc
[3.3] 言語: C言語
[4] 期限: 5月29日 9:00
[5] その他の制限: まだポインタなどは習っていません。
お願いします。
0577デフォルトの名無しさん
2006/05/27(土) 22:29:12ちょっとお聞きしたいのですが、
これは4つのファイルに分けていいんですよね
最初のやつと、hash.c, openaddr.cとmain.c
この場合、hash.cとopenaddr.cにも宣言しなければいけないのですか?
0578372
2006/05/27(土) 22:37:12#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
double s[80],value[80];
char c[80],name[80][80];
int max_p=0,t=0;
int srch(char p[]){
int i;
for(i=0;i<max_p;++i)
if(strcmp(name[i],p)==0)return i;
strcpy(name[i],p);
return i;
}
#define o(p) else if(strcmp(c,#p)==0){--t;s[t-1] = s[t-1] p s[t];}
int main(){
while(scanf(" %79s",c)==1)
if(0){}o(+)o(-)o(*)o(/)
else if(strcmp(c,"=")==0)printf("%g\n",s[--t]);
else if(strcmp(c,"sin")==0)s[t-1] = sin(s[t-1]);
else if(strcmp(c,"cos")==0)s[t-1] = cos(s[t-1]);
else if(strcmp(c,"tan")==0)s[t-1] = tan(s[t-1]);
else if(strcmp(c,"exp")==0)s[t-1] = exp(s[t-1]);
else if(strcmp(c,"sqr")==0)s[t-1] = s[t-1] * s[t-1];
else if(*c=='>') printf("%g\n",value[srch(c+1)] = s[--t]);
else if(isdigit(*c)) s[t++]=atof(c);
else s[t++] = value[srch(c)];
return 0;
}
0579デフォルトの名無しさん
2006/05/27(土) 22:43:15RPN電卓自体は簡単な話だが、スタック作るのが面倒なんでCFL使ってもいいか?
一応計算手順は示しておく
1)数字をPush
2)演算子が来たら2つPopして演算後Push
これを数式を読み終わるまで繰り返すだけ。数字が足りなくなったり
逆に数字が2つ以上スタックに残ったら数式が狂ってる
0581デフォルトの名無しさん
2006/05/27(土) 22:44:32誤爆?
0582372
2006/05/27(土) 22:50:46>>578を
else if(strcmp(c,"=")==0)printf("%g\n",s[t-1]);
に修正しといて。forth言語の . 相当の処理と勘違いしてた。
あとポインタ習ってないらしいから*cと書いてるとこc[0]に書き換えといて。
0583デフォルトの名無しさん
2006/05/27(土) 22:56:40できればスタックを使ってほしいです。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1953.txt
↑
一応自分でここまでできた。
後は演算子がsinとか三文字のときにnextTokenでNUMBERではなく
IDENTを返すらしいが、それがよくわからない。
後はメモリ機能がさっぱり。
0584デフォルトの名無しさん
2006/05/27(土) 23:03:10[1] 授業単元:プログラミング
[2] 問題文: 数式を入力し、逆ポーランド記法に変換せよ。
[3] 環境
[3.1] OS: WindowsXP sp2
[3.2] コンパイラ:visual C
[3.3] 言語: C++
[4]提出期限 :5/29(月)
[5] その他の制限:無制限
■使用変数
instring[] キーボードから入力した数式を格納する配列(文字型)
outstring[] 逆ポーランド記法に返還された式を格納する配列
stack[100] スタック
sp スタックポインタ
token instring[]から取り出した文字
[プログラム]
ttp://eload.run.buttobi.net/cgi-bin/img/e_534.txt
エラー60個代から4時間かけてエラー取りをしました。
エラーを吐かなくなったものの、実行すると「フフフ」と表示されてしまいます。
逆ポーランド記法なんざ表示されません。
根本的に間違っている気がしてきました。
宜しくお願いします。
0585584
2006/05/27(土) 23:06:44■問題文
演算の優先順位
'*' '/' > '+''-' >'=''(' > ')''$'
int priority(char token)
{
int w;
switch(ch){
case '*':case'/';
w=4;
break;
case'+':case'-'
w=3;
break
}
return w;
}
上記のプログラムが問題文にありました。
0586デフォルトの名無しさん
2006/05/27(土) 23:06:541関数が長すぎで読む気がしないんで適当に答えるが
token[k]=outstring[a+c+e];
これは合ってるのか?outstringという名前からして出力結果のバッファだろうが
そこから代入するというのが間違ってる気がしてならない
それとフフフってのは未初期化バッファを文字列として出力しようとしたときによくでる
0587デフォルトの名無しさん
2006/05/27(土) 23:15:03誤爆ってどういう意味ですか
0588デフォルトの名無しさん
2006/05/27(土) 23:18:51資料等は何ももらわなかったのか?
0589デフォルトの名無しさん
2006/05/27(土) 23:19:57お前のやってることだ
0590デフォルトの名無しさん
2006/05/27(土) 23:26:05だったような気がする。
2ch専用ブラウザにも誤爆警告ってあるし。
実際そいつに何度助けられたか・・・
0591デフォルトの名無しさん
2006/05/27(土) 23:29:07ところどころif文の条件で代入してるよね
0592デフォルトの名無しさん
2006/05/27(土) 23:34:51読むのがかったるいので自前で書いた。
演算子順位解析法は面倒なので再帰下降解析法でささっと書いた
#include<stdio.h>
#include<ctype.h>
void parse(char**,char**);
int main(){
char in_string[80],out_string[80];
char*p=in_string,*q=out_string;
scanf("%79[^\n]",in_string);
parse(&p,&q);*q='\0';
puts(out_string);
}
void parsenum(char**p,char**q){
while(isspace(**p))++*p;
if(**p=='('){++*p;parse(p,q);++*p;}
else{while(isalnum(**p))*(*q)++ = *(*p)++;*(*q)++ = ' ';}
while(isspace(**p))++*p;
}
void parsemul(char**p,char**q){
parsenum(p,q);
while(**p == '*' || **p == '/'){char c =*(*p)++;parsenum(p,q);*(*q)++ = c;*(*q)++ = ' ';}
}
void parse(char**p,char**q){
parsemul(p,q);
while(**p == '+' || **p == '-'){char c =*(*p)++;parsemul(p,q);*(*q)++ = c;*(*q)++ = ' ';}
}
0593デフォルトの名無しさん
2006/05/27(土) 23:39:00[3] 環境 [3.1] Windows [3.2] gcc 3.4 [3.3] どちらでも可
[4] 無期限
[5] 画像処理
for(y=height-1;y>=0;y--)/*左上から順に処理するためにyを工夫しているので注意*/
{
for(x=0;x<width;x++)
{
/*基本的にはここでピクセルごとの処理を行う
BGRの順に並んでいることに注意
画像の左下から右に並んでいることに注意
従って、buffer[0]には 左下のB、buffer[1]には左下のG、
buffer[2]には左下のRの入っている
以下順番に右方向に続いている*/
n = y*width+x;
n = n*3;
/*とりあえず各ピクセルをコピーするだけ*/
out_buffer[n]=buffer[n]; /*Blueのデータ*/
out_buffer[n+1]=buffer[n+1]; /*Greenのデータ*/
out_buffer[n+2]=buffer[n+2]; /*Redのデータ*/
}
}
0594デフォルトの名無しさん
2006/05/27(土) 23:46:07誤爆だ、、、Orz
ってかなんか別の言葉なかったっけ?
まぁとにかく
本当は
>>548-549
ちょっとお聞きしたいのですが、
これは4つのファイルに分けていいんですよね
最初のやつと、hash.c, openaddr.cとmain.c
この場合、hash.cとopenaddr.cにも宣言しなければいけないのですか?
だった
お願いします。
0595デフォルトの名無しさん
2006/05/27(土) 23:52:07何個でも好きに分けろ
>hash.cとopenaddr.cにも宣言しなければいけないのですか?
何をだ?
0596デフォルトの名無しさん
2006/05/28(日) 00:00:51[1] 授業単元:プログラミング演習
[2] 問題文(含コード&リンク):
残念なことに,毎年,他人の課題をコピーしたために単位を落とす学生が居る.
そこで、こういった学生を減らすために,どういった対策を行えば良いか提案せよ.
0597デフォルトの名無しさん
2006/05/28(日) 00:05:37レポート丸写しは落とすと明言しておく
更に、質問を個人個人にだすと明言しておく
そいでもって、穴埋め問題を出すと明言しておく
0598デフォルトの名無しさん
2006/05/28(日) 00:08:09そういう馬鹿がいないとこのスレが成り立たないから必要悪
0599デフォルトの名無しさん
2006/05/28(日) 00:11:03提出されたレポートに基づいて、そのレポート書かれた内容についての質問をすると言っておく
そうすりゃ少なくともレポートの内容に関しては理解しなきゃならんわけだから
丸移ししたとしてもある程度の力は付く
0600デフォルトの名無しさん
2006/05/28(日) 00:32:34[2] 問題文(含コード&リンク): ニュートン法のプログラムを用いて、正の実数5の平方根を求めるプログラムを作成したい。
このとき、実数5の値と、ニュートン法の初期値の値x0を入力すると、5の平方根を返す関数
double Newton(double a, double x0)
を作り、これをメイン関数の中で呼ぶことで、5の平方根を表示するプログラムを作成せよ。
[3] 環境
[3.1] OS: (Windows/Linux/等々) Windows XP
[3.2] コンパイラ名とバージョン: (gcc 3.4 VC 6.0等) LSI-C 86 試食版
[3.3] 言語: (C/C++/どちらでも可 のいずれか) C
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) 過ぎてしまったけど、
提出しなければいけないので、どちらかというと「無期限」
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
#include <stdio.h>
#include <math.h>
double Newton(double a, double x0);
double Newton(double a, double x0)
{double e,x;
e=pow(10,-10);
while(fabs(x0-x)>e){
x=x0;
x0=((a-x*x)/(2.0*x))+x;}
return(a,x0);}
main(){
double x0,a;
printf("x0=");scanf("%lf", &x0);
printf("x=%.10f\n",Newton(5, x0));
}
これを提出したら×だったのですが、どこが間違っているのかわかりません…
0601570
2006/05/28(日) 00:47:29というのに類似した問題が見つからないんです。>>570お願いできないでしょうか。
0602デフォルトの名無しさん
2006/05/28(日) 00:52:19c言語って戻り値2つ返せたんだな…
0603デフォルトの名無しさん
2006/05/28(日) 01:02:32どういう意味ですか?(;´д`)
0604デフォルトの名無しさん
2006/05/28(日) 01:07:14とりあえず、xの初期値を決めろよ
0605デフォルトの名無しさん
2006/05/28(日) 01:11:46カンマ演算子を勉強してください、とヘタレレスしたりする。
0606デフォルトの名無しさん
2006/05/28(日) 01:12:27マジヘタレ
0607デフォルトの名無しさん
2006/05/28(日) 01:14:57scanfで入力したものを初期値…というつもりでやってたんですが…
上のままではならないんですか?!
0608デフォルトの名無しさん
2006/05/28(日) 01:16:01受講申請時に個別面接して入り口で減らす。
そういうやつにまで単位をやろうなんてのはナンセンス。
やる気のないやつはどんどん落とせ。
0609デフォルトの名無しさん
2006/05/28(日) 01:21:53int 何々とか
分割してあるからいらないと思ってたんですけど
gcc -c ○○.c とやるとそれら二つはエラーが出るんで、、、
普通は ○○.o ができるはずなんですけど
0610デフォルトの名無しさん
2006/05/28(日) 01:30:07翻訳単位やリンクの概念が分からない奴が分割コンパイルに手を出すな
0611デフォルトの名無しさん
2006/05/28(日) 01:45:32とりあえず、ここを読め
ttp://www.gulf.or.jp/~damayan/calc/divide.html
0612デフォルトの名無しさん
2006/05/28(日) 09:58:09It is best to use the Win32 Console template in Visual C++ Express to create the project for running this program--there is no GUI associated with this code; only cin, cout, cerr, and a file are utilized to perform I/O.
After analyzing the code, and understanding how iostream file I/O is done, modify your Hangman game as follows. Use a file called "gamestats.dat" to store the game statistics for the number of games won, and the number of games lost.
If you quit the game and restart it, the game statistics will be read from the file and used to initialize the game statistics instance variables.
You should not assume that the "gamestats.dat" file exists. If the file does not exist when the game loads, then you should create the file. Use a file called "words.dat" to store all of the words that will be used in the game.
You will need to read through the file first to count the number of words in the file, so you can properly dimension the size of the strWordListArray array.
Then, you will need to read through the file with a second pass to load each word into the array. You may assume that the "words.dat" does exist.
You can manual type in your list of words into the file. Please include this file with your project, so I can run your project without encountering a missing file problem.
助けてください。お願いします。
0613デフォルトの名無しさん
2006/05/28(日) 10:01:17>>1
0614デフォルトの名無しさん
2006/05/28(日) 12:00:27>Download the seqFIO.cpp file.
お前問題文すら読んでないだろ。
0615デフォルトの名無しさん
2006/05/28(日) 12:21:56どこが違うのかどなたかお願いします_| ̄|○
0616デフォルトの名無しさん
2006/05/28(日) 12:39:150617デフォルトの名無しさん
2006/05/28(日) 12:46:01初期化ってどうやるんですか?(;´д`)
0618デフォルトの名無しさん
2006/05/28(日) 12:48:53[3] 環境 [3.1] Windows [3.2] gcc 3.4 [3.3] どちらでも可
[4] 6/8
[5] 画像処理
for(y=height-1;y>=0;y--)/*左上から順に処理するためにyを工夫しているので注意*/
{
for(x=0;x<width;x++)
{
n = y*width+x;
n = n*3;
/*とりあえず各ピクセルをコピーするだけ*/
out_buffer[n]=buffer[n]; /*Blueのデータ*/
out_buffer[n+1]=buffer[n+1]; /*Greenのデータ*/
out_buffer[n+2]=buffer[n+2]; /*Redのデータ*/
}
おねがいします。
0619デフォルトの名無しさん
2006/05/28(日) 13:03:42x=1.0とでもすればいいんじゃね?
0620デフォルトの名無しさん
2006/05/28(日) 14:33:19初期化って何ですか?初期値を与えることですが?
全くわかってなくてすみません。。
初期値は入力された値を使いたいのですが_| ̄|○
0621デフォルトの名無しさん
2006/05/28(日) 14:43:40初期化というのは、変数を初めて使う前にその変数に値を代入すること。
xを初期化しないと、xの値は不定だから、
fabs(x0-x)>eという比較がたまたま失敗して、既に十分近似したと判定される可能性がある。
これを防ぐには、関数の最初で、x0の値から離れた値でxを初期化しておけば良い。
x = x0 + 1;とでもすればいいだろう。
0622デフォルトの名無しさん
2006/05/28(日) 14:45:20学校の先生ってのも大変なんだな、と思うわ。
0623デフォルトの名無しさん
2006/05/28(日) 14:55:230624デフォルトの名無しさん
2006/05/28(日) 14:58:06調べることもせず、ただ分かりませんというやつを相手するここの住人のほうがずっと大変なんじゃ…
0625デフォルトの名無しさん
2006/05/28(日) 15:11:15とりあえずOKもらえそうなの置いとくから、何が間違っていたのか自分で見ておけ。
double Newton(double a, double x0)
{
double x, e=1e-10;
do{
x=x0;
x0=((a-x*x)/(2.0*x))+x;
}while(fabs(x0-x)>e);
return x0;
}
0626デフォルトの名無しさん
2006/05/28(日) 15:17:12[2] 問題文(含コード&リンク): 1〜1000までの素数の合計と、素数以外の合計を書き出す
Cプログラムを作成せよ。
[3] 環境
[3.1] OS: Linux
[3.2] gcc
[3.3] 言語:C言語
[4] 期限: 2006年6月2日まで
[5] その他の制限: if,switch,while,for,配列を習いました。
0627デフォルトの名無しさん
2006/05/28(日) 15:26:53# include <stdio.h>
int is_prime(int n)
{
int i;
if(n == 1)
return 0;
for(i = 2; i < n; i++)
if(n % i == 0)
return 0;
return 1;
}
int main(void)
{
int n;
int sum_prime = 0, sum_nonprime = 0;
for(n = 1; n <= 1000; n++)
if(is_prime(n))
sum_prime += n;
else
sum_nonprime += n;
printf("%d, %d\n", sum_prime, sum_nonprime);
return 0;
}
0628デフォルトの名無しさん
2006/05/28(日) 15:31:39ありがとうございます!
0629デフォルトの名無しさん
2006/05/28(日) 15:42:20>>625
難しいです…returnのところも違いましたか?
…理解できてません。。
0630デフォルトの名無しさん
2006/05/28(日) 15:46:36ここはお前が理解するのをサポートする場じゃない
0631デフォルトの名無しさん
2006/05/28(日) 15:59:23すみませんー
違う板に行ってきまっす!!
0632デフォルトの名無しさん
2006/05/28(日) 16:20:45int main(void){
printf("bitmap.bmp\n");
return 0;
}
0633デフォルトの名無しさん
2006/05/28(日) 17:38:00ありがとうございますた!
0635デフォルトの名無しさん
2006/05/28(日) 18:10:46その程度のサンプルプログラムなら山ほど転がってるだろ
自分で探してこい
0636デフォルトの名無しさん
NGNGまずガウスザイデル法。
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define MAXDIM 3
#define LIMIT 50
#define EPS (0.00001)
int main(void){
double a[MAXDIM][MAXDIM],x[MAXDIM],y[MAXDIM],s,e;
char tmp[100]; int i,n;
for(i=0; i<3; i++){fgets(tmp, 100, stdin);
sscanf(tmp, "%lf %lf %lf", &m1[0][i], &m1[1][i], &m1[2][i]);x[i]=y[i]=1.0;}
for(n=0;n<LIMIT;n++){for(i=0;i<MAXDIM;i++){s=0.0;
for(j=0;j<MAXDIM;j++)if(i!=j)s+=a[i][j]*y[j];y[i]=(a[i][MAXDIM-1]-s)/a[i][i];}
for(i=0,e=0.0;i<dim;i++){e+=fabs(x[i]-y[i]);x[i] = y[i];}
if(e<EPS){for(i=0;i<MAXDIM;i++)printf("x[%i]=%f\n",i,x[i]);return 0;}}
puts("解けなかったぽ");return 1;;}
0637デフォルトの名無しさん
2006/05/28(日) 18:44:03[一部抜粋]
if('0'==outstring[i])
{
push(0);
}
//1〜9までelse ifで組む
void push(int a)
{
sp=sp+1;
stack[sp]=a;
}
こう組んでもスタックに整数が入ってくれませんでした。
どのようにすれば良いのかご教授してください。
0638デフォルトの名無しさん
2006/05/28(日) 18:46:37見た限りでは間違ってるところはない。
それから、このスレは宿題の代行を依頼するスレであって添削を依頼するスレではない。
0639デフォルトの名無しさん
2006/05/28(日) 18:47:21[2] 問題文: memcpy標準関数を使わずに、同じ機能を実装せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ:gcc
[3.3] 言語: C
[4]提出期限 :5/29(月)
[5] その他の制限:無制限
0640デフォルトの名無しさん
2006/05/28(日) 18:48:47>stack[sp]=a;
このふたつは逆にした方が自然な挙動になるかな。
0641デフォルトの名無しさん
NGNGvoid* mymemcpy(void* dst, const void* src, size_t length)
{while(--length>=0)*(char*)dst[length]=*(const char*)src[length];return dst;}
0642おながいします
2006/05/28(日) 20:13:13[2]
ジュースの自販のつり銭を計算するプログラムを書け。
受け付ける金種は1000円札、500円玉、100円玉、50円玉、10円玉とする。
またジュースの価格は120円と150円とする。
[3]C [4]5/29 [5]制限はありません。
0643デフォルトの名無しさん
2006/05/28(日) 20:15:18...
aaa bbb
,,,
... ccc ddd ...
...
aaaの次に来るbbbをcccとdddの間に挿入するってことはどうやればいいでしょうか?
0644デフォルトの名無しさん
2006/05/28(日) 20:47:31awkについて語るスレ
ttp://pc8.2ch.net/test/read.cgi/tech/1023556171/
0645デフォルトの名無しさん
2006/05/28(日) 20:50:51>C/C++の宿題を片付けます 65代目
ここ見えてる?一行だけじゃ見えないかも知れないからもう一行書いておくよ
>C/C++の宿題を片付けます 65代目
>>642
どんな入力を受けて何をすりゃいいのかが読み取れない
もうちょっと詳しく書け
[2] 問題文(含コード&リンク):2次方程式の解を求めるプログラムを書け。
また実数解、重解、虚数解か判別せよ。
表示例
2次方程式a*x*x+ b*x+c=0を求めます。
a=
b=
c=
a*x*x + b*x + c = 0 の解は
実数解x= , です。
重解x= です。
虚数解x= です。
2次方程式
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: 5月29日7:00まで
[5] その他の制限:if,while,まで習いました。
#include <stdio.h>
#include <math.h>
int main(void)
{
float a, b, c;
float x_1, x_2;
float D;
/* 係数の入力 */
printf(
#include <stdio.h>
#include <math.h>
int main(void)
{
float a, b, c;
float x_1, x_2;
float D;
printf("2次方程式a*x*x+ b*x+c=0を求めます。");
printf("a=");
scanf("%f", &a);
printf("b=");
scanf("%f", &b);
printf("c=");
scanf("%f", &a);
D = b*b - 4*a*c; /* 判別式の計算 */
printf("\n*** 2次方程式 %f*x*x + %f*x + %f = 0 の解 ***\n", a, b, c);
if (D > 0.0) {
x_1 = (-b + sqrt(D))/2*a;
x_2 = (-b - sqrt(D))/2*a;
printf("実数解 x = %f, %f です。\n", x_1, x_2);
}
else if (D == 0.0) {
x_1 = -b/2*a;
printf("重解 x = %f です。\n", x_1);
}
else (D < 0.0) {
printf("虚数解です。\n");
}
return 0;
}
0648デフォルトの名無しさん
2006/05/28(日) 23:43:22[2] 問題文(含コード&リンク):
x1 x2 x3
●ーーーーーーーーー●ーーー●
0 3 4
質量:m1,m2,m3
自然長l、バネ定数kが2本用意して上の図のようにする
m1=m2=m3=1、l =1とする
粒子の位置は左からそれぞれx1, x2, x3とし最初にx1=0, x2=3, x3=4の位置で固定し、
時刻t=0の瞬間に自由にする。
時刻tを入力したときの全ての粒子の位置x1, x2, x3と速度v1, v2, v3を求めよ
[3.1] WindowsXP
[3.2] gcc
[3.3] C
[4] 5月29日
お願いします
0649648
2006/05/28(日) 23:46:25m1=m2=m3=1、l =1とする→m1=m2=m3=1、l =1、k=1とする です
0650デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
int main(void){int orgent,entrust=0,price=0,i,shohin[]={120, 150,};
int noguchi=0,coin500=100,coin100=100,coin50=100,coin10=100;
int og_noguchi=0,og_coin500=0,og_coin100=0,og_coin50=0,og_coin10=0;
printf("1000円=");fgets(tmp,100,stdin);entrust+=1000*atoi(tmp);
printf(" 500円=");fgets(tmp,100,stdin);entrust+=500*atoi(tmp);
printf(" 100円=");fgets(tmp,100,stdin);entrust+=100*atoi(tmp);
printf(" 50円=");fgets(tmp,100,stdin);entrust+=50*atoi(tmp);
printf(" 10円=");fgets(tmp,100,stdin);entrust+=10*atoi(tmp);
orgent=entrust;
for(i=0;i<sizeof(shohin)/sizeof(int);i++){printf("商品%i(\%i)の数量:",i+1,shohin[i]);
fgets(tmp,100,stdin);price+=atoi(tmp)*shohin[i];}
if(entrust>=price)entrust-=price;else printf("お金が足りません\n");
while(noguchi&&entrust>=1000){entrust-=1000;++og_noguchi;--noguchi;}
while(coin500&&entrust>=500){entrust-=500;++og_coin500;--coin500;}
while(coin100&&entrust>=100){entrust-=100;++og_coin100;--coin100;}
while(coin50&&entrust>=50){entrust-=50;++og_coin50;--coin50;}
while(coin10&&entrust>=10){entrust-=10;++og_coin10;--coin10;}
printf("預り金:\%i 商品合計:\%i\n",orgent,price);
printf("払出金: \1,000:%i枚 \500:%i個 \100:%i個 \50:%i個 \10:%i個\n",
og_noguchi,og_coin500,og_coin100,og_coin50,og_coin10);
return 0;}
0651デフォルトの名無しさん
2006/05/29(月) 00:17:54[2] 問題文:
#include<iostream>
using namespace std;
class Person{
public:
char no[7];
char name[20];
int age;
void Print();
};
void Person::Print(){
cout<<
0652651
2006/05/29(月) 00:24:39[1] 授業単元:クラスの記述とオブジェクト
[2] 問題文:
既存のプログラム(後述)を以下のように変更せよ。
1:メンバ変数をプライベートにする。
2:10名以内の学生の学籍番号・名前・年齢をキーボードから入力できるようにする。
(人数が10名より少ない場合でも、途中で終われるようにする)
3:入力データが画面に表示されるようにする。
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:General CPad [3.3]
[3.3] 言語: C++
[4] 期限: 5月31日まで
0653651
2006/05/29(月) 00:25:23#include<iostream>
using namespace std;
class Person{
public:
char no[7];
char name[20];
int age;
void Print();
};
void Person::Print(){
cout<<"番号:"<<no<<endl;
cout<<"氏名:"<<name<<endl;
cout<<"年齢:"<<age<<"才"<<endl;
}
int main(void){
Person yamada;
strcpy(yamada.no,"12-345");
strcpy(yamada.name,"ヤマダ タロウ");
yamada.age=20;
yamada.Print();
return 0;
};
0654デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(void){double x,a,b,c,d,r1,r2;char tmp[100];int imaginary=0;
printf("a=");fgets(tmp,100,stdin);a=atof(tmp);
printf("b=");fgets(tmp,100,stdin);b=atof(tmp);
printf("c=");fgets(tmp,100,stdin);c=atof(tmp);
puts("a*x*x + b*x + c = 0 の解は");
d=b*b-4*a*c;r1=(-b+sqrt(d))/(2*a); r2=(-b-sqrt(d))/(2*a);
if(d==0.0)printf("重解 x=%f です。\n",r1);else if(d>0.0) printf("実数解 x=%f,%f です。\n",r1,r2);
else puts("虚数解です。");
return 0;}
0655デフォルトの名無しさん
2006/05/29(月) 01:09:49不合格ですた…
0656デフォルトの名無しさん
2006/05/29(月) 01:39:010657デフォルトの名無しさん
2006/05/29(月) 01:40:270658デフォルトの名無しさん
2006/05/29(月) 01:48:03ニュートン法の課題は前出して合格でした_| ̄|○
0659デフォルトの名無しさん
2006/05/29(月) 01:52:14んじゃ、オレのやったことって…
とは言わんが、不合格の責任は貴様にある。
0660デフォルトの名無しさん
2006/05/29(月) 04:22:45問題文を読む限り、5も入力しろってことじゃね?
0661デフォルトの名無しさん
2006/05/29(月) 04:28:50それとx座標軸との交点を出して、そのx座標と
接点のx座標が一定値以内に収まるようにするやり方だよな?
ざっとみただけだが>>625で問題なくないか?
0662デフォルトの名無しさん
2006/05/29(月) 04:39:50>600の問題文の解釈の問題だと>660は言っている。
そうでないにしても、きっと>655が書いた>625以外の部分(main()か)の問題だろ。
0663デフォルトの名無しさん
2006/05/29(月) 04:51:39内一つが初期値、もう一つをnとすると√nを返せって事だろうな
まぁ問題文に問題があるとは思う
0664600 ◆manko/yek.
2006/05/29(月) 05:35:270665デフォルトの名無しさん
2006/05/29(月) 06:41:43結果 ルート5=2.236068
>662の言うとおり、>625以外の部分の問題なんじゃないかな。
0666デフォルトの名無しさん
2006/05/29(月) 08:17:01>662の言うとおり、>625以外の部分の問題なんじゃないかな。
たとえば、教官もこのスレの住人だったとか?
0667デフォルトの名無しさん
2006/05/29(月) 08:46:54[1] 情報物理:
[2] 単振動のバネの運動方程式、二階微分方程式をオイラー法を用いて表せ。:
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:cc
[3.3] 言語: C
[4] 期限: 2006.5.29
[5] その他の制限:無制限
0668デフォルトの名無しさん
2006/05/29(月) 08:59:37#include <iostream>
#include <cassert>
using namespace std;
class Person{
private:
static const int NO_LEN_MAX = 7;
static const int NAME_LEN_MAX = 20;
char no[ NO_LEN_MAX ];
char name[ NAME_LEN_MAX ];
int age;
public:
void Print();
void setNo( const char* str );
char* getNo();
void setName( const char* str );
char* getName();
void setAge( const int value );
int getAge() const;
};
0669デフォルトの名無しさん
2006/05/29(月) 09:01:41cout <<
0670667
2006/05/29(月) 09:02:22解はx=x_0π(m/k)^1/2
です。
v=dx/dtとおくとdv-dt=-kx/mとなること。
時間刻み数nと刻み幅hを用いること。
質量m、刻み幅h、バネ定数kと上限時間t、
グラフを書く上でのx、yはscanfを用いて入力します。
0671デフォルトの名無しさん
2006/05/29(月) 09:03:54static const int INPUT_BUFFER_SIZE = 128;
int main(void){
Person person[ USER_NUM_MAX ];
char sBuffer[ INPUT_BUFFER_SIZE ];
int dBuffer;
for(int i=0; i<USER_NUM_MAX; i++){
cout << "番号を入力。" << endl;
cin >> sBuffer;
person[i].setNo( sBuffer );
cout << "名前を入力。" << endl;
cin >> sBuffer;
person[i].setName( sBuffer );
cout << "年齢を入力。" << endl;
cin >> dBuffer;
person[i].setAge( dBuffer );
for(int j=0; j<=i; j++)
person[j].Print();
cout << "継続して入力? 1:継続 9:終了" << endl;
cin >> dBuffer;
if( dBuffer != 1 )
break;
}
return 0;
};
0672デフォルトの名無しさん
2006/05/29(月) 09:36:09[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1955.txt
[4] 期限: ([2006年5月30日12:00amまで]
プログラミング物ではないんですが、一応C言語関係の授業なので
どなたかよろしくお願いいたします。翻訳が必要でしたら、こちらでやってみます。
ダメでしたらスルーしてください。
0673デフォルトの名無しさん
2006/05/29(月) 11:06:14流し読みしたがCなんて関係ない
論理設計とかそういう類だろ
そんなのまでC関係と言ってたら、その内アセンブラまでC関係になるな
0674デフォルトの名無しさん
NGNGどこがC言語関連なのか問題文を読んでみてもさっぱり分からん。
2.VHDL的に書くとこんな感じ。(問題文で指定されていないアドレスは考慮しない)
D0<=not((not A0)and(not A1)and(notA2))
D1<=A2
D2<=1
D3<=A2
D4<=(not A0)and(not A1)
3.シングルCPUで動いていたときのロードをLとすると、スーパーハカーが書き換えてクアッドCPUに
移行した後のCPUあたりのロードは(0.7L)/4+0.3L=0.475L。
0675デフォルトの名無しさん
2006/05/29(月) 16:10:45[実行結果1]
一辺の長さを入力してください(1から10まで):3
xxx
xxo
xoo
[実行結果2]
一辺の長さを入力してください(1から10まで):7
xxxxxxx
xxxxxxo
xxxxxoo
xxxxooo
xxxoooo
xxooooo
xoooooo
となるようにするにはどうしたらいいですか?
>>545さんのは習っていませんでした。スミマセン・・
0676デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[100],fmt[6];int i,j,n;char pattern[]="xxxxxxxxxxoooooooooo";
printf("一辺の長さを入力してください(1から10まで):");fgets(tmp,100,stdin);n=atoi(tmp);
for(i=0;i<n;i++){for(j=0;j<n;j++)putc(pattern[10-n+i+j],stdout);putc('\n',stdout);}return 0;}
0677デフォルトの名無しさん
2006/05/29(月) 16:48:23ヒント:解が√5になる方程式をまず考える
0678デフォルトの名無しさん
2006/05/29(月) 17:26:08>>544じゃダメなのか?
0679デフォルトの名無しさん
2006/05/29(月) 17:30:07[2] 問題文(含コード&リンク):英語の小文字の文字列をキーボードから入力した時、
その文字列の大文字を出力するプログラムを作ってください。
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C
[4] 期限: [2006年5月29日20時まで
[5] その他の制限: 得にないです。
0680デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
int main(void){int i;char tmp[100];fgets(tmp,100,stdin);
for(i=0;i<strlen(tmp);i++)putchar(toupper(tmp[i]));return 0;}
0681デフォルトの名無しさん
2006/05/29(月) 17:41:180682デフォルトの名無しさん
2006/05/29(月) 17:44:23xxxxxxxxxx
xxxxxxxxxo
xxxxxxxxoo
xxxxxxxooo
xxxxxxoooo
xxxxxooooo
xxxxoooooo
xxxooooooo
xxoooooooo
xooooooooo
という実行結果が常にでてくるのですが、
例えば、3と入力したら
xxx
xxo
xoo
7と入力したら
xxxxxxx
xxxxxxo
xxxxxoo
xxxxooo
xxxoooo
xxooooo
xoooooo
というようなプログラムをつくりたいです。
0683デフォルトの名無しさん
NGNG断る。
0684デフォルトの名無しさん
2006/05/29(月) 17:46:480685デフォルトの名無しさん
2006/05/29(月) 17:48:540686デフォルトの名無しさん
2006/05/29(月) 17:50:42length=10;
↑ここをscanfで受け取るように変えるだけやん・・・
0687デフォルトの名無しさん
2006/05/29(月) 17:50:470688デフォルトの名無しさん
2006/05/29(月) 17:52:350689デフォルトの名無しさん
NGNG0690デフォルトの名無しさん
2006/05/29(月) 17:55:060691デフォルトの名無しさん
2006/05/29(月) 17:56:110692デフォルトの名無しさん
NGNG帰れ。
0693デフォルトの名無しさん
2006/05/29(月) 17:59:590694デフォルトの名無しさん
NGNG俺はscanfの安全な使い方を知らないので使えません。お引き取りください。
0695デフォルトの名無しさん
2006/05/29(月) 18:03:210696デフォルトの名無しさん
2006/05/29(月) 18:03:41[2] 問題文:if else を使って、scanfで複数数値を入力すると
最大値〜、最小値〜と表示される
[3] 環境
[3.1] OS:WindowsXP
[3.2] Vidual c++: (gcc 3.4 VC 6.0等)
[3.3] 言語: C/C++/どちらでも可
[4] 期限: (本日夕刻まで)
一応、エラーが出ますがこんなん作りました。
#include<stdio.h>
#include<conio.h>
void main(void)
{ int x, y, n, i, saidai;
printf(
0697大変失礼しました
2006/05/29(月) 18:05:05[2] 問題文:if else を使って、scanfで複数数値を入力すると
最大値〜、最小値〜と表示される
[3] 環境
[3.1] OS:WindowsXP
[3.2] Vidual c++: (gcc 3.4 VC 6.0等)
[3.3] 言語: C/C++/どちらでも可
[4] 期限: (本日夕刻まで)
一応、エラーが出ますがこんなん作りました。
#include<stdio.h>
#include<conio.h>
void main(void)
{ int x, y, n, i, saidai;
printf("データ数は?"); scanf("%d",&n);
scanf("%d",&x);
saidai=x;
min=y;
for(i=2; i<=n; i++)
{ scanf("%d",&x);
if(x>saidai)
{ saidai=x; }
else if(x<min)
{ min=y; }
}
printf("最大値は%d",saidai);
printf("最小値は%d",min);
getchar();
getchar();
}
0698デフォルトの名無しさん
2006/05/29(月) 18:20:00#include <stdio.h>
#include <limits.h>
int main()
{
int x, i, num, saidai, saisyou;
saidai=INT_MIN;
saisyou=INT_MAX;
printf("データ数は?");
scanf("%d",&num);
for(i=0; i<num; i++)
{
scanf("%d",&x);
if(x>saidai)
{
saidai=x;
}
else if(x<saisyou)
{
saisyou=x;
}
}
printf("最大値は%d\n",saidai);
printf("最小値は%d\n",saisyou);
return 0;
}
0699デフォルトの名無しさん
2006/05/29(月) 18:20:01#include <stdio.h>
int main(void)
{
int max=0,min,i,n,x;
printf("個数 > ");
scanf("%d",&n);
for (i=0;i<n;i++){
scanf("%d",&x);
if (i==0){
min=x;
}
if (x>max){
max=x;
}else if (x<min){
min=x;
}
}
printf("max=%d\nmin=%d\n",max,min);
return 0;
}
0700どこが違いますか?
2006/05/29(月) 18:23:11int main(void){
char s[10];
printf(
0701デフォルトの名無しさん
2006/05/29(月) 18:51:420702デフォルトの名無しさん
2006/05/29(月) 18:56:42入力される値が常に最大を更新する様な値だと最小が更新されないのでelseイラネ
0703デフォルトの名無しさん
NGNG入力の最大値が負の時もmaxが0固定になるので、最初の入力の時にmax=min=xにしる。
0704デフォルトの名無しさん
2006/05/29(月) 20:00:14できました。ありがとうございます。
0705デフォルトの名無しさん
2006/05/29(月) 20:03:440706デフォルトの名無しさん
2006/05/29(月) 20:04:15[2]問題文(含コード&リンク):
e=a+b*c+d;とe=(a+b)*c+d;は異なる。
前の式に演算子の優先順位や結合規則を考えて、あえてカッコをつけると
(e=((a+(b*c))+d));となる。
式e=d=a-b+c+b*(a+c)/a;
を実行した後のd,eの値を表示するプログラムを作成してください。
変数は全てint型で、a,b,cの初期値は、それぞれ10、20、30とする。
演算子の優先順位や結合規則を考えて、計算する順に全部あえてカッコをつけて下さい。
そしてカッコをつけないときと結果が同じになることを確認して下さい。
(注)カッコが多いと見づらくなるので、普通は必要のないカッコは書きません。
次のようにする。
a,b,cの初期値を設定してから
e=d=a-b+c+b*(a+c)/a;
printf("d=%d", e=%d\n", d, e); ・・・�@
e=d=a-b+c+b*(a+c)/a; ・・・左の式に全部カッコをつける
printf("d=%d", e=%d\n", d,e); ・・・�A
�@と�Aの結果が同じになることを確認してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
#include <limits.h>みたいなヘッダはまだ習ってないので使わないで下さい。
習ってないのを使うと正解をくれない教員なので
0707デフォルトの名無しさん
2006/05/29(月) 20:12:20[2]問題文(含コード&リンク):
2つの正の実数値(a,b)を読み込み、その商(div)を整数値で求め、余り
(mod)を実数値で求め、表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
putsは使わないで下さい。
#include <limits.h>みたいなヘッダはまだ習ってないので使わないで下さい。
習ってないのを使うと正解をくれない教員なので
0708デフォルトの名無しさん
2006/05/29(月) 20:14:160709デフォルトの名無しさん
2006/05/29(月) 20:15:23ひどい教員ですね。
0710デフォルトの名無しさん
2006/05/29(月) 20:49:53[2]問題文(含コード&リンク):
西暦の年(year)を読み込み、その年がうるう年であれば"閏年"、うるう年でないときは"平年"と表示して下さい。
うるう年とは、2月が29日の年。基本は4年に一回(4で割り切れる年はうるう年)、
それだと多すぎるので100年に1回は平年とする(100で割り切れる年は平年)、
それだと少なすぎるので400年に一回をうるう年に戻す(400で割り切れる数はうるう年)。
この課題はif文のネストで。(論理和、論理積は使わないで下さい。)
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
あれ同じスレが二つあるけどこっちでいいのかな?
0711デフォルトの名無しさん
2006/05/29(月) 20:50:41生徒の自主性を摘み取るのが好きなんだなw
0712デフォルトの名無しさん
2006/05/29(月) 20:51:44このスレで俺含め数人が答えたと言おうと思ったが短絡演算子使っちゃダメなのか
0713デフォルトの名無しさん
2006/05/29(月) 21:02:01ヘッダ無しでどうやって表示すればいいんだ
0714デフォルトの名無しさん
2006/05/29(月) 21:16:13>>244
0715デフォルトの名無しさん
2006/05/29(月) 21:36:33[2]問題文(含コード&リンク):
月(month)を読み込み、範囲チェックをして下さい。月が1〜12の範囲なら、"正しい月"
、1〜12意外なら"誤った月"と表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:論理積演算子(&&)、
論理和演算子(||)を使わないで下さい。
ヘッダint month; は使わないで下さい。
0716デフォルトの名無しさん
2006/05/29(月) 22:12:44>ヘッダint month; は使わないで下さい。
そんなヘッダ見たことも聞いたこともない
0717デフォルトの名無しさん
2006/05/29(月) 22:14:06>>250
0718デフォルトの名無しさん
2006/05/29(月) 22:19:39#include <stdio.h>
int main (void)
{
int year;
printf(
0719デフォルトの名無しさん
2006/05/29(月) 22:20:56#include <stdio.h>
int main (void)
{
int year;
printf("INPUT_YEAR-->");
scanf("%d",&year);
if (year%400 == 0)
{
printf("閏年");
}
else if (year%100 == 0)
{
printf("平年");
}
else if (year%4 == 0)
{
printf("閏年");
}
else
{
printf("平年");
}
return 0;
}
これでどう?まだC言語やり初めて2週間しか経ってないから間違ってる
かもしれん
0720デフォルトの名無しさん
2006/05/29(月) 23:04:30�dです
0721デフォルトの名無しさん
NGNG>>680
072258
2006/05/30(火) 01:29:56助かりました。
図々しいのですが
出力が
Please input mass:10.0←入力
Please input time:5←入力
Please input acceleration:9.8←入力
Please input initial velocity:2.0←入力
Condition:m=10.000000, t=5.000000, v0=2.000000, a=9.800000
Velocity at t=5.000000 (i.e., v) :51.000001
Distance at t=5.000000 (i.e., x) :132.500002
Energy of movement at t=5.000000 (i.e., E) :13005.000000
ローカル変数使用の場合
Please input mass:10.0←入力
Please input time:5←入力
Please input acceleration:9.8←入力
Please input initial velocity:2.0←入力
Condition:m=10.000000, t=5.000000, v0=2.000000, a=9.800000
Velocity at t=5.000000 (i.e., v) :51.000001
Distance at t=5.000000 (i.e., x) :132.500002
Energy of movement at t=5.000000 (i.e., E) :13005.000000
となるようにプログラムを組んでいただけないのでしょうか?
追加で申し訳ないですが、できればおねがいします(iдi)
0723デフォルトの名無しさん
2006/05/30(火) 01:35:25それぐらい自分でやれ
0724デフォルトの名無しさん
2006/05/30(火) 07:06:44[2]問題文(含コード&リンク):
2つの整数値(a,b)を読み込み、aに、小さくない方(大きい方)の値を入れて、表示して下さい。
例:aに3、bに10が入力されたとき、aに10を代入してaを表示する。
aに10、bに3が入力されたとき、aをそのまま表示する。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0725デフォルトの名無しさん
2006/05/30(火) 07:07:20[2]問題文(含コード&リンク):
2つの整数値(a、b)を読み込み、小さい方(mini)(等しいときはどちらでもよい)の値を表示して下さい。
(注)aがbより大きい場合、aがbより小さい場合、aとbが等しい場合のデータを入力し、正しく動作することを確認すること。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0726デフォルトの名無しさん
2006/05/30(火) 07:07:51[2]問題文(含コード&リンク):
2つの整数値(a,b)を読み込み、aをbで割った商(quot)の小数部を切り上げてください。全てint型で処理してください。また、bがゼロの場合は、"ゼロ除算例外"と表示してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
0727デフォルトの名無しさん
2006/05/30(火) 07:40:45[2]問題文(含コード&リンク):
0〜100点まで点数を入力して0〜59で不可、60〜69で可、70〜84で良、85〜100で優
とディスプレイとファイルに出力。ファイルに出力するときは点数も出力してください。
範囲が0〜100以外の場合はエラーが出るようにしてください。入力した数値でオーバーフローが
おきた時に誤動作が起きないようにしてください。
[3.1]OS:windowsXP Profesional SP2
[3.2]コンパイラ名とバージョン:VisualStudio2005
[3.3]言語:C
[4]期限:今週中
[5]その他の制限:特になし
0728デフォルトの名無しさん
2006/05/30(火) 11:14:31[2] 問題文(含コード&リンク):
実数xを引数として受け取り、y=(x^3)-(3x^2)-6x+8を計算し、yの値が正の場合は1を、
負の場合は-1を、0の場合は0を返す関数(戻り値は整数型)を作成し、その関数が正常に動作するか
どうかを、実際に実行して確認せよ。ただし、main関数では、xの値をキーボードから入力し、関数を
呼び出した後は、戻り値の値を出力せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VisualStudio6.0
[3.3] 言語: C/C++/どちらでも可
[4] 期限:早めに
[5] その他の制限: 特になし
よろしくおねがいします。
0729デフォルトの名無しさん
2006/05/30(火) 11:23:22#include <math.h>
int signfunc(double x) { return sgn(((x-3)*x-6*x)+8); }
int main(void) { double x; scanf("%lf",&x); printf("%d\n", signfunc(x)); return 0; }
期限:早めにって何だよ。
0730デフォルトの名無しさん
2006/05/30(火) 11:28:08[2] 問題文(含コード&リンク):
一次方程式ax+b=0の係数a,bの値(実数)を引数として受け取り、方程式の解を返す関数を作り、
正常に動作するかどうかを確認せよ。ただし、係数a,bはアドレス渡しとし(引数にポインタを使う)、
解は、引数を用いて返すこと(ポインタの引数を使用し、戻り値は0とする)。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VisualStudio6.0
[3.3] 言語: C/C++/どちらでも可
[4] 期限:早めに
[5] その他の制限: 特になし
おねがいします。
0731デフォルトの名無しさん
2006/05/30(火) 11:45:29int solve(double* x, double* a, double* b)
{
if(*a==0.0){
if(*b==0.0){*x=0.0; /* 任意の解 */}
else{*x=0.0/0.0; /* NaNって定数であったっけ?不可能解 */}
} else {
*x = -*a/*b;
}
return 0; /* a==0.0の処理が面倒なのはここの指定のせい */
}
int main(void)
{
double x, a, b;
printf("a, b >"); scanf("%lf , %lf", &a, &b);
solve(&x, &a, &b);
printf("%fx+%f=0 -> x=%f\n", a, b, x);
return 0;
}
0732デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[100];int a,b;fgets(tmp,100,stdin);a=atoi(tmp);
fgets(tmp,100,stdin);b=atoi(tmp);a=(a>b)?a:b;printf("%i\n",a);return 0;}
>>725
#include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[100];int a,b;fgets(tmp,100,stdin);a=atoi(tmp);
fgets(tmp,100,stdin);b=atoi(tmp);printf("%i\n",(a<b)?a:b);return 0;}
>>726
#include<stdio.h>
#include<stdlib.h>
int main(void){char tmp[100];int a,b,c,d;fgets(tmp,100,stdin);a=atoi(tmp);
fgets(tmp,100,stdin);b=atoi(tmp);if(b){c=a/b;d=(a%b)?1:0;printf("%i\n",c+d);}
else printf("ゼロ除算例外\n");return 0;}
0733デフォルトの名無しさん
2006/05/30(火) 14:15:22[2] 問題文(含コード&リンク):C言語のソースファイルのコメント文削除し、ディスプレイに表示
[3] 環境
[3.1] OS:UNIX
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C言語
[4] 期限:2006年5月30日16:00まで
[5] その他の制限:構造体、ファイル操作、基本的な文法は習いました
0734デフォルトの名無しさん
2006/05/30(火) 14:29:36コメントはC89なのかC99なのかはっきりしろ
課題で決められてないならお前が決めろ
0735733
2006/05/30(火) 14:53:52C99でしたorz
0736デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
int main(int argc,char*argv[]){FILE*fp;char*buf;int i;size_t len;
if(argc>1&&(fp=fopen(argv[1],"rt"))){fseek(fp,0,SEEK_END);len=ftell(fp);
buf=(char*)malloc(len);rewind(fp);fread(buf,len,1,fp);fclose(fp);
for(i=0;i<len&&buf[i]!='\x1a';i++){if(buf[i]=='/'&&(i+1)<len&&buf[i+1]=='/'){i+=2;
while(i<len&&buf[i]!='\n')i++;}else if(buf[i]=='/'&&(i+1)<len&&buf[i+1]=='*'){i+=2;
while(i<len&&!(buf[i]=='*'&&(i+1)<len&&buf[i+1]=='/'))i++;i++;}
else putchar(buf[i]);}}return 0;}
0737733
2006/05/30(火) 15:16:23助かりますorz
0738デフォルトの名無しさん
2006/05/30(火) 15:28:14もう回答されてるが質問した手前、ついでだから貼っとく
簡単なステートマシンで実装した
#include<stdio.h>
int main(){
int state = 0;
char ch;
char oldCh;
/* ファイル名 */
char *FileName = "test.c";
FILE *fp;
fp = fopen(FileName, "r");
while ((ch = fgetc(fp)) != EOF)
{
switch (state)
{
case 0:
if (ch == '/')
{
//コメントテスト
oldCh = ch;
state = 1;
} else putc(ch, stdout);
break;
0739デフォルトの名無しさん
2006/05/30(火) 15:29:16if (ch == '*') state = 2;
else if (ch == '/') state = 4;
else putc(oldCh, stdout), putc(ch, stdout), state = 0;
break;
case 2:
if (ch == '*') state = 3;
break;
case 3:
if (ch == '/') state = 0; //C89形式のコメントを抜ける
else state = 2;
break;
case 4:
if (ch == '\n') state = 0; //C99形式のコメントを終わる
break;
}
}
return 0;
}
ファイル名固定にしてるんで、自分で弄ってくれ
それとステートマシン本体(switch)以外の部分のエラー処理はすっ飛ばしてるんでそこも勝手にやってくれ
0740デフォルトの名無しさん
2006/05/30(火) 15:39:020742デフォルトの名無しさん
NGNGこんな感じか。
#include<stdio.h>
#include<stdlib.h>
int main(int argc,char*argv[]){FILE*fp;char*buf;int i,reteral=0;size_t len;
if(argc>1&&(fp=fopen(argv[1],"rt"))){fseek(fp,0,SEEK_END);len=ftell(fp);
buf=(char*)malloc(len);rewind(fp);fread(buf,len,1,fp);fclose(fp);
for(i=0;i<len&&buf[i]!='\x1a';i++){if(!reteral&&buf[i]=='/'&&(i+1)<len&&buf[i+1]=='/'){i+=2;
while(i<len&&buf[i]!='\n')i++;}else if(!reteral&&buf[i]=='/'&&(i+1)<len&&buf[i+1]=='*'){i+=2;
while(i<len&&!(buf[i]=='*'&&(i+1)<len&&buf[i+1]=='/'))i++;i++;}
else if((buf[i]=='\"'||buf[i]=='\'')&&(buf[i-1]!='\\'))reteral=!reteral;else putchar(buf[i]);}}return 0;}
0743デフォルトの名無しさん
NGNG下2行訂正。
while(i<len&&!(buf[i]=='*'&&(i+1)<len&&buf[i+1]=='/'))i++;i+=2;}
else if((buf[i]=='\"'||buf[i]=='\'')&&(buf[i-1]!='\\'))reteral=!reteral;putchar(buf[i]);}}return 0;}
0744ほかに情報がほしい方は、遠慮なく聞いてください
2006/05/30(火) 16:29:48[2] 問題文(含コード&リンク):c++で
�@最初、画面に文字を出力して
�A1〜3のキーを1つ入力して
�B入力したのは〜番ですか?と表示
�C更に1から3までの入力で何かを更に表示される
(結局、このプログラムは3×3=9通りの出力がある。)
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン:borland c++
[3.3] 言語: C++
[4] 期限: 明日まで
[5] その他の制限: switch case文を使う
0745デフォルトの名無しさん
2006/05/30(火) 16:37:15っていうか、余計なものつけてて説明もとめられたら、説明できるのか。 > 書き込んだ学生
0746デフォルトの名無しさん
NGNG3.「〜番ですか?」の「〜」は何を出力すればいいのか。
4.「何か」って何だよ
0747デフォルトの名無しさん
NGNG丸写しした学生がどうなろうと知ったことではない。というのがこのスレの趣旨。
0748ほかに情報がほしい方は、遠慮なく聞いてください
2006/05/30(火) 16:55:033.�Aで入力した番号です。この場合は1〜3までしかプログラムしていないので1〜3のいずれかです。
4.〜は何でもいいのです。こんにちは、とか
0749デフォルトの名無しさん
2006/05/30(火) 17:00:15横からで済まないが、fopenにtなんてオプションあったっけ?
manにも記載が無いようなんだが
0750デフォルトの名無しさん
2006/05/30(火) 17:05:34わざと間違っているんだと。
0751デフォルトの名無しさん
2006/05/30(火) 17:18:11マジレスすると、MS固有の拡張機能
0752デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
char* message[3][3]={{"こんにちわ","さようなら","ごきげんよう",},
{"Guten Tag","Auf Wiedersehen","Mutiger Mann",},
{"Good day","Good bye","Have a niceday",},};
int main(void){int a,b;char tmp[100];
fgets(tmp,100,stdin);a=atoi(tmp);
switch(a){case 1:case 2:case 3:printf("入力したのは%i番ですか?",a);
fgets(tmp,100,stdin);b=atoi(tmp);
printf("%s\n",message[a][b]);break;}return 0;}
0753デフォルトの名無しさん
NGNG最後の行訂正。
printf("%s\n",message[a-1][b-1]);break;}return 0;}
0754デフォルトの名無しさん
2006/05/30(火) 18:53:36[2] 問題文(含コード&リンク):
2分探索(binary search)は、要素があらかじめキーの昇順あるい
は降順にソートされている配列から効率よく探索するアルゴリズムであ
る。
要素数がnである配列aの要素が昇順に並んでいて、
keyを探索するとして、探索範囲の先頭の添字をpl、末尾の添字を
pr、中央の添字をpcと表すことにする。探索開始時に、pl
は0、prはn-1、pcは(n-1)/2である。
keyとa[pc]を比較して等しければ探索成功であるが、そうでなけ
れば、次のように探索範囲を縮小する。
・key > a[pc]のとき
探索範囲はa[pc+1] 〜 a[pr]になる。
・key < a[pc]のとき
探索範囲はa[pl] 〜 a[pc-1]になる。
なお、アルゴリズムの終了条件は、以下に示す条件のいずれかが成立す
ることである。
・a[pc]とkeyが一致した
・探索範囲がなくなった
このアルゴリズムを利用して、2分探索を行うプログラムを作成せよ。
[3] 環境 UNIX
[4] 期限 今週中
0755754
2006/05/30(火) 18:54:080756デフォルトの名無しさん
NGNG[1] 授業単元:プログラミング応用
[2] 問題文(含コード&リンク):
echoサーバを改造してtinychatサーバを作れ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1959.txt
[3] 環境
[3.1] OS: unix
[3.2] コンパイラ名とバージョン:gcc 3.4 VC 6.0等
[3.3] 言語: C
[4] 期限: 今日の22:00まで
[5] その他の制限: コンパイラは通ったんですが、クライアント(telnet)をつなぎ、
発言するとパイプ破壊と出て、強制終了してしまいます。
0758お願いします。。
2006/05/30(火) 19:52:34[2] キーボードから入力された整数nを素因数分解するプログラミングを作成せよ。
(※ただし以下のように表示するようにする:1445300を入力すると、
1445300=2*2*5*5*97*149と表示される)
[3] 環境
[3.1] OS: Windows
[3.2] コンパイラ名とバージョン:Microsoft Visual C++
[3.3] 言語: C
[4] 期限:2006年5/31(つまり明日)の10:00までです…
[5] まだ基本しかやっていません。(for文、while文等まで)
よろしくお願いします!!
0759デフォルトの名無しさん
2006/05/30(火) 19:56:53[2]問題文(含コード&リンク):
金額(price)を整数値で読み込み、その金額に対する消費税額(tax)を整数値で求め、
消費税額と消費税込み金額を表示してください。消費税率は5%とする。
(消費税額は、0,05を掛けて求める。)
消費税額は、少数第1位を四捨五入するものとする。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:特になし
0760デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
#define TAX_RATE (0.05)
int main(void){int price;double tax;char tmp[100];
printf("本体価格:");fgets(tmp,100,stdin);price=atoi(tmp);
tax=price*TAX_RATE+0.5;printf("消費税額:%i 税込価格:%i\n",
(int)tax,(int)tax+price);return 0;}
0761デフォルトの名無しさん
2006/05/30(火) 20:03:22[2] 問題文(含コード&リンク):以下の表が与えられているもの(入力データ)とし,C言語で作成したシンプレックス法で最適解を求めよ.
また,以下の表より入力データも各自作成せよ.
基底変数 基底値 z x1 x2 x3 x4
z 0 1 8 21 0 0
x3 1 0 2 3 1 0
x4 2 0 1 7 0 1
プログラムは下記のように分割せよ.
1.メインプログラム
2.データ入力
3.基底に入る変数を選択する
4.基底から出る変数を選択する
5.ピボット演算
6.出力
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:BCC
[3.3] 言語: C言語
[4] 期限: 2006年5月31日9:00まで
[5] その他の制限:ごく初歩的なことしか習っていません。for,if,while文,ファイル処理(読み込み・書き込み程度)程度の簡単なものを使用した単純なプログラム をお願いします.できればなんの処理をしているのか説明が書いていただければ幸いです.
2段階シンプレックス法に対応したプログラムを作らなければならないのですが,さっぱりわかりません;;
0762デフォルトの名無しさん
2006/05/30(火) 20:23:50# include <stdio.h>
int main()
{
int n, i;
char opr = '=';
scanf("%d", &n);
printf("%d", n);
i = 2;
while(n > 1)
if(n % i == 0)
{
printf("%c%d", opr, i);
opr = '*';
n /= i;
}
else
i++;
putchar('\n');
return 0;
}
0763デフォルトの名無しさん
2006/05/30(火) 20:25:45...
/*target_fds = org_target_fds;*/ /*コメントアウト*/
memcpy(&target_fds,&org_target_fds,sizeof(org_target_fds)); /* 挿入 */
...
for (j=2; j < FD_SETSIZE; j++) {
if (j==2 || j != sock_fd && FD_ISSET(j, &org_target_fds)) { /* 挿入 */
/*write(j,&j,sizeof(int));*/ /*コメントアウト*/
write(j, buf, read_len);
} /* 挿入 */
}
0764デフォルトの名無しさん
2006/05/30(火) 20:31:55[2]問題文(含コード&リンク):
e=a+b*c+d;とe=(a+b)*c+d;は異なる。
前の式に演算子の優先順位や結合規則を考えて、あえてカッコをつけると
(e=((a+(b*c))+d));となる。
式e=d=a-b+c+b*(a+c)/a;
を実行した後のd,eの値を表示するプログラムを作成してください。
変数は全てint型で、a,b,cの初期値は、それぞれ10、20、30とする。
演算子の優先順位や結合規則を考えて、計算する順に全部あえてカッコをつけて下さい。
そしてカッコをつけないときと結果が同じになることを確認して下さい。
(注)カッコが多いと見づらくなるので、普通は必要のないカッコは書きません。
次のようにする。
a,b,cの初期値を設定してから
e=d=a-b+c+b*(a+c)/a;
printf("d=%d", e=%d\n", d, e); ・・・�@
e=d=a-b+c+b*(a+c)/a; ・・・左の式に全部カッコをつける
printf("d=%d", e=%d\n", d,e); ・・・�A
�@と�Aの結果が同じになることを確認してください。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
0765デフォルトの名無しさん
2006/05/30(火) 20:35:14BCDコードでの加算をやりたいのです。
例えば
BCDでコードで9(00001001)+1(00000001)=10(00010000)になるようにしたいのですがどうしたらいいですか?
0766765
2006/05/30(火) 20:36:59sprintfなどのCのライブラリは使えません。
0767758の者です
2006/05/30(火) 20:37:57ただ、まだ「putchar」というものを習っていないので、そこを
考慮していただけると誠に幸いです…
0768デフォルトの名無しさん
2006/05/30(火) 20:38:19>1
0770765
2006/05/30(火) 20:46:57スレ違いなのは分かります。ごめんなさい。m(_ _)m
でも、今すごく困ってるんです。
分かったら教えてください。
0771デフォルトの名無しさん
2006/05/30(火) 20:47:59なら、putchar('\n');の代わりにprintf("\n");で。
0772デフォルトの名無しさん
NGNGまたまちがえた。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1962.txt
0773デフォルトの名無しさん
2006/05/30(火) 20:49:59テンプレに沿って書けってこと
0774デフォルトの名無しさん
2006/05/30(火) 20:50:15#include <stdio.h>
int main(void)
{
int a=9, b=1, c;
__asm {
mov eax, a
add eax, b
daa
mov c, eax
}
printf("c = %x\n",c);
return 0;
}
0775デフォルトの名無しさん
2006/05/30(火) 20:51:000776765
2006/05/30(火) 20:54:32ごめん。(゜゜)(。 。 )
インラインアセンブラは使えないんだ。
C言語だけで出来ないかな?
0777デフォルトの名無しさん
2006/05/30(火) 20:56:170778デフォルトの名無しさん
NGNG2桁限定。
int bcdadd(int a, int b){int c;a=(a>>4)*10+(a&0xf);b=(b>>4)*10+(b&0xf);
c=a+b;c=(c/10)<<4 | (c%10);return c;}
0779デフォルトの名無しさん
2006/05/30(火) 21:21:12[2]問題文(含コード&リンク):
西暦の年(year)を読み込み、その年がうるう年
であれば"閏年"、うるう年でないときは"平年"と
表示して下さい。うるう年とは、2月が29日の
年。基本は4年に一回(4で割り切れる年はうる
う年)、それだと多すぎるので100年に1回は
平年とする(100で割り切れる年は平年)、そ
れだと少なすぎるので400年に一回をうるう年
に戻す(400で割り切れる数はうるう年)。
この課題はif文一つで。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
0780765
2006/05/30(火) 21:21:50ありがとう。
いったん10進数に直してから計算して、再度BCDコードに変換するんだね。
でもこれって2桁の数字までしか対応できないね。
やりたかったのは4バイト(8桁)の演算だったのだけど、まあいいや。
ありがとう。
0781デフォルトの名無しさん
2006/05/30(火) 21:22:160782デフォルトの名無しさん
NGNG三度目の正直
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1963.txt
0783デフォルトの名無しさん
2006/05/30(火) 21:23:26[2]問題文(含コード&リンク):
西暦の年(year)を読み込み、その年がうるう年
であれば"閏年"、うるう年でないときは"平年"と
表示して下さい。うるう年とは、2月が29日の
年。基本は4年に一回(4で割り切れる年はうる
う年)、それだと多すぎるので100年に1回は
平年とする(100で割り切れる年は平年)、そ
れだと少なすぎるので400年に一回をうるう年
に戻す(400で割り切れる数はうるう年)。
[3]環境
[3.1]OS:windowsXP
[3.2]コンパイラ名とバージョン:gcc
[3.3]言語:C
[4]期限:明日
[5]その他の制限:
この課題はif文のネス
トで。(論理和、論理
積は使わないで下さい
0784デフォルトの名無しさん
2006/05/30(火) 21:42:03int main(){
int year;
printf("year->");
scanf("%d",&year);
if(year%4){printf("閏年");return 0;}
if(year%400){printf("閏年");return 0;}
printf("平年");
return 0;}
0785デフォルトの名無しさん
2006/05/30(火) 21:44:21誤記ばかり
だが訂正はしない
0786デフォルトの名無しさん
2006/05/30(火) 22:17:08#include <stdio.h>
const char *s[2]={"閏","平"};
int main()
{
int year,n;
printf("year\n");
n=scanf("%d",&year);
if (n==1) {
year%=400;
if ((year==100)+(year==200)+(year==300)) { /*if文ネスト*/
year=1;
}
year=(year%4!=0);
printf("%s年\n",s[year]);
}
}
0787デフォルトの名無しさん
2006/05/30(火) 22:36:05[1] 授業単元: 課題
[2] 問題文(含コード&リンク):
素数を求める。
表示方法は各自工夫して、1,3,5,7,11,13・・・・という素数を表示した数までの中から
抽出するプログラムを作成する。(数字指定1〜50まで。とか)
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: VC#
[3.3] 言語: C#
[4] 期限: ([2006年5月31日21:00まで])
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
0788デフォルトの名無しさん
2006/05/30(火) 22:45:20[1] 授業単元: 課題
[2] 問題文(含コード&リンク):
ある文字列にたいして、指定した文字列を検索し指定した置換文字列に置換する。
(※例えば「こんにちは、私はプログラマ初心者です」と入力したら
初心者をキーにこれを上級者に置換できるようにしておき
「こんにちは、私はプログラマ上級者です」 と表示する
[3] 環境
[3.1] OS: XP
[3.2] コンパイラ名とバージョン: VC#
[3.3] 言語: C#
[4] 期限: ([2006年5月31日21:00まで])
[5] その他の制限:
0789デフォルトの名無しさん
2006/05/30(火) 22:54:110790デフォルトの名無しさん
NGNG意味がわからん。
0791デフォルトの名無しさん
NGNGC#の文字列クラスには、置換のメソッドがあったような気がする。
0792バカぽん
2006/05/30(火) 23:07:06↓ No.1964です;;;
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm?
0793デフォルトの名無しさん
2006/05/30(火) 23:19:59>1
0794バカぽん
2006/05/30(火) 23:41:130795デフォルトの名無しさん
2006/05/30(火) 23:43:470796バカぽん
2006/05/30(火) 23:50:560797ハジメ
2006/05/31(水) 00:09:430798バカぽん
2006/05/31(水) 00:18:500799デフォルトの名無しさん
2006/05/31(水) 00:41:290800デフォルトの名無しさん
NGNG使わせてもらった。
http://c-kadai.sakura.ne.jp/index.php?itemid=15
0801デフォルトの名無しさん
2006/05/31(水) 02:04:26ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1965.c
0802デフォルトの名無しさん
2006/05/31(水) 06:19:19[2] 問題文(含コード&リンク):
2分探索(binary search)は、要素があらかじめキーの昇順あるい
は降順にソートされている配列から効率よく探索するアルゴリズムであ
る。
要素数がnである配列aの要素が昇順に並んでいて、
keyを探索するとして、探索範囲の先頭の添字をpl、末尾の添字を
pr、中央の添字をpcと表すことにする。探索開始時に、pl
は0、prはn-1、pcは(n-1)/2である。
keyとa[pc]を比較して等しければ探索成功であるが、そうでなけ
れば、次のように探索範囲を縮小する。
・key > a[pc]のとき
探索範囲はa[pc+1] 〜 a[pr]になる。
・key < a[pc]のとき
探索範囲はa[pl] 〜 a[pc-1]になる。
なお、アルゴリズムの終了条件は、以下に示す条件のいずれかが成立す
ることである。
・a[pc]とkeyが一致した
・探索範囲がなくなった
このアルゴリズムを利用して、2分探索を行うプログラムを作成せよ。
[3] 環境 UNIX
[4] 期限 今週中
すみませんが、お願いします
0803バカぽん
2006/05/31(水) 06:27:44環境によって「error C2117: '*********' : 指定された配列には、初期化子が多すぎます。
」っという状況もあったが、その他のコンパイラが通れました。
ありがとうございましたw感謝します。
0804デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
#include<string.h>
const char* table[]={"aho","baka","chisho","dame","eta","funuke","gerou","hentai","idiot",
"jama","kuzu","loser","manuke","neet","otankonasu","pekepon","quack","ratbrain","shine",
"tamanashi","unko","wanker",};
int bsearch(const char* key, const char* a[],int pc, int pr){int cmp;
if(pc>=pr)return -1;
cmp=strcmp(key,a[pc]);if(cmp==0)return pc;
if(cmp>0)return bsearch(key,a,pc+1,pr);else return bsearch(key,a,0,pc-1);
return -1;}
int main(void){char tmp[100];int c,n=sizeof(table)/sizeof(const char*);
printf("word:");fgets(tmp,100,stdin);c=bsearch(tmp,table,(n-1)/2.n-1);
if(c==-1)printf("%sはねえよバカ!\n",tmp);else printf("%sは%i番目\n",tmp,c);
return 0;}
0805よろしくお願いします
2006/05/31(水) 12:24:56[2] 問題文(含コード&リンク):
c++でprintf,scanfとかじゃなくてcin,ioutに直しswitch case文も使う。
以下のプログラムを追加・変更してください
#include<stdio.h>
#include<conio.h>
void main(void)
{ int n,y;
cin<<"メニューをお選びください\n1:カレーライスn\2:ラーメン\n3:カツ丼"); scanf("%d",&n);
switch(n)
{ case 1:cout<< "500円です。よろしいですか?";break;
case 2cout<< "600円です。よろしいですか?";break;
case 3:cout<< "700円です。よろしいですか?";break;
default:printf("想定外入力");
}
getchar();
getchar();
}
ここで123を選んで"〜です。よろしいですか?"を表示すると1or2をまた入力して1であれば最初のcinに戻り
2を入力すると。"ありがとうございます"と表示されるプログラムを作りたい
[3] 環境
[3.1] OS:XP
[3.2] borland c++
[3.3] 言語: C++
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限:初歩の初歩if elseまで
0806デフォルトの名無しさん
2006/05/31(水) 12:56:29#include <iostream>
using namespace std;
int main(void){
int n,y;
do{
cout << "メニューをお選びください\n1:カレーライス\n2:ラーメン\n3:カツ丼" << endl;
cin >> n;
switch(n){
case 1:cout << "500円です。よろしいですか?" << endl;break;
case 2:cout << "600円です。よろしいですか?" << endl;break;
case 3:cout << "700円です。よろしいですか?" << endl;break;
default:cout << "想定外入力" << endl;
}
cin >> y;
if(y == 1)break;
}while(1);
cout << "ありがとうございます"<<endl;
return 0;
}
0807よろしくお願いします
2006/05/31(水) 14:00:06ありがとうございます。C++だとiostreamになるのですか?スレ違いならスイマセン
0808デフォルトの名無しさん
2006/05/31(水) 15:10:02[2] 問題文:
少し長かったのでアップローダーに貼らせてもらいました。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1966.txt
[3] 環境
[3.1] OS:windowsXP
[3.2] コンパイラ名とバージョン:不明
[3.3] 言語:C++
[4] 期限: ([2006年6月1日10:00まで]
[5] その他の制限: 「ポインタとアドレス」を使用すること。
ポインタの説明が授業を聞いただけだとよく分かりませんでした…。
どなたかお願いいたします。
0809デフォルトの名無しさん
2006/05/31(水) 15:35:32void put_into_orbit(Point *p,double rd){
//pは移動する点を指すポインタ、rdは原点中心とする円の半径。
//distance0()メンバ関数を使い、原点からの距離を計算し、
//この値とrdとの差が±0.1以下になるように移動する。
//点の移動には、Pointクラスのmove()とhalf()メンバ関数を用いる。
//点が円の内部にあるときにはmove()によりy座標を0.1ずつ移動。
//点が円の外部にあるときにはhalf()により移動。
//移動状況はprint()メンバ関数で座標を示す。
double er;
do{
er = p->distance0();
if(er > rd)p->half();
else p->move(0.0, 0.1);
p->print();
}while(fabs(er - rd) > 0.1);
}
0810デフォルトの名無しさん
2006/05/31(水) 17:09:10「C++だと」ではなく、cinやcoutが宣言されているヘッダファイルが<iostream>ということなだけ。
0811デフォルトの名無しさん
2006/05/31(水) 18:27:53なにもかも未完成と判断してスクラッチで書きおこしたら原点かなあ。
0812デフォルトの名無しさん
2006/05/31(水) 19:41:17void put_into_orbit(Point *p,double rd){
double err=p->distance0()-rd;
while (fabs(err)>0.1) {
if (err > 0) p->half(); else p->move(0.0,0.1);
p->print();
}
}
0813デフォルトの名無しさん
2006/05/31(水) 19:43:15void put_into_orbit(Point *p,double rd){
double err=p->distance0()-rd;
while (fabs(err)>0.1) {
if (err > 0) p->half(); else p->move(0.0,0.1);
p->print();
err=p->distance0()-rd;
}
}
0814デフォルトの名無しさん
2006/05/31(水) 22:01:06分割コンパイルの続きなのですが、一応ここまでやってみたのですが、
検索と削除ができません。
どなたかご教授お願いします。
ろだにうpしました:
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1967.txt
よろしくお願いします。
0815どなたかお願いします。
2006/05/31(水) 22:22:20[2] 問題文(含コード&リンク): 1桁の正の数字を整数変数nに入力し、その後からn個の整数を入力した後にそれらの和を出力するプログラムを作成せよ。
実行例その1
Input n<10:5
23
45
67
12
9
sum=156
実行例その2
Input n<10:-9
Input Error
実行例その3
Input n<10:15
Sorry (n<10)
[3] 環境
[3.1] OS:UNIX
[3.3] 言語:C++
[4] 期限: 明日
[5]まだfor文までしかやっていません。
0816デフォルトの名無しさん
2006/05/31(水) 22:25:340817デフォルトの名無しさん
2006/05/31(水) 23:03:27main.cのみ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1968.txt
0818デフォルトの名無しさん
NGNGなんだが、forを使う必要のない計算でforを使えとか普通はswitchなんか使わないような
アルゴリズムでswitchを使えとか、あれこれ使えと言う前に出題者は頭を使え!と言いたく
なるような愚問が多いな。
0819デフォルトの名無しさん
2006/05/31(水) 23:24:31ある程度理解できるようになると、愚問だとか考えられるようになるんだろうけど
0820デフォルトの名無しさん
NGNGゴルフのレッスンでティーショットにパターを使えと言うくらい意味のない課題に初歩もクソもない。
0821デフォルトの名無しさん
2006/05/31(水) 23:56:550822デフォルトの名無しさん
2006/06/01(木) 00:44:00ありがとうございます
使ったことがないやつが多数ありましたけれど、
自分でそこは調べてレポートを書いてみます
勉強になりました
0823デフォルトの名無しさん
2006/06/01(木) 01:15:02cancelにバグがあった。
Copernicusを先にcancelすると
Heisenbergがcancelできなくなる。
int cancel(char *id1){
int x, count = 0;
x = hash(id1);
while(strcmp(id1, table[x].id)){
if(++count == M) /*変更箇所*/
return (-1);
if(++x == M)x = 0;
}
strcpy(table[x].id, "");table[x].info = -1;
return (x);
}
0824デフォルトの名無しさん
2006/06/01(木) 01:20:260826デフォルトの名無しさん
2006/06/01(木) 03:42:580827デフォルトの名無しさん
2006/06/01(木) 04:07:59using namespace std;
int main(){
int n, sum = 0, num;
cout << "Input n<10:";
cin >> n;
if (n < 0){
cout << "Input Error" << endl;
} else if (n >= 10){
cout << "Sorry (n<10)" << endl;
} else {
for (int i = 0; i < n; i++){
cin >> num;
sum += num;
}
cout << "sum=" << sum << endl;
}
return 0;
}
0828デフォルトの名無しさん
2006/06/01(木) 04:24:540829デフォルトの名無しさん
2006/06/01(木) 06:42:16[2] 問題文(含コード&リンク):
任意の文字列を配列に読み込み、
その中に出てくる特定の文字列を指定した文字列に置き換えるプログラムの作成
【実行例】
入力文字列:boku ha suika ga suki dayo
置き換え元:suika
置き換え後:meron
結果:boku ha meron ga suki dayo
必要であれば以下の関数を用いること
文字列を複写する関数:strncpy(str1,str2,n)
文字列の長さを返す関数:strlen(str1)
文字列をn文字分比較する関数:strncmp(str1,str2,n)
[3] 環境
[3.1] OS: リナックス
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 本日
[5] その他の制限: 独習C言語を教科書に、配列・文字列の章まで学びました
0830デフォルトの名無しさん
2006/06/01(木) 08:05:23授業名:C言語演習A−2
環境:リナックス
コンパイラ:gcc
言語:C言語です
期限:明日
問題:10-4
x個の文字列を読み込んだ後に、
その文字列を反転させるプログラム。
尚、反転とは、例えば「takedayousuke」という文字列を打ち込むと、
「ekusuoyadekat」と出力するものである
以下に実行例を記す
xを入力せよ:3
1個目の文字列を入力!:yamato
反転しました!:otamay
2個目の文字列を入力!:yousuke
反転しました!:ekusuoy
3個目の文字列を入力!:enraku
反転しました!:ukarne
その他の制限:どこまで習ったか
if for do goto while switch文、配列、文字列
の辺りまでです
0831デフォルトの名無しさん
2006/06/01(木) 08:11:34[2] 提出期日: 6月2日
[3] コンパイラ&環境:Visual Stdio.NET2003 (Windows XP)
[3] 問題文(含コード&リンク):
次のプログラムを変更して、以下のプログラムを作成せよ。
1.”pen” だけではなく任意の文字列を画面から入力して検索できるプログラム
例:
検索したい文字列: have
2文字目に見つかりました
2. 任意の一行(ただし80文字以内)を画面から入力させ、さらにその中の任意の文字列を検索できるプログラム
例:
元の文字列: To be to be ten made to be.
検索したい文字列: to
6文字目に見つかりました
21文字目に見つかりました
[プログラム]
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1969.txt
1問めと2問めできれば分けて、それぞれ作成お願いします。
プログラム長いと思うので、UPしてかまわないです。
0832デフォルトの名無しさん
2006/06/01(木) 08:24:06#include <stdio.h>
int main()
{
char s[64];
int i,n;
int i1,i2;
char t;
printf("xを入力せよ\n");
if (1!=scanf("%d",&n)) {
printf("error!\n");
exit(1);
}
for(i=1;i<=n;i++) {
printf("%d個目の文字列を入力!:",i);
if (1!=scanf("%63s",s)) break;
;
for(i1=0,i2=strlen(s);i1>i2;i1++,i2--) {
t=s[i1];
s[i1]=s[i2];
s[i2]=t;
}
printf("反転しました!:%s\n",s);
}
}
}
0833デフォルトの名無しさん
2006/06/01(木) 08:30:29#include <stdio.h>
#include <string.h>
int main()
{
char s[64];
int i,n;
int i1,i2;
char t;
printf("xを入力せよ\n");
if (1!=scanf("%d",&n)) {
printf("error!\n");
return 1;
}
for(i=1;i<=n;i++) {
printf("%d個目の文字列を入力!:",i);
if (1!=scanf("%63s",s)) break;
;
for(i1=0,i2=strlen(s)-1;i1>i2;i1++,i2--) {
t=s[i1];
s[i1]=s[i2];
s[i2]=t;
}
printf("反転しました!:%s\n",s);
}
return 0;
}
0834デフォルトの名無しさん
2006/06/01(木) 08:32:29#include <stdio.h>
#include <string.h>
int main()
{
char s[64];
int i,n;
int i1,i2;
char t;
printf("xを入力せよ\n");
if (1!=scanf("%d",&n)) {
printf("error!\n");
return 1;
}
for(i=1;i<=n;i++) {
printf("%d個目の文字列を入力!:",i);
if (1!=scanf("%63s",s)) break;
;
for(i1=0,i2=strlen(s)-1;i1<i2;i1++,i2--) {
t=s[i1];
s[i1]=s[i2];
s[i2]=t;
}
printf("反転しました!:%s\n",s);
}
return 0;
}
0835デフォルトの名無しさん
2006/06/01(木) 08:43:492)問題文
7章 問12
txtファイルの各行の終端には通常、復帰及び改行を示すアスキーコードが加えられている。
これを利用し、ファイルの行数を復帰、改行の数をカウントすることにより計算が可能である。
これを利用し、txtファイルの行数を計算するプログラムの作成を行え。
尚、復帰・改行に対応するアスキーコードは「10」である。
txtファイルの読み込みは、初回の講義で説明した通り、
./a.out < ファイル名.txt となる。
3)環境 gcc VineLinux3.2 C言語
4)制限
C言語入門にて、配列、文字列の項まで。
初めてお世話になります、よろしくお願いします。
0836デフォルトの名無しさん
NGNG#include<stdio.h>
int main(void){int c,l=0;while((c=getchar())!=EOF)if(c=='\n')++l;printf("%i\n",l);return 0;}
0837デフォルトの名無しさん
NGNG1.
-char s[] = "pen";
+char s[81];
forの前に↓を追加
fgets(s,81,stdin);
2.
-char bunsho[] = "I have a pen & pencil";
+char bunsho[81];
forの前に↓を追加
fgets(bunsho,81,stdin);
0838デフォルトの名無しさん
2006/06/01(木) 11:29:30ありがとうございました
0839デフォルトの名無しさん
2006/06/01(木) 11:33:19-char s[] = "pen";
+char s[81];
-,+の意味が分かりません。追加するってことですか?
0840デフォルトの名無しさん
2006/06/01(木) 11:42:03ごめんなさい。動作しました。ありがとうございました。
0841デフォルトの名無しさん
2006/06/01(木) 11:56:15#include <stdio.h>
#include <string.h>
int replace(char s1[], char s2[], char s3[]){
int i, j, wk2, wk3;
char r[0xff];
for(i = 0;s1[i] != NULL && s1[i] != s2[0];i++);
if(strncmp(&s1[i], s2, (wk2 = strlen(s2))) != 0)return 0;
for(j = 0; j < i;j++)r[j] = s1[j];
for(j = 0; s3[j] != NULL;j++)r[i + j] = s3[j];
for(j = 0, wk2 += i, wk3 = strlen(s3) + i; s1[j] != NULL;j++)r[wk3 + j] = s1[wk2 + j];
strcpy(s1, r);
return 1;
}
int main(){
char s1[255], s2[100], s3[100];
printf("入力文字列:");gets(s1);
printf("元:");gets(s2);
printf("後:");gets(s3);
if(replace(s1, s2, s3))printf("結果:%s", s1);
else printf("失敗");
return 0;
}
0842デフォルトの名無しさん
2006/06/01(木) 12:00:49訂正
int replace(char s1[], char s2[], char s3[]){
int i, j, wk2, wk3;
char r[0xff];
for(i = 0;s1[i] != NULL;i++)if(s1[i] == s2[0] && strncmp(&s1[i], s2, (wk2 = strlen(s2))) == 0)break;
if(s1[i] == NULL)return 0;
for(j = 0; j < i;j++)r[j] = s1[j];
for(j = 0; s3[j] != NULL;j++)r[i + j] = s3[j];
for(j = 0, wk2 += i, wk3 = strlen(s3) + i; s1[j] != NULL;j++)r[wk3 + j] = s1[wk2 + j];
strcpy(s1, r);
return 1;
}
0843831
2006/06/01(木) 12:45:35>>837のように改良しましたが、
1問目は、実行画面で入力できるのですが、
検索したい単語は任意です。pen だけではなくhaveとかも検索できるプログラムを
お願いします。
2問目も同様に、実行画面で英文の文章を入力したら、その文から任意の単語を検索して
表示するプログラムをお願いします。
(例):
元の文字列 : To be to be ten made to be.
検索したい文字列 : to
6文字目に見つかりました
21文字目に見つかりました
↑実行画面ではこんな感じ。
0844デフォルトの名無しさん
2006/06/01(木) 12:55:142] 問題文:
任意の文字列を配列に読み込み、
その中に出てくる特定の文字列を指定した文字列に置き換えるプログラムの作成
実行例を以下のようにせよ。
入力文字列:boku ha suika ga suki dayo
置き換え元:suika
置き換え後:meron
結果:boku ha meron ga suki dayo
必要であれば以下の関数を用いること
文字列を複写する関数:strncpy(str1,str2,n)
文字列の長さを返す関数:strlen(str1)
文字列をn文字分比較する関数:strncmp(str1,str2,n)
3] 環境
31] OS: VineLinux3.2
32] コンパイラー: gcc
33] 言語: C言語
4] 期限: あと90分強
5] その他の制限: 配列、文字列まで修了、ポインタの使用禁止だそうです。
よろしくお願いします・・・っ
0845デフォルトの名無しさん
2006/06/01(木) 12:56:23あるじゃん>>841-842
0846デフォルトの名無しさん
NGNG>>837
0847デフォルトの名無しさん
NGNG>文字列の長さを返す関数:strlen(str1)
>文字列をn文字分比較する関数:strncmp(str1,str2,n)
>ポインタの使用禁止だそうです。
もうね、ア(ry
0848844
2006/06/01(木) 13:06:18同じ単元の別コースの同じ問題なのかな…?
凄い偶然・・・
あ、でもダメです、
なんか7、8、10、11行目でコンパイルエラーでてしまいます
どう直せばいいのでしょう orz
0849デフォルトの名無しさん
2006/06/01(木) 13:09:050850デフォルトの名無しさん
2006/06/01(木) 13:09:360851844
2006/06/01(木) 13:18:03ポインタ禁止は別の問題の禁則でした・・・。
えっと、エラーは7、8、10、11行目で、
エラーメッセージは全て
警告 :ポインタと整数との比較を行っています です。
0852デフォルトの名無しさん
2006/06/01(木) 13:26:19いやなら、キャストすれば
0853デフォルトの名無しさん
2006/06/01(木) 13:30:27あっ、二行目は勘違いかも
0854844
2006/06/01(木) 13:38:22ありがとうございましたー!精進します!
0855デフォルトの名無しさん
2006/06/01(木) 13:56:06先輩に頼りまくってた1回生の頃思い出した
0856デフォルトの名無しさん
2006/06/01(木) 14:10:34[2] 問題文:
コマンドライン上の括弧文字列を読み込んで、
左括弧と右括弧が釣り合っているか(整合しているか)どうかを判定し、
釣り合っている場合には対応する括弧対に番号をつけて出力するようなプログラムを
作成せよ。
ヒント:文字入力にはgetchar()関数を呼び出す。
例:入力[ [ ] [ [ ] ] ] [ ] ⇒ 出力 [1 [2 ]2 [3 [4 ]4 ]3 ]1 [5 ]5
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ(バージョン):gcc
[3.3] 言語:C
[4] 期限:6/7まで
[5] その他の制限:無し
どなたかご教授お願いします。
0858デフォルトの名無しさん
2006/06/01(木) 14:33:05そのプログラムをコンパイルしてみたのですが、
13:3: missing terminating " character
6:44: possible start of unterminated string literal
というエラーメッセージが出るんですが、さっぱり意味がわかりません。
どこを修正すればいいんでしょうか?
0859デフォルトの名無しさん
2006/06/01(木) 14:54:42#include <stdio.h>
int func(int count)
{
int ch;
for (;;) {
ch = getchar();
if (ch == '[') {
int n = count++;
printf("[%d ", n);
count = func(count);
printf("]%d ", n);
}
else if(ch == ']')
return count;
else if(ch == '\n')
putchar(ch);
}
}
main(void)
{
/* (C) 2ch syukudai sure */
func(1);
}
0860デフォルトの名無しさん
NGNG日本語とおらねえのか。
#include<stdio.h>
int main(void){int l,m,s,c,len=0;l=m=s=0;char tmp[1000];
while((c=getchar())!=EOF&&len<1000){{
tmp[len++]=c;switch(c){
case'[':++l;len+=sprintf(&tmp[len],"%i",l);break;case']':--l;len+=sprintf(&tmp[len],"%i",l);break;
case'(':++s;len+=sprintf(&tmp[len],"%i",s);break;case')':--s;len+=sprintf(&tmp[len],"%i",s);break;
case'<':++m;len+=sprintf(&tmp[len],"%i",m);break;case'>':--m;len+=sprintf(&tmp[len],"%i",m);break;}
if (!(l && m && s))printf("%s\n",tmp);else printf("not match\n");return 0;}}
0861デフォルトの名無しさん
NGNGしまった。
#include<stdio.h>
int main(void){int l,m,s,c,len=0;l=m=s=0;char tmp[1000],tmp2[10];
while((c=getchar())!=EOF&&len<1000){
tmp[len++]=c;switch(c){
case'[':++l;len+=sprintf(&tmp[len],"%i",l);break;case']':len+=sprintf(&tmp[len],"%i",l--);break;
case'(':++s;len+=sprintf(&tmp[len],"%i",s);break;case')':len+=sprintf(&tmp[len],"%i",s--);break;
case'<':++m;len+=sprintf(&tmp[len],"%i",m);break;case'>':len+=sprintf(&tmp[len],"%i",m--);break;
}}tmp[len]='\0';if (!(l && m && s))printf("%s\n",tmp);else printf("not match\n");return 0;}
0862デフォルトの名無しさん
2006/06/01(木) 17:59:13[2] 問題文:文字列の長さが長い順に,文字列配列を使って,並べ替えるプログラムを作成しなさい.
ただし,文字列の長さを求める関数と,文字列をコピーする関数を作成しなさい
(ライブラリとして用意されている関数は用いないこと).
[3] 環境
[3.1] OS:Windows xp
[3.2] コンパイラ名とバージョン: bcc55
[3.3] 言語:C
[4] 期限:2006年6月5日
ある程度は作成しましたが、実行したら強制終了してしまいます。
0863デフォルトの名無しさん
2006/06/01(木) 18:13:04ライブラリの関数を使わずに、
文字列を格納するのがうまくいってないようです。
0864デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
size_t mystrlen(const char* str){size_t i;for(i=0;*str!='\0';str++,i++);return i;}
char* mystrcpy(char* dst,const char* src,size_t len){size_t i;for(i=0;i<len&&*src!='\0';src++;i++)
dst[i++]=*src;return dst;}
int cmplen(const char* s1,const char* s2){return mystrlen(s1)-mystrlen(s2);}
int main(void){char tmp[100],char* list[1000];int n=0,len;
while(fgets(tmp,100,stdin)&&n<1000){list[n]=(char*)malloc((len=mystrlen(tmp)));
mystrcpy(list[n],tmp,len-2);list[n][len-1]='\0';n++;}
qsort((void*)list,n,sizeof(char*),(int (*)(const void*, const void*))cmplen);
while(--n>=0)printf("%s\n",list[n]);return 0;}
0865843
2006/06/01(木) 18:43:290866デフォルトの名無しさん
2006/06/01(木) 18:48:55/* テストしないでかきこ */
#include <stdio.h>
#include <stdlob.h>
char strings[3][100];
void str_copy(char* to, char* from)
{while (*from != '\0') {*to++ = *from++;} *to = '\0'; }
int str_length(char* str)
{int length = 0; while (*str != '\0') {length++; str++; } return length; }
int main()
{str_copy(strings[0], "Banana"); str_copy(strings[1], "Pineapple"); str_copy(strings[2], "Grape");
bool sorted_flag;
do
{sorted_flag = false;
for (int i = 0; i < NUM_STRING; i++)
{for (int n = i + 1; n < NUM_STRING; n++)
{if (str_length(strings[i]) < str_length(strings[n])
{char str_buffer[100];
str_copy(str_buffer, strings[i]);
str_copy(strings[i], strings[n]);
str_copy(strings[n], str_buffer);
sorted_flag = true; }}}}
while (sorted_flag);
return 0;
for (int i = 0; i < NUM_STRING; i++)
printf("[%d] %s\n", i, strings[i]);
return 0; }
0867デフォルトの名無しさん
2006/06/01(木) 19:00:51下の文は文字列の文字数abcを引数として入れ替える関数です。
自分で作った文ですが、うまくいきません。
int Fnc2(char str[m][n],int a,int b,int c){
int i=0,j=1;
char tmp[m][n];
if(a<b){tmp[m][n]=str[i][n];
str[i][n]=str[j][n];
str[j][n]=tmp[m][n];}
i++;j++;
if(b<c){tmp[m][n]=str[i][n];
str[i][n]=str[j][n];
str[j][n]=tmp[m][n];}
printf("%s %s %s",str[0],str[1],str[2]);
return 0;
}
0868デフォルトの名無しさん
NGNG何をやりたいのかがよくわからん。
0869デフォルトの名無しさん
2006/06/01(木) 19:09:28mとnは定数?
aとbとcは何?
とりあえず、比較と入れ替えを別々の関数にしたほうが作りやすいと思う。
0870デフォルトの名無しさん
2006/06/01(木) 19:31:42#include <stdio.h>
#define m 5
#define n 80
#define string char *
int Fnc(char str[m][n],int *a,int *b,int *c);
int Fnc2(char str[m][n],int a,int b,int c);
main(){int a=0,b=0,c=0,i;
char str[m][n];
printf("3列分文字列を入力してください。\n");
for(i=0;i<3;i++){scanf("%s",str[i]);}
Fnc(str,&a,&b,&c);
Fnc2(str,a,b,c);return 0;}
int Fnc(char str[m][n],int *a,int *b,int *c){
int i=0;
while(str[0][i]!=NULL){(*a)++;i++;}i=0;
while(str[1][i]!=NULL){(*b)++;i++;}i=0;
while(str[2][i]!=NULL){(*c)++;i++;}return 0;}
int Fnc2(char str[m][n],int a,int b,int c){
int i=0,j=1;
char tmp[m][n];if(a<b){tmp[m][n]=str[i][n];
str[i][n]=str[j][n];
str[j][n]=tmp[m][n];}i++;j++;
if(b<c){tmp[m][n]=str[i][n];
str[i][n]=str[j][n];
str[j][n]=tmp[m][n];}
printf("%s %s %s",str[0],str[1],str[2]);return 0;}
0871866
2006/06/01(木) 19:47:31二次元配列を丸ごと引数として渡したりとかできないよ。
>文字列の長さを求める関数と,文字列をコピーする関数を作成しなさい
っていう意味も理解していないっぽい。
>>864や>>866でどういう関数を作っているかよくみてみれ。
0872デフォルトの名無しさん
2006/06/01(木) 22:00:55int slen = strlen(s);の下に
if(s[--slen] == '\n')s[slen] = NULL;
加える
0873デフォルトの名無しさん
2006/06/01(木) 23:39:38していただけないでしょうか。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1970.txt
よろしくお願いいたします。
0874デフォルトの名無しさん
2006/06/02(金) 00:12:591. script の意味を取り違えてる。そもそも動詞ではない。
2. 分割コンパイルの考え方を誤っている。
3. >>1 を見ていない。
4. 誰かがコンパイルしたとして、その結果出来る a.exe をどうするの?
0875デフォルトの名無しさん
2006/06/02(金) 00:46:271.屁理屈言うなって。ニュアンスは伝わるべ。
2.どこが誤っている?
3.これは同意。
4.cygwinじゃないんだからa.exeはないだろ。
0876デフォルトの名無しさん
2006/06/02(金) 01:04:092. 分割コンパイルは問題なく動作してます
3. いや、前にこちらでテンプレ付で頼んだやつの実行したやつをtxtで
取りたかったんですけど、もう一回テンプレはうざいかなと思って
4. コンパイルしたファイルは頼んでいません、ただcygwinなら最初に
gcc ○○.c でコンパイルしないと、./a.exeでscriptできないかなと思ったので
そう書きました
普通cygwinではgcc ○○.c , script開始, ./a.exe, exitという流れでtypescript
を取っているので、そのtypescriptを貼っていただければと思ったのですが
0877デフォルトの名無しさん
2006/06/02(金) 01:33:23スクリプトするなんて言葉聞いたこと無いし、意味が分からない
0878デフォルトの名無しさん
2006/06/02(金) 01:48:370879デフォルトの名無しさん
2006/06/02(金) 02:01:04分からないと言われてる(しかも自分自身何て説明すればいいか分からん)言葉を
説明無く使うな。余計意味が分からん。結局何したいの?
ついでにいっておくと、>>874での2.は、コンパイルできるかどうかの問題ではなく、
あのコンパイルの仕方は分割コンパイルではない、ということ。
0880デフォルトの名無しさん
2006/06/02(金) 02:08:07実行結果をファイル出力ってscriptって言いませんでしたっけ?
どっかで聞いた気がするんですけど、間違ってたらすみません
それをとにかくやりたいのですが、script以外にやり方あったら教えて下さい
>はどうやって使うんでしょうか
別の場所のcygwinではscriptって入れれば、実行結果が見れるので
それでいいんだと思ってました
0881デフォルトの名無しさん
2006/06/02(金) 02:09:07・scriptコマンドを知らない香具師が随分いるんだな。
0882デフォルトの名無しさん
2006/06/02(金) 02:13:14いいかげん、スレ違い
0883デフォルトの名無しさん
2006/06/02(金) 02:35:510884デフォルトの名無しさん
2006/06/02(金) 08:44:15>・scriptコマンドを知らない香具師が随分いるんだな。
そもそもスレ違いな事を知っている必要はない
0885デフォルトの名無しさん
2006/06/02(金) 09:12:010887858
2006/06/02(金) 10:30:50申し訳ありません。あなたの書き込み、見逃していました。
実行してみたところ、正常に作動しました。
本当にありがとうございます。助かりました。
0888デフォルトの名無しさん
2006/06/02(金) 10:35:54試してみたけどtmp2いらねえよって言われただけでコンパイル通ったぞ。
つか8行しか無いのに13行目でエラーっておかしく無いか?
0889デフォルトの名無しさん
2006/06/02(金) 14:00:550890デフォルトの名無しさん
NGNG0891デフォルトの名無しさん
2006/06/02(金) 14:41:33ならんよ。>>856の例を試してみればいい。深さを出しちゃいかんよ。
0892デフォルトの名無しさん
NGNG0893デフォルトの名無しさん
2006/06/02(金) 15:22:25[2] 問題文: 以下の手順にしたがって文字列を処理するプログラムを作成し,実行し
なさい.ただし,配列内各要素へのアクセスにはポインタを使用し、関数(strcpy(), strcat(), strlen()等)は使用しないこと.
(1)2つの文字配列A, Bを用意する.
(2)文字配列A, Bに,対象文字列を格納する.
(3) B に格納された文字列の末尾に, A に格納された文字列を連結させ,それらを表
示させる.
(4)(3)の処理後, Bの文字列を逆順にAにコピーし,それらを表示させる.
入出力例)
Pleaseinputfirstwords:abcdefgh(注:末尾にスペース有)
Pleaseinputsecondwords:ijklmnop(注:末尾にスペース有)
Connectedwords:ijklmnopabcdefgh(注:末尾にスペース有)
Backwaredarrangedwords:hgfedcbaponmlkji(注:先頭にスペース有)
[3] 環境
[3.1] OS:linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語:C
[4] 期限:2006年6月7日
よろしくお願いいたします(´Д⊂
0894デフォルトの名無しさん
2006/06/02(金) 15:32:34マルチ乙
0895デフォルトの名無しさん
2006/06/02(金) 15:48:08int main(void){
char a[0xff], b[0xff], *p, *q;
printf("Please input first words:");gets_s(a, sizeof(a));
printf("Please input second words:");gets_s(b, sizeof(b));
for(q = b; *q != NULL; q++);
for(p = a; *p != NULL; *q = *p, p++, q++);
*q = NULL;
printf("Connected words:");puts(b);
for(p = a, q--; q >= b; *p = *q, p++, q--);
*p = NULL;
printf("Backwared arranged words:");puts(a);
return 0;
}
しまった、やってしまった…
0896デフォルトの名無しさん
2006/06/02(金) 19:30:33[2] 問題文(含コード&リンク):
整数を要素とするスタックのクラス定義をC++あるいはJavaで作成せよ
[3] 環境 Windows
[4] 期限 明日まで
初心者です。
意味が分かりません…お願いします。
0897デフォルトの名無しさん
2006/06/02(金) 19:39:24#include<stack>
class Stack : public std::stack<int>{};
0898デフォルトの名無しさん
2006/06/02(金) 20:36:00プログラムを作成せよ。for文をしよう
[1] 授業単元:計算力学
[2] 問題文(含コード&リンク): キーボードから0以上の整数を入力し、
その整数の和を計算し表示するプログラムを作成せよ。for文を使用いて作成してください
[3] 環境
[3.1] OS:Windows
[3.3] 言語:C
[4] 期限: 6月5日
お願いします。
0899デフォルトの名無しさん
NGNG---------------------------
#include <stdexcept>
class IntStack {
private:
/* (C) 2ch tech syukudai sure */
int size_;
int index_;
int* table_;
public:
IntStack(int);
virtual ~IntStack();
void push(int);
int pop();
};
IntStack::IntStack(int size)
: size_(size), index_(0), table_(new int[size])
{
}
IntStack::~IntStack()
{
delete table_;
}
---------------------------
つづく
0900デフォルトの名無しさん
NGNG--------------------------
void IntStack::push(int n)
{
if (index_ >= size_) throw std::out_of_range("error");
table_[index_++] = n;
}
int IntStack::pop()
{
if (index_ <= 0) throw std::out_of_range("error");
return table_[--index_];
}
0901デフォルトの名無しさん
2006/06/02(金) 21:15:21delete[]table_;じゃないから駄目。
0902デフォルトの名無しさん
NGNGじゃ、delete table_; の行はdelete[] table_; に直しといてね。
0903デフォルトの名無しさん
NGNG#include <stdio.h>
main(void)
{
int n;
int i;
int sum;
/* (C) 2ch tech syukudai sure */
prntf("0以上の整数>");
scanf("%d", &n);
sum = 0;
for (i = 0; i <= n; i++)
sum += i;
printf("整数の和: %d\n", n);
}
0904デフォルトの名無しさん
2006/06/02(金) 21:52:43#include <stdio.h>
int main(void){
int sum,n;
for(sum=0;scanf("%d",&n)!=EOF;sum+=n);
printf("sum:%d\n",sum);
return 0;
}
0906デフォルトの名無しさん
NGNG「整数の和」ってどっちなの?
複数の整数を入力してもらって、それの合計?
0907デフォルトの名無しさん
2006/06/02(金) 22:29:42のですが、これ一冊である程度まで覚えられるで
しょうか?初心者でプログラムのことはよくわか
ってないです。16進法は別のネットワークの本
に書いてあったのでなんとかなります。
0908デフォルトの名無しさん
2006/06/02(金) 23:39:280909デフォルトの名無しさん
2006/06/02(金) 23:54:35やってみます。ありがとうございました。
0910 ◆ZnBI2EKkq.
2006/06/03(土) 00:51:55[2] 問題文(含コード&リンク): �@f (x) = cos (x) - x2 = 0 の根のうち、0 < x < 1 を満たすものを2分法で求める
初期値 a, b が入力でき、 6桁推定された解と関数 f (x) を呼びだした回数を出力するようにしなさい。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン: VC 6.0
[3.3] 言語: C
[4] 期限: (2006年06月08日まで
よろしくお願いします
0911デフォルトの名無しさん
2006/06/03(土) 01:05:58例えばa[i][j]という二次元配列があり、
その中から特定の要素が入っている配列を探し出し、その配列の
iとjを知るにはどうすればいいでしょうか?
二重ループを使って色々やってみましたがうまくいきません。
0912デフォルトの名無しさん
2006/06/03(土) 01:11:560913デフォルトの名無しさん
NGNGfor(i=0;i<IMAX;i++)for(j=0;j<JMAX;j++)if(a[i][j]==key)break;
0914デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double f(double x, int* n){++*n; return cos(x)*pow(x,2);}
int main(void){double a,b,c,y;char tmp[100];int t,n=0;double e=0.0001;
printf("初期値a:");fgets(tmp,100,stdin);a=atof(tmp);
printf("初期値b:");fgets(tmp,100,stdin);b=atof(tmp);
for(t=0;(double)(abs(b-a)/pow(2,t))>=e;t++);
do{c=(a+b)/2;y=f(c,&n);if((f(a,&n)*y)<0)b=c;else a=c;}while(!(abs(b-a)<e)&&!(y<e)&&(--t>0));
if(t)printf("解:%.6f(%i attempts)\n",c,n);else printf("収束しません\n");return 0;}
0915デフォルトの名無しさん
2006/06/03(土) 02:00:47template <typename T>class MyStack{
public:
MyStack(int s = 0){m_size = s;m_stack = new T[m_size];m_top = 0;}
T top(){if(!empty())return *(m_stack + sizeof(T) * (m_top -1));}
bool empty(){if(m_top == 0)return true;return false;}
bool pop(){if(m_top == 0)return false;else{m_top--;return true;}}
bool push(T elem){if(m_top == m_size - 1 ){m_size = m_size * 2;T* temp;temp = new T[m_size];
for(int i = 0; i < m_top; i++){*(temp + sizeof(T) * i) = *(m_stack + sizeof(T) * i);}m_stack = temp;delete [] temp;}
*(m_stack + sizeof(T) * m_top) = elem;m_top++;return true;}
int size(){return m_top;}
private:
intm_size, m_top;T*m_stack;
};
0916デフォルトの名無しさん
NGNGよく見たら方程式が違ってるけど適当に直しといて。
0917デフォルトの名無しさん
2006/06/03(土) 02:29:13それだとうまくいかないっぽいです。。。
(配列の最大値が表示されてしまう)
>>911の具体的なプログラムはこんな感じです。
#include <stdio.h>
int main(){
int i,j,key;
int a[4][4];
scanf("%d", &key); /*探したい要素を入力*/
for(i=0; i<4; i++){
for(j=0;j<4;j++){
a[i][j]=i+1+4*j;
}
}
/*ここに検索するためプログラムを記述したい*/
printf("%d %d",i,j);
}
0918917
2006/06/03(土) 02:31:060919デフォルトの名無しさん
2006/06/03(土) 02:36:01for(i=0;i<IMAX;i++)for(j=0;j<JMAX;j++)if(a[i][j]==key)goto found;
found:
0920デフォルトの名無しさん
NGNGああそうか。break1個じゃ二重ループ抜けねえんだっけ。
そしたら番人を立ててこんな感じで。
int u,v;u=v=-1;
for(i=0;i<4&&u<0&&v<0;i++)for(j=0;j<4&&u<0&&v<0;j++)if(a[i][j]==key){u=i;v=j;}
printf("%d %d",u,v);
0921デフォルトの名無しさん
2006/06/03(土) 02:43:03nullpo:
0923デフォルトの名無しさん
2006/06/03(土) 10:36:01[1] 授業単元: C language
[2] 問題文(含コード&リンク):
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1971.txt
課題の内容
連結リストにデータの格納をして効率の良いハッシュを実現するプログラムを作成し (chain.c)、
あらかじめ作成しておいたmain.cとhash.cを利用して分割コンパイルする。
具体的な用件
連結リストを利用して、効率良く、かつメモリに無駄のないハッシュを実現する。
�@ cancel関数部分を完成させる。データの削除は、削除したいノード(key)を指していたリンク(previous->next)
を次のノード(key->next)につなぎ変えてから、不要になったノードのアドレスを開放(free(key);)する。
�A hash.cとmain.cを利用して、分割コンパイルの醍醐味を実感する。
つまり、chain.cはopenaddr.cと同様の関数名、引数、返り値を用いて、main.cでの整合性を保つようにすること。
[3] 環境
[3.1] OS: Windows (cygwin)
[3.2] gcc
[3.3] 言語: C
[4] 期限: ([2006年6月6日12:00amまで]
[5] その他の制限: 特になし
長いプログラムですが、
hash.c main.c openaddr.c はもう完成しています。
chain.cの最後の部分、int cancelだけだと思うのですが、void enterまでは
できました。少し前に分割コンパイルの質問をした者ですが、これは前回の課題の続きです。
詳細は長いのでろだにアップしました、
よろしくお願いいたします。
0924デフォルトの名無しさん
2006/06/03(土) 11:29:48[239] id: Maxwell, info: 1831
[247] id: Einstein, info: 1879
[249] id: Heisenberg, info: 1901
[249] id: Copernicus, info: 1473
[253] id: Newton, info: 1643
1.Enter 2.Search 3.Cancel 4.End Program
2
Enter Name : Heisenberg
Heisenberg => 1901
Heisenberg => 1
1.Enter 2.Search 3.Cancel 4.End Program
2
Enter Name : Copernicus
Copernicus => 1473
Copernicus => 1
衝突してね?
0925デフォルトの名無しさん
2006/06/03(土) 12:42:10[2] 問題文(含コード&リンク):正の整数を読み込むと、その整数を構成する数の中で
最大の数を表示するプログラムを作成せよ。
例:2006と入力すると、その中で最大の数である6を表示する。
[3] 環境
[3.1] OS: Windows
[3.2] Borland C++ Cpad
[3.3] 言語: C
[4] 期限: 2006年06月05日まで
[5] その他の制限: ttp://www.bohyoh.com/Books/MeikaiC01/index.html
上記のリンク先の参考書を使っていて、「目次」の第4章4-4までを授業でやりました。
よろしくお願いします。
0926デフォルトの名無しさん
2006/06/03(土) 12:54:000927デフォルトの名無しさん
2006/06/03(土) 12:58:07一応習ってる範囲で。
#include <stdio.h>
int main(void){
int num,x;
scanf("%d",&num);
for(x = 0; num != 0; num /= 10) if(x < num%10) x = num % 10;
printf("%d\n",x);
return 0;
}
0928925
2006/06/03(土) 13:32:59このスレにいる人なら大体目次の内容から判断できるかと思いまして…
リンク先におおまかに載っているので。ごめんなさい。
>>927
ありがとうございます!できました!
0929728
2006/06/03(土) 14:31:43[2] 問題文(含コード&リンク):
実数xを引数として受け取り、y=x*x*x-3*x*x-6*x+8を計算し、yの値が正の場合は1を、
負の場合は-1を、0の場合は0を返す関数(戻り値は整数型)を作成し、その関数が正常に動作するか
どうかを、実際に実行して確認せよ。ただし、main関数では、xの値をキーボードから入力し、関数を
呼び出した後は、戻り値の値を出力せよ。
#include <stdio.h>
#include <math.h>
int signfunc(double x) {
return sgn(x*x*x-3x*x-6*x+8);
}
int main(void) {
double x;
scanf("%lf",&x);
printf("%d\n", signfunc(x));
return 0;
}
C:\ユーザー\プロ言�T\演習19\演習19...cpp(4) : error C2065: 'sgn' : 定義されていない識別子です。
C:\ユーザー\プロ言�T\演習19\演習19...cpp(4) : error C2059: 構文エラー : 'サフィックスが無効です。'
C:\ユーザー\プロ言�T\演習19\演習19...cpp(4) : error C2146: 構文エラー : ')' が、識別子 'x' の前に必要です。
C:\ユーザー\プロ言�T\演習19\演習19...cpp(4) : error C2059: 構文エラー : ')'
cl.exe の実行エラー
演習19.exe - エラー 4、警告 0
0930728
2006/06/03(土) 14:32:48[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VisualStudio6.0
[3.3] 言語: C/C++/どちらでも可
[4] 期限:月曜
[5] その他の制限: >>728 でやってもらったんですが、先生にエラーが出るのが
ばれて再提出となりましたorz
どなたかご教授おねがいします。
0931デフォルトの名無しさん
2006/06/03(土) 14:40:48Cにあったっけ?
0932デフォルトの名無しさん
2006/06/03(土) 15:00:31だからといってマルチはいくない
0933デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int func(double x){double res=pow(x,3)-3*pow(x,2)-6*x+8;return res>0?1:res==0?0:-1;}
int main(void){double x;char tmp[100];
fgets(tmp,sizeof(tmp),stdin);x=atof(tmp);
printf("%d\n",func(x));return 0;}
0934デフォルトの名無しさん& ◆W/BeaVM6gs
2006/06/03(土) 15:53:42(x * x * x) - (3 * x * x) - (6 * x) + 8
のタイプミスだな。演算子の前後にきちんとスペースを入れることを
お勧めする。
0935デフォルトの名無しさん
2006/06/03(土) 16:13:38[2] 問題文(含コード&リンク):
正の整数値nを受け取り、nの階乗(n * (n-1) * (n-2)*… 2 * 1)を
計算して返す関数を作成し、その関数が正常に動作するかどうかを、実際に
実行して確認せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VisualStudio6.0
[3.3] 言語: C/C++/どちらでも可
[4] 期限:月曜
[5] その他の制限:
できるだけ<stdio.h>のみでできるものをおねがいします。
for文を使うようです。
nはキーボード入力です。
0936デフォルトの名無しさん
2006/06/03(土) 16:25:24int f(int n){
if(n == 0) return 1;
return (f(n - 1) * n);
}
int main(){
int n;
printf("n = ");
scanf("%d", &n);
printf("%dの階乗は%d\n", n, f(n));
return 0;
}
あえて、再帰で
0937デフォルトの名無しさん
2006/06/03(土) 18:34:28ありがとうございます!!
0939デフォルトの名無しさん
2006/06/03(土) 19:01:44[2] 問題文(含コード&リンク):
整数型配列のデータと、配列の大きさ(要素の数)を受け取り、配列のデータを
大きい順に並び替える関数を作成せよ。ただし、main関数では、適当なデータを
初期値代入し、関数を呼び出した後は、配列のデータを出力せよ。
[3] 環境
[3.1] OS: WindowsXP
[3.2] コンパイラ名とバージョン:VisualStudio6.0
[3.3] 言語: C/C++/どちらでも可
[4] 期限:月曜
[5] その他の制限:
<stdio.h>のみでできるものをおねがいします。
インクリメント演算子(i++など)と2重ループのfor文を使ってください。
配列の数は10個です。
0940デフォルトの名無しさん
2006/06/03(土) 19:44:15[2] 問題文(含コード&リンク):
#include<iostream>
using namespace std;
class Person{
int no;
char name[20];
public:
void Print();
};
void Person::Print(){
cout<<"学籍番号:"<<no<<endl;
cout<<"氏 名:"<<name<<endl;
}
int main(void){
Person man;
man.Print();
return 0;
}
上記のプロフラムを以下のように変更せよ。
1:ディフォルトコンストラクタを記述する。
2:各メンバ変数の初期値を1つずつ引数として与えるコンストラクタを記述する。
3:メンバ変数両方の初期値を引数として与えるオブジェクト生成の記述を追加して実行する。
・学籍番号の初期値を引数で与える場合:99999を与える。
・名前の初期値を引数で与える場合:初期値1を与える。
・学籍番号と名前の初期値を引数で与える場合:学籍番号に10000、名前に初期値2
・引数で与えない場合:学籍番号は0、名前はブランクとする。
[3] 環境
[3.1] OS:WindowsXP
[3.2] コンパイラ名とバージョン:VC
[3.3] 言語:C++
[4] 期限:2006年3月6日まで
0941デフォルトの名無しさん
2006/06/03(土) 19:53:37過ぎてる、過ぎてる
0942デフォルトの名無しさん
2006/06/03(土) 20:01:05[2] 問題文(含コード&リンク): http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1972.txt
[3] 環境
[3.1] OS:Windows
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
[4] 期限: 2006年6月4日
よろしくお願いします。
0943デフォルトの名無しさん
2006/06/03(土) 20:03:22#include <stdio.h>
#define N 10
void arraysort(int *a, int n){
for(int i = 0;i < n - 1; i++)for(int j = i; j < n; j++)
if(a[i] > a[j]){
int tmp = a[j];
a[j] = a[i], a[i] = tmp;
}
}
int main(){
int a[10], i;
for(i = 0; i < N; i++)printf("a[%d] = ", i),scanf("%d", &a[i]);
arraysort(a, N);
for(i = 0; i < N; i++)printf("a[%d] = %d\n", i, a[i]);
return 0;
}
0944デフォルトの名無しさん
2006/06/03(土) 20:28:05#include<stddef.h>
#include<string.h>
#include<stdio.h>
static unsigned hash(char key[]){int x = 0;while(*key)x = x * 37 + *key++;return x;}
static struct assoc*find_assoc(char key[],int newly){
unsigned x = hash(key) % MAX_KEYS,y=x;
while(assocList[x].key[0]){
if(strcmp(assocList[x].key,key)==0)return assocList+x;
if(++x == MAX_KEYS)x = 0;
if(x == y)return NULL;
}
if(!newly)return NULL;
strcpy(assocList[x].key,key);
return assocList+x;
}
double getValue(char key[]){
struct assoc*t = find_assoc(key,0);
if(t)return t->value;
puts("こんなキーねーよ");
return 0.0;
}
void setValue(char key[], double value){
struct assoc*t = find_assoc(key,1);
if(t){t->value=value;return;}
puts("ハッシュこれ以上追加できなす");
}
0945デフォルトの名無しさん
NGNGそのインデント、どうやるの?
0946デフォルトの名無しさん
2006/06/03(土) 20:44:49自分はギコナビの特殊文字変換を使って書いた。
0947デフォルトの名無しさん
2006/06/03(土) 20:49:070948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
2006/06/03(土) 20:53:04ありがとうございます。
0950デフォルトの名無しさん
2006/06/03(土) 20:55:09>>948
ブラウザが勝手に&を&に変換してるんじゃない?
0951デフォルトの名無しさん
NGNG何様のつもりですかこのクズは。
0952デフォルトの名無しさん
2006/06/03(土) 21:32:45ほっといたけど938は私ではありません
誰か知らないけど止めてください
0953デフォルトの名無しさん
2006/06/03(土) 22:50:01それよりも、何も言わないでいる方が…
0954デフォルトの名無しさん
NGNGおまえまちがってもお礼するときに「ご苦労様」なんて、言うなよ。
0955デフォルトの名無しさん
NGNG0956デフォルトの名無しさん
2006/06/03(土) 22:52:340957デフォルトの名無しさん
2006/06/03(土) 22:57:09ttp://www.nhk.or.jp/a-room/kininaru/2004/04/0413.html
一般的に、目上の人には「お疲れ様でした」、目下の人には「ご苦労様でした」と使います。
この使い分けは、歌舞伎の世界から始まった・・・など、諸説あるようです。
0958デフォルトの名無しさん
NGNGお礼と労いの違いが理解できないなら小学校へ。
0960デフォルトの名無しさん
2006/06/04(日) 00:37:57http://pc8.2ch.net/test/read.cgi/tech/1149349035/
0961デフォルトの名無しさん
2006/06/04(日) 01:05:00ふざけすぎ
次スレ
ttp://pc8.2ch.net/test/read.cgi/tech/1149350525/
気に入らない人はスルーしてください。
0962デフォルトの名無しさん
2006/06/04(日) 01:22:160963デフォルトの名無しさん
NGNGC言語/C++言語の宿題を片付けます 65代目
http://pc8.2ch.net/test/read.cgi/tech/1147902222/
0964デフォルトの名無しさん
2006/06/04(日) 01:29:03そこは過去スレ一覧に引っかからないから却下された
0965デフォルトの名無しさん
2006/06/04(日) 01:42:33すみません、
これが修正版です
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1974.txt
配られた回答なのでこちらは間違っていないと思います
0966デフォルトの名無しさん
2006/06/04(日) 01:43:38>>924
もしよろしければ、
よろしくお願いいたします
0967デフォルトの名無しさん
2006/06/04(日) 02:20:03>>1
0968おながいします
2006/06/04(日) 10:55:48[2]正の実数値による入力データを使って(0を入力したらデータ入力終了)平均値を求め、
それぞれのデータと平均値の差の2乗和を計算・表示するプログラムを作れ。
[3]C [4]6/5 [5]制限はありません。
よろしくお願いいたします。
0969デフォルトの名無しさん
2006/06/04(日) 12:46:31cancel内のif文を
if(item > 1){
table[x] = key->next;
//各自で作成
free(key);
}else if(item == 1){
table[x] = NULL;
//各自で作成
free(key);
}
と書き換える
0970デフォルトの名無しさん
2006/06/04(日) 18:41:45#include <stdio.h>
#include <math.h>
void main() {
int i,x[1000];
double avg,d;
avg=0;
for(i=0;i<1000;i++) {
scanf("%d",&x[i]);
if(x[i]==0) break;
avg+=x[i];
}
if(i) {
avg/=i;
printf("average=%f\n",avg);
d=0;
for(i=0;i<1000 && x[i]!=0;i++) {
printf("[%d]=%d %f\n",i,x[i],pow((x[i]-avg),2));
d+=pow((x[i]-avg),2);
}
printf("%f\n",d);
}
else {
printf("no data\n");
}
}
こんなかんじか
0971デフォルトの名無しさん
2006/06/04(日) 20:05:20[2] 問題文(含コード&リンク):
半径1の円の面積を近似的に求めよ。
その際、dxとyの長方形を考え、それらを足し合わせて求めよ。
dxは0.1、0.03、0.0001と記入したファイルを作り、実行時に
dx=0.1の時面積・・・
dx=0.03の時面積・・・
と箇条書きになるようにせよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
[4] 期限:6/7
[5] その他の制限:
for文を使わずwhile、if文を用いてお願いします。
よろしくお願いいたします。
0972デフォルトの名無しさん
NGNG#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main(int argc,char* argv){char tmp[100];double dx,s,y,t=0.0,x=0.0;FILE* fp;
if(argc>1){if((fp=fopen(argv[1],"r"))){while(fgets(tmp,sizeof(tmp),fp)!=EOF){
dx=atof(tmp);y=sin(x);s=y*2*dx;x+=dx;printf("dx=%fの時面積%f\n",dx,s);t+=s;}fclose(fp);}
printf("円の面積:%f\n",t);return 0;}
0973デフォルトの名無しさん
2006/06/04(日) 20:45:57[2] 問題文(含コード&リンク):
グラフがオイラーグラフであるかどうかを判定するプログラムを作成し、
graph.txtにて表現されるグラフに対して実行せよ。
オイラーグラフに関する重要な定理として、以下の2つがあげられる
(1)Gがオイラーグラフ⇔全ての点の次数が偶数
(2)フラーリーのアルゴリズムを用いて、オイラー閉路を探索可能
・フラーリーのアルゴリズム
(i)任意の点v0から閉路の探索を始める。W0=v0とする。eは辺。
(ii)W0=v0e1v1e2...eiviまで選択されたとする。次の辺ei+1は次のように求める
(a)ei+1∈E-{e1,e2,...ei}かつei+1はviに接続。
(b)選択の余地がある限り、橋を避ける。
(iii)(ii)が実行できなくなるまで繰り返す。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc
[3.3] 言語: C
[4] 期限: できれば月曜日いっぱいまでに・・・
[5] その他の制限: なし
次数:点に接続している辺の数
橋:1本の辺を削除すると、グラフが2つになってしまう部分
graph.txt
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1982.txt
ちょっとめんどくさいかもしれませんが、ぜひともよろしくお願いいたします。
0974デフォルトの名無しさん
2006/06/04(日) 20:48:01[2] 問題文(含コード&リンク):
ファイルtest.txtの内容をリダイレクトで読み込み、
同じくリダイレクトでそのままresult.txtに出力するプログラムを作成しなさい。
但し名前が入力された時にEOFを検出した際読み取りを終えるようにすること。
text.txt内容
a 87 32 46 33 78
b 87 32 34 87 98
c 87 98 23 76 23
[3] 環境
[3.1] OS: Vine Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
[4] 期限:6/7
[5] その他の制限:
途中まで自作したのですが、整数表示が-1073876028などとおかしくなってしまいます。
以下のプログラムを添削願えればと思います。
0975974
2006/06/04(日) 20:49:16#include <stdio.h>
int main(void){
typedef struct{
char name[1000];
int a1;
int a2;
int a3;
int a4;
int a5;
}data;
int num = 0;
while(scanf("%s %d %d %d %d %d", data[num].name, &data[num].a1, &data[num].a2, &data[num].a3, &data[num].a4, &data[num].a5) != EOF)
num++;
{
int i;
for(i = 0; i < num ; i++)
printf("%s %d %d %d %d %d\n", data[i].name, &data[i].a1, &data[i].a2, &data[i].a3, &data[i].a4, &data[i].a5);
}
return 0;
}
0976デフォルトの名無しさん
2006/06/04(日) 21:01:060977974
2006/06/04(日) 21:06:51>>976
2時間悩みましたw
その一言でもう本当にすっきりです。
大変感謝致します。
0978971
2006/06/04(日) 21:32:09ありがとうございます!!
ホント助かります。
0979974
2006/06/04(日) 21:33:28[1] 授業単元:情報処理演習
[2] 問題文(含コード&リンク):
ファイルtest.txtの内容をリダイレクトで読み込み、
同じくリダイレクトでそのままresult.txtに出力するプログラムを作成しなさい。
但し名前が入力された時にEOFを検出した際読み取りを終えるようにすること。
text.txt内容
a 87 32 46 33 78
b 87 32 34 87 98
c 87 98 23 76 23
上の問題に加え名前ならname、1つめの数値ならa1という感じでキーボードからキーを読み込ませ、
データをそれに応じて並び替えなさい。
名前の場合はアルファベット順、その他数値のキーの場合はその列の数値が大きい順とする。
実行時のコマンド
$ ./pro01 a1 < test.txt > result.txt
[3] 環境
[3.1] OS: Vine Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語: C言語
[4] 期限:6/7
[5] その他の制限:
>>975のプログラム(printfの&を消した…)に基づいて頂ければと思います。
よろしくお願いします。
0981デフォルトの名無しさん
2006/06/04(日) 21:42:470982974
2006/06/04(日) 22:02:26$ ./pro01 a4 < test.txt > result.txt
$ cat result.txt
b 87 32 34 87 98
c 87 98 23 76 23
a 87 32 46 33 78
(a4 というキーの入力で4列目の数値が大きい順に並び替え)
こういう感じで実現出来ればと思います。
重ね重ね、よろしくお願い致します。
0983デフォルトの名無しさん
NGNGmixiでも、同じ質問見たな。
0984デフォルトの名無しさん
2006/06/04(日) 22:32:45次スレ
http://pc8.2ch.net/test/read.cgi/tech/1149349035/
0985デフォルトの名無しさん
2006/06/04(日) 23:43:22#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct{
char name[1000];
int a1;
int a2;
int a3;
int a4;
int a5;
} DATA;
char* pKey= NULL;
int Comp(const DATA* p1, const DATA* p2) {
if(strcmp(pKey, "name") == 0)return -strcmp(p1->name, p2->name);
if(strcmp(pKey, "a1") == 0)return -(p1->a1 - p2->a1);
if(strcmp(pKey, "a2") == 0)return -(p1->a2 - p2->a2);
if(strcmp(pKey, "a3") == 0)return -(p1->a3 - p2->a3);
if(strcmp(pKey, "a4") == 0)return -(p1->a4 - p2->a4);
if(strcmp(pKey, "a5") == 0)return -(p1->a5 - p2->a5);
return 0;
}/*
0986デフォルトの名無しさん
2006/06/04(日) 23:44:09DATA data[1000];
int num = 0;
while(scanf("%s %d %d %d %d %d", data[num].name, &data[num].a1, &data[num].a2, &data[num].a3, &data[num].a4, &data[num].a5) != EOF)
num++;
if(argc == 2){
pKey= argv[1];
qsort(data, num, sizeof(DATA), Comp);
}
{
int i;
for(i = 0; i < num ; i++)
printf("%s %d %d %d %d %d\n", data[i].name, data[i].a1, data[i].a2, data[i].a3, data[i].a4, data[i].a5);
}
return 0;
}
0987974
2006/06/04(日) 23:57:06まさか同じ学部だったりして…
別人とはいえ、重複してしまいお手数掛けましたw
>>985-986
凄い…大変感謝いたします。
どうもありがとうございました。
0988973
2006/06/05(月) 00:25:040989デフォルトの名無しさん
NGNG0990デフォルトの名無しさん
NGNG> グラフがオイラーグラフであるかどうかを
まで読んだ。
0991デフォルトの名無しさん
2006/06/05(月) 01:11:09どうもありがとうございます。
ちょっとお聞きしたいのですが、
各自で作成ってところにまだ付け足さなきゃいけないものありますか?
0992デフォルトの名無しさん
2006/06/05(月) 01:16:54graph.txtの書式を
1行目:点数
2行目以降:辺(接続する点(0〜点数−1) 接続する点(0〜点数−1))
という解釈で、
#include <stdio.h>
#include <stdlib.h>
int main() {
intcPoints= 0;
int*pPoints= NULL;
intiPoint= 0;
scanf("%d", &cPoints);
pPoints= malloc(sizeof(int)*cPoints);
for(iPoint = 0 ; iPoint < cPoints ; iPoint++)pPoints[iPoint]= 0;
while(scanf("%d", &iPoint) != EOF)if(0 <= iPoint && iPoint < cPoints)pPoints[iPoint]++;
for(iPoint = 0 ; iPoint < cPoints ; iPoint++)if(pPoints[iPoint]%2!=0)break;
if(iPoint == cPoints)printf("グラフがオイラーグラフ\n");
elseprintf("グラフが非オイラーグラフ\n");
return 0;
}
0993デフォルトの名無しさん
2006/06/05(月) 01:23:31#include <stdio.h>
#include <stdlib.h>
int main() {
int cPoints = 0;
int* pPoints = NULL;
int iPoint = 0;
scanf("%d", &cPoints);
pPoints = malloc(sizeof(int)*cPoints);
for(iPoint = 0 ; iPoint < cPoints ; iPoint++) pPoints[iPoint] = 0;
while(scanf("%d", &iPoint) != EOF) if(0 <= iPoint && iPoint < cPoints) pPoints[iPoint]++;
for(iPoint = 0 ; iPoint < cPoints ; iPoint++) if(pPoints[iPoint]%2!=0) break;
if(iPoint == cPoints) printf("グラフがオイラーグラフ\n");
else printf("グラフが非オイラーグラフ\n");
return 0;
}
0994デフォルトの名無しさん
2006/06/05(月) 15:35:060995デフォルトの名無しさん
2006/06/05(月) 15:35:390996973
2006/06/05(月) 15:35:58ありがとうございます。
コンパイルして実行したのですが、何を入力すればよいのでしょうか?
ファイルの読み込みは手動でしょうか?
0997デフォルトの名無しさん
2006/06/05(月) 15:37:200998デフォルトの名無しさん
2006/06/05(月) 15:37:500999デフォルトの名無しさん
2006/06/05(月) 15:38:221000デフォルトの名無しさん
2006/06/05(月) 15:42:1210011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。