C/C++の宿題片付けま ..
159:デフォルトの名無しさん
09/03/10 11:34:33
>>144
嫌がらせのように見にくいコード
#include <stdio.h>
#include <string.h>
int main()
{
char buf[256];
int i;
for(i = 1; 1; i++, sprintf(buf, "%d", i))
printf("%s%s%d ", ((i % 3 == 0 || strchr(buf, '3') != NULL) ? "ア" : ""), ((i % 5 == 0) ? "犬" : ""), i);
return 0;
}
160:デフォルトの名無しさん
09/03/10 11:58:21
別にこれでええやん
#include "stdafx.h"
#include <iostream>
#include "windows.h"
using namespace std;
int main(void){
int i;
for(i=1;i<=10000;i++){
if(i%3==0 && i%5!=0){
cout << "ア";
}else if(i%5==0 && i%3!=0){
cout << "犬";
}else if(i%3==0 && i%5==0){
cout << "ア犬";
}
cout << i << endl;
Sleep(500);
}
return 0;
}
161:デフォルトの名無しさん
09/03/10 12:11:27
>3が付く数字
162:デフォルトの名無しさん
09/03/10 12:12:41
>>160
*30から*39も全部アホにならないといけないそうだ
300から399も
163:デフォルトの名無しさん
09/03/10 12:15:49
1からnまでの間に3の倍数と3のつく数字がいくつあるか求める関数
int nabeatu(int n)
を作れ
というのを以前見たような気がする
164:デフォルトの名無しさん
09/03/10 13:32:53
>>150に勝てる気がしなくてやめた
165:デフォルトの名無しさん
09/03/10 13:50:54
倍数を求めるのは難しくないが、3の付く数字は
一度文字列に置き換えて、3が含まれるかチェキするとか。
166:デフォルトの名無しさん
09/03/10 13:51:44
って、文字列に置き換える必要はなかったか。10で割った余りが3かどうかで
順に10で割っていけば良いか、すまそ。
167:99
09/03/10 16:11:22
>>153
ありがとうございます。
今夜にでもゆっくりソースを読ませてもらいます。
今後の書き方の参考にもさせてもらいます。
168:デフォルトの名無しさん
09/03/10 18:33:38
>>161-162
あぁ読み間違えてた
俺もプログラミング習いたてだけど
一応できたわ
URLリンク(kansai2channeler.hp.infoseek.co.jp)
つうか、>>150みたいな短い書き方あるんだな
俺もそういう書き方してえわ
169:デフォルトの名無しさん
09/03/10 22:12:07
生年月日を2000/01/01もしくは2000/1/1の形式で入力し、
誕生日から現在まで何日経過したか、現在の年齢の2項目を表示するプログラムをお願いします。
170:デフォルトの名無しさん
09/03/11 01:35:21
>>169 かなり制約つき
URLリンク(kansai2channeler.hp.infoseek.co.jp)
コンパイラ:VC++ 2005
日数;満日数
年齢:数え年齢(めんどうなので。満年齢は勝手にどうぞ)
誕生日:1970年以降
現在日付:2038年迄
171:デフォルトの名無しさん
09/03/11 01:52:00
>>169
URLリンク(kansai2channeler.hp.infoseek.co.jp)
投稿してみよう…
172:デフォルトの名無しさん
09/03/11 01:54:59
おまえら優しいな…
173:デフォルトの名無しさん
09/03/11 09:04:04
>>169
2行目が曖昧かな?誕生日からというのは、前の誕生日からなのか、
生まれたその日からのどちらか?
174:デフォルトの名無しさん
09/03/11 09:25:19
>>173
お誕生日会と誕生日の違いだな。
175:デフォルトの名無しさん
09/03/11 09:29:37
>>174
お誕生日”会” ???
176:170
09/03/11 09:50:29
そもそも、生まれた当日は0日目なのか、1日目なのか。
それの方が悩んだ。
177:デフォルトの名無しさん
09/03/11 10:01:16
年齢計算に関する法律について調べるべし。
178:170
09/03/11 10:26:20
オッケー、日本語で。0日目で正しいようだ。
「年齢計算に関する法律」で検索した。
179:デフォルトの名無しさん
09/03/11 17:28:08
法律を知らないとプログラムって書けないんだね><
180:デフォルトの名無しさん
09/03/11 17:44:12
>>179
法律を知らないと書けないと言うか
作ろうとしてるプログラムの内容を知ってないと
作れない
181:99
09/03/11 19:19:39
要求定義ってやつじゃないか?
182:デフォルトの名無しさん
09/03/11 19:34:42
>>178
年齢ハ出生ノ日ヨリ之ヲ起算ス
初日不算入の例外が年齢だよ
出生日が1日目
183:デフォルトの名無しさん
09/03/11 20:19:05
指定した年に、13日の金曜日があるか調べ、あるならそれが何月か表示せよ
184:デフォルトの名無しさん
09/03/11 20:54:30
指定した年に、13日の金曜日があるか調べ、あるならその日を災いにせよ
>>182 例外に含まれるのを見落としてました。
なるほどしかし、法律的には4月1日に生まれた子女は翌年の3月31日
午後12時に1歳に成るとなっている。4月1日午前0時でなく。
満年齢はそれでいいとして、課題は"経過した"日数も…(2項目)だから生まれた日の
翌日が第1日目でいいじゃないかと思う。生まれた当日は何かとバタバタしてるし。
正確に言えば翌日も出生時刻までが0日目で、第2日目てことは無いと思う。
185:デフォルトの名無しさん
09/03/11 21:06:52
>>183
URLリンク(kansai2channeler.hp.infoseek.co.jp)
186:185
09/03/11 21:12:19
間違えてた
URLリンク(kansai2channeler.hp.infoseek.co.jp)
187:デフォルトの名無しさん
09/03/11 22:39:41
>>186
今年って3回もあるんだ
ジェイソンも大変だなw
188:デフォルトの名無しさん
09/03/12 02:21:34
URLリンク(kansai2channeler.hp.infoseek.co.jp)
言語・コンパイラ:C・VC++ 2005
日数;満日数
年齢:数え年齢(めんどうなので。満年齢は勝手にどうぞ)
誕生日:1901年以降 <--- new
現在日付:2038年迄 <--- なんとか?
189:デフォルトの名無しさん
09/03/12 02:46:53
>>188
struct tmからtime_tをつくるmk_time()つー関数がなんか便利だたよ
190:デフォルトの名無しさん
09/03/12 02:59:04
× mk_time
○ mktime
tm構造体つくる→年月日時分秒メンバを書き換える→mktime()
→localtime_s()でstruct tmに変換
→曜日・日数が自動補完されてうまー
191:デフォルトの名無しさん
09/03/12 11:27:49
皆C言語で書いてるってことなのか?
よくわからないんだけどCとC++が微妙に構文違うのはなぜなの?
192:デフォルトの名無しさん
09/03/12 11:44:11
>>191
struct tm 変数名; // C structが必要
tm 変数名; // C++ structをつけなくていい
C++は、変数の宣言が処理の途中で出来る。等々
193:デフォルトの名無しさん
09/03/12 15:13:21
URLリンク(www3.uploader.jp)
[1] 授業単元: エムピーアイ
[2] 問題文(含コード&リンク):ガウス消去法を並列化せよ。
[3] 環境
[3.1] OS: Linux
[3.2] コンパイラ名とバージョン: gcc 3.4
[3.3] 言語: C
[4] 期限: 2009/03/13中
[5] その他の制限:
エムピーアイの問題ですが、後退代入以外完成してます。上三角型の行列を作るところまでは
出来たのであとは単純に答えを計算するだけなのですが、アルゴリズムがわかりません。
なので115行目の”後退代入”のところを埋めて下さいまし。
エムピーアイというか単にC言語のループの書き方のレベルなのでエムピーアイを知らなくても
アルゴリズムがわかれば書けると思います。なおプロセス数はmpirun -np 4 ./a.out
で実行して下さい(添付のインプットファイルが4行4列なので)
194:デフォルトの名無しさん
09/03/12 19:50:50
プログラム教えてください
配列の中の数値をランダムに入れ替えたいんです
たとえば
int A[]={ 1,2,3,4,5,6,7,8,9,10}
↓ランダム
4,9,5,1,8,6,2,10,3,7
教えてください
195:デフォルトの名無しさん
09/03/12 20:08:15
>>194
for ( i = 0; i < 100; i++)
{
乱数で0-9の数字を2個( p , q )作成
tmp = A[ p ];
A[ p ] = A[ q ];
A[ q ] = tmp;
}
196:デフォルトの名無しさん
09/03/12 20:34:59
#include <stdio.h>
#include <time.h>
int main(void)
{
int ar[]={11,12,13,14,15,16,17,18,19,20};
int size=sizeof(ar)/sizeof(ar[0]);
int i, num, temp;
srand( (unsigned)time( NULL ) );
for(i=size-1; i>=0; i--){
num = rand() % (i + 1);
temp = ar[i];
ar[i] = ar[num];
ar[num] = temp;
printf("%d ", ar[i]);
}
return 0;
}
197:デフォルトの名無しさん
09/03/12 21:00:29
>>196
偏りそうにも見えるが、上手くいくのかな?
誰か優しく証明して。
198:デフォルトの名無しさん
09/03/12 21:15:23
なんでこう、乱数絡みの問題が定期的に湧くんだw
199:デフォルトの名無しさん
09/03/12 21:21:01
偏りっていうのはrandをつかうからってことなの?
どれぐらい偏るもんなの?
200:デフォルトの名無しさん
09/03/12 21:24:01
いやいや、randのせいじゃなく、
単純に処理としての話。
for(i=0; i < size; i++)だと分かるんだけど、
逆でも良いのかなってこと。
201:デフォルトの名無しさん
09/03/12 21:50:49
>>200
> for(i=0; i < size; i++)だと分かるんだけど、
> 逆でも良いのかなってこと。
逆のほうが簡潔に書けるって話だな
デバッガで追っかけるとわかる
for(i=0; i < size; i++)で書いてみ
最終的に行き着くのが196になる
202:デフォルトの名無しさん
09/03/12 21:59:46
なんで196に行くのかが全然わからないや。
203:デフォルトの名無しさん
09/03/12 22:32:48
>>196
出来ました!
ありがとうございます
すごいですね
でも、randを使っているから同じ数字が入りそうなんですけど
なんで同じ数字が入らないんだろう?
204:デフォルトの名無しさん
09/03/12 22:38:04
ああ、iだからrand減って行くんですね
分かりました
i=size-1と(i + 1)がまだ分かりませんが
なんとか分かるように頑張ります
ありがとうございます
205:デフォルトの名無しさん
09/03/12 22:40:21
私の知能じゃ10年かかっても思いつきませんでした
ありがとうございますm(_;)m
206:デフォルトの名無しさん
09/03/12 23:35:10
まず、全体の中から1個選んで一番後ろに入れる。
次に、残ったものから1個選んで後ろから二番目に入れる。
これを残り0個になるまで繰り返す。
簡単だろ?
207:デフォルトの名無しさん
09/03/13 00:30:49
規則性はあるけど、乱数発生器をiで割っているのがいいよね
208:デフォルトの名無しさん
09/03/13 00:31:24
要するに松田優作ってことだ
209:デフォルトの名無しさん
09/03/13 01:06:18
>>201
>>156
210:デフォルトの名無しさん
09/03/13 07:17:51
>>206
なるほど
211:デフォルトの名無しさん
09/03/14 17:04:38
学校の課題を手伝ってください。
[1] 授業単元: データ構造アルゴリズム
[2] 問題文(含コード&リンク):
キューを利用して、プリンタのプリントキューを再現したプログラム(以下に要点を記載)を作成しなさい。
"1”を入力するとキューにデータが追加され"2"を入力するとキューからデータが取り出される
キューが満杯になったり、空になったりした際はその旨をメッセージで表示する。
また、以下の関数を作成し、使用しなさい。
vaio enqueue(int val)キューにデータを追加する
vaio dequeue() キューからデータを取り出す
vaio queue_print()キュー全内容を表示する
以上ですお願いします。
[3] 環境
[3.1] OS: Linux ソラリス
[3.2] コンパイラ名とバージョン: 不明
[3.3] 言語: C
[4] 期限: ([2009年3月15日])
[5] その他の制限: なし
212:デフォルトの名無しさん
09/03/14 17:10:44
プリントキューの仕様が不明だな。
213:デフォルトの名無しさん
09/03/14 17:12:10
vaioも不明
214:デフォルトの名無しさん
09/03/14 17:17:14
頭が弱いと生きるの大変そうだね
215:デフォルトの名無しさん
09/03/14 17:17:56
ちょww vaio?wwww
216:デフォルトの名無しさん
09/03/14 17:19:25
失礼しましたvaioじゃなくvoidでした。
キューを利用して、プリンタのプリントキューを再現したプログラム(以下に要点を記載)を作成しなさい。
"1”を入力するとキューにデータが追加され"2"を入力するとキューからデータが取り出される
キューが満杯になったり、空になったりした際はその旨をメッセージで表示する。
また、以下の関数を作成し、使用しなさい。
void enqueue(int val)キューにデータを追加する
void dequeue() キューからデータを取り出す
void queue_print()キュー全内容を表示する
217:デフォルトの名無しさん
09/03/14 17:41:08
学校の課題でどうしてもできないC言語があるのですかどなたか手伝ってください。
スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。
お願いします。
218:デフォルトの名無しさん
09/03/14 17:42:22
>>217
>>1
219:デフォルトの名無しさん
09/03/14 18:05:23
[1] 授業単元: データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整数配列を用意します。要素を入力し、クイックソートを用いて昇順にソートするプログラムを作成しなさい。
[3] 環境
[3.1] OS: (Linux/)
[3.2] コンパイラ名とバージョン: (わかりません)
[3.3] 言語: (C)
[4] 期限: [無期限]
[5] その他の制限: なし
220:デフォルトの名無しさん
09/03/14 18:56:32
[1] 授業単元: データ構造アルゴリズム
[2] 問題文 スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。
[3] 環境
[3.1] OS: (Linux)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: [3/16]
[5] その他の制限: なし
221:デフォルトの名無しさん
09/03/14 19:03:19
>>211
勝手に色々想像した。
URLリンク(kansai2channeler.hp.infoseek.co.jp)
222:デフォルトの名無しさん
09/03/14 19:08:53
>>220 osはunixでした。
223:デフォルトの名無しさん
09/03/14 19:11:10
>>219 私もosはunixでした。
224:デフォルトの名無しさん
09/03/14 20:01:14
>>221
dequeue()の戻り値もvaioだぞw
225:デフォルトの名無しさん
09/03/14 20:14:08
>>219
#include<stdio.h>
#include<stdlib.h>
#define N 10
int f(const void*a,const void*b){
 return *(const int*)a-*(const int*)b;
}
int main(){
 int a[N],i;
 for(i=0;i<N;++i)scanf("%d",a+i);
 qsort(a,N,sizeof(int),f);
 for(i=0;i<N;++i)printf("%d ",a[i]);
}
226:デフォルトの名無しさん
09/03/14 20:19:18
>>225ありがとうございます。
227:デフォルトの名無しさん
09/03/14 20:28:39
osによってプログラムの違いってあるんですか?
228:デフォルトの名無しさん
09/03/14 20:56:28
for(i=0;i<N;++i)scanf("%d",a+i);
for(i=0;i<N;++i)printf("%d ",a[i]);
なんか気持ち悪いな
229:デフォルトの名無しさん
09/03/14 20:57:42
>>228
意図が読めないなんてピュアな方ですねw
230:デフォルトの名無しさん
09/03/14 21:09:19
>>220 終了はCtrl+Z
#include<stdio.h>
#include<stdlib.h>
int s[99],p;
void push(int n){s[p++]=n;}
int pop(void){return s[--p];}
int main(){
 char b[99];
 for(;scanf("%98s",b)==1;){
  switch(*b){
   case'+':push(pop()+pop());break;
   case'-':push(pop()-pop());break;
   case'*':push(pop()*pop());break;
   case'/':{int t=pop();push(pop()/t);}break;
   default:push(atoi(b));
  }
  printf("%d\n",s[p-1]);
 }
}
231:デフォルトの名無しさん
09/03/14 21:12:19
>>230dクス
232:230
09/03/14 21:13:38
やべバグあるわ。今直す
233:デフォルトの名無しさん
09/03/14 21:17:42
[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
URLリンク(kansai2channeler.hp.infoseek.co.jp)
データを表示する場合に,データの昇順と降順の両方向での表示が選択で
きるように,このプログラムに変更してください
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ名とバージョン:gcc 3.4
[3.3] 言語:C
[4] 期限: 2009/03/16
[5] その他の制限: ありません
よろしくお願いします
234:230
09/03/14 21:18:22
>>220 少し短くなったかな
#include<stdio.h>
#include<stdlib.h>
int s[99],p;
void push(int n){s[p++]=n;}
int pop(void){return s[--p];}
int main(){
 char b[99];
 for(;scanf("%98s",b)==1;printf("%d\n",s[p-1]))
  switch(*b){
   int t;
   case'+':t=pop();push(pop()+t);break;
   case'-':t=pop();push(pop()-t);break;
   case'*':t=pop();push(pop()*t);break;
   case'/':t=pop();push(pop()/t);break;
   default:push(atoi(b));
  }
}
235:デフォルトの名無しさん
09/03/14 21:24:11
>>234さんたびたびdクスです。
236:デフォルトの名無しさん
09/03/14 21:27:49
>>233
void PrintTreeRev(BinNode *p){
if (p != NULL) {
PrintTree(p->right);
PrintData(p->data);
PrintTree(p->left);
}
}
を追加してメニューから呼ぶようにしろ
237:236
09/03/14 21:28:40
おーう、中のPrintTreeもPrintTreeRevだ
逝ってくる
238:デフォルトの名無しさん
09/03/14 21:33:53
>>227
微妙に質問が質問として成立してないんじゃね?
OS自体がプログラムだから、プログラムとして違いがあるし、
OSの機能を使うプログラムの場合も、OSが違うからプログラムとして違いがある。
>>234
いい感じ
でも、"%98s"じゃなく、"%98[^\n]"じゃないとダメぽ
239:234
09/03/14 21:44:06
>>238
すまん。なぜダメなのか教えてくれないか。
何が入力されたときにまずい?
240:デフォルトの名無しさん
09/03/14 21:48:53
>>239
すんません。
勘違いしてました。
scanf一回で、式を全部持ってくるのかと思ってました。。。
241:234
09/03/14 21:51:32
>>240おk。
242:デフォルトの名無しさん
09/03/14 22:12:01
>>237
出来ました!ありがとうございます!
243:デフォルトの名無しさん
09/03/14 22:54:57
[1] 授業単元:アルゴリズムとデータ構造
[2] 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:ウィンドウズvista
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限: [2009年3月15日]
[5] その他の制限:なし
お願いします
244:デフォルトの名無しさん
09/03/15 00:23:05
>>243
URLリンク(kansai2channeler.hp.infoseek.co.jp)
245:デフォルトの名無しさん
09/03/15 00:37:13
あるある
246:デフォルトの名無しさん
09/03/15 01:19:15
osの違いでC言語に違いが出てくることってあるんですか?
247:デフォルトの名無しさん
09/03/15 01:19:53
>>244
ありがとうございます
248:デフォルトの名無しさん
09/03/15 01:49:26
[1] 授業単元: データ構造アルゴリズム
[2] 問題文 スタックを利用した逆ポーランド電卓を作成しなさい。ただし、演算は四則演算のみとし、数値と数値、数値と演算子の間は半角スペースで区切って入力することとする。
逆ポーランド電卓
逆ポーランド記法の数式を入力してリターンキーを押すと答えを表示してくれるもの。スタックを使用して以下のように計算する。
1.数値なら、そのままスタックにつむ
2.演算子なら、2つの数をスタックからおろして演算を行い、その結果を再びスタックにつむ。
※逆ポーランド記法とは演算子を後ろに置く記法。例えば1+2は12+に、(1+2)*3は12+3*になる。逆ポーランド記法は後置法ともよばれる。
[3] 環境
[3.1] OS: (unix)
[3.2] コンパイラ名とバージョン: (gcc)
[3.3] 言語: (C)
[4] 期限: [3/16]
[5] その他の制限: なし
よろしくお願いします。
249:デフォルトの名無しさん
09/03/15 02:08:17
>>248
>>220と>>234を見ろ。
なんというか、まあ、お前らのところ本当にどうしようもないのしかいないんだな
250:デフォルトの名無しさん
09/03/15 02:18:35
>>249 問題が同じでも細かいところが違うんですよ。
251:デフォルトの名無しさん
09/03/15 02:24:17
確かにOSが違うな
252:249
09/03/15 02:51:34
>>250
すまん、その細かいところってどこだ?
>>251
>>222見る限りOSも同じだが。
253:デフォルトの名無しさん
09/03/15 03:22:19
すみません、C初心者で、今課題をやってるのですが、入門書見ながらでもさっぱりです。
よろしくおねがいします。。
↓↓↓↓↓
以下のプログラムは、入力された10個の数値を引き算し、その結果を表示するプログラムです。
9〜11行目を別の関数(関数名はFuncDev)とし、修正しなさい。ただし、グローバル変数は使わないこと。
またFuncDev内のローカル変数名は任意とします
FuncDev関数は以下の定義とします
int FuncDec(void);
FuncDev関数の戻り値は、画面入力されたint型データとします。
1:#include<stdio.h>
2:void main(void);
3:void main(void)
4:{
5: int n1 n2;
6; int nt;
7: nt=0;
8: for(n1=0;n1<10;n1++){
9: printf("0-9の数値を入力:");
10: scanf(" %d",&n2);
11: nt-=n2;
12: }
13: printf("結果は%dです",nt);
14:}
254:>>253
09/03/15 03:34:52
#include <stdio.h>
int FuncDev(void);
int main(void)
{
int nt, n1;
nt = 10000;
for(n1 = 0; n1<10; n1++){
nt -= FuncDev();
}
printf("結果は%dです", nt);
}
int FuncDev(void)
{
int n2;
scanf(" %d", &n2);
return n2;
}
255:デフォルトの名無しさん
09/03/15 03:41:45
>>254
すばやいご回答ありがとうございました。
私は問題の意味を勘違いしていたみたいでした。
自分一人だったら白紙で出すところでした。
本当にありがとうございました
256:デフォルトの名無しさん
09/03/15 03:52:02
OSがunixって幅が広すぎるよな。
257:デフォルトの名無しさん
09/03/15 04:01:21
[1] 授業単元: データ構造アルゴリズム
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
[3] 環境
[3.1] OS:XP
[3.2] コンパイラ名とバージョン: BCC Borland C++ 5.5.1
[3.3] 言語: C
[4] 期限: ([2009年3月15日])
[5] その他の制限:なし
258:>>253
09/03/15 04:18:12
>>254さま
すみません、
今読んでいて疑問に思ったのですが、
6行目の
nt=10000;
とはどういう意味なのでしょう?
簡単に解説をしてくださると助かります
259:デフォルトの名無しさん
09/03/15 04:50:50
>>252 問題はいっしょだが条件が追加されてる。
260:デフォルトの名無しさん
09/03/15 05:09:36
>>259
どんな条件?
逆ポーランド電卓の説明が追加されているだけにしか見えんが?
261:デフォルトの名無しさん
09/03/15 09:48:42
>>260
ようわからんが実行結果がちがったんじゃねーの?たぶん同じやつが書き込んでるとおもわれる。
262:>>253
09/03/15 09:58:05
ntは引かれる数。10000は一万。
263:デフォルトの名無しさん
09/03/15 13:42:22
>>253
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include "windows.h"
using namespace std;
int FuncDec(){
int n2;
cout << "input 0-9" << endl;
cin >> n2;
return n2;
}
int main(void){
int n1;
int nt=0;
for(n1=0;n1<10;n1++){
nt-=FuncDec();
}
cout << "output " << nt;
Sleep(10000);
}
264:デフォルトの名無しさん
09/03/15 13:45:44
このスレ、己の描いた独自プログラムと簡単な問題文しか出さない人が多いけど
独自プログラムなんて出すよりも
詳しい問題文やどういったアルゴリズムにしようとしてるか描いてくるほうがありがたい
というのもプログラムなんざ千差万別だから、そんなもの提示されても
俺のプログラムと描き方の雰囲気が少しでも違ってたらいちいち面倒なことになる
265:デフォルトの名無しさん
09/03/15 14:12:06
>>264
宿題スレに何を求めているの?
266:デフォルトの名無しさん
09/03/15 15:55:22
この世に存在するソフトウェアのソースが公開されているものなんて
ほんのごく一部だぞ?他人の猿真似でどうにかなるもんでもなかろう
定石なんて、書店に行けばいくらでも見つかるぞ
267:デフォルトの名無しさん
09/03/15 15:55:41
osの違いでC言語に違いが出てくることってあるんですか?
268:デフォルトの名無しさん
09/03/15 15:56:24
>>267
環境依存に関わるライブラリではあり得る。
269:デフォルトの名無しさん
09/03/15 16:16:48
>>267
Cの規格上、差異を認めている部分(処理系定義)では起こりうる。
もちろんOSの値が以外の原因で起こることもあるけど。
型の大きさとか表現方法とか。
270:デフォルトの名無しさん
09/03/15 17:24:29
>>264
所詮、ここはC系で一番バカな質問を受け付ける/受け流すためのハコだからな。
問題文の読み方も分からないって手合いが多数だし、「ここまで書きました」は大概読まないほうがいい。
動かないコードを見て、何のツモリか当て推量するのは不毛だしな。
・・・動いているコードでさえ、何のツモリ(仕様)かなんて、推量はあてにならないしな。
271:デフォルトの名無しさん
09/03/15 17:57:16
>>248 parseあんま自信無いw
#include<stdio.h>
#include<ctype.h>
int s[99],p,a;
void push(int n){s[p++]=n;}
int pop(void){return s[--p];}
int main(){
 int c,t;
 for(;(c=getchar())!=EOF&&c!='\n';){
  if(isspace(c));
  else if(c=='+')t=pop(),push(pop()+t);
  else if(c=='-')t=pop(),push(pop()-t);
  else if(c=='*')t=pop(),push(pop()*t);
  else if(c=='/')t=pop(),push(pop()/t);
  else if(ungetc(c,stdin),scanf("%d",&t)==1)push(t);
  else return fprintf(stderr,"Parse error!");
 }
 printf("%d\n",pop());
}
272:271
09/03/15 18:00:01
悪い。修正版。
#include<stdio.h>
#include<ctype.h>
int s[99],p;
void push(int n){s[p++]=n;}
int pop(void){return s[--p];}
int main(){
 int c,t;
 for(;(c=getchar())!=EOF&&c!='\n';)
  if(isspace(c));
  else if(c=='+')t=pop(),push(pop()+t);
  else if(c=='-')t=pop(),push(pop()-t);
  else if(c=='*')t=pop(),push(pop()*t);
  else if(c=='/')t=pop(),push(pop()/t);
  else if(ungetc(c,stdin),scanf("%d",&t)==1)push(t);
  else return fprintf(stderr,"Parse error!");
 printf("%d\n",pop());
}
273:デフォルトの名無しさん
09/03/15 18:03:04
getchar()使うヤツって……
274:デフォルトの名無しさん
09/03/15 18:03:50
いちいち言うくせに、指摘や適切なものを提示しないヤツって・・・口先だけのインポ野郎だなw
275:デフォルトの名無しさん
09/03/15 18:07:58
>>272さんありがとうございます。
276:デフォルトの名無しさん
09/03/15 18:09:15
こんなスレで偉そうにしているヤツって……
277:デフォルトの名無しさん
09/03/15 18:09:51
>>273
普通につかうガナ
278:デフォルトの名無しさん
09/03/15 18:18:36
>>270
初心者のコード見てこき下ろしたり、黒歴史を思い返したりするのもまた一興じゃないか。
279:デフォルトの名無しさん
09/03/15 20:03:56
お願いします
[1] 授業単元: データ構造アルゴリズム
[2] 問題文:URLリンク(kansai2channeler.hp.infoseek.co.jp)
こののプログラムのクイックソートを行っている関数quickを,非再帰的なアルゴリズムに書き換えてください.
[3] 環境
[3.1] OS:Win
[3.2] コンパイラ名とバージョン: BCC
[3.3] 言語: C
[4] 期限: ([2009/3/15])
[5] その他の制限:なし
280:デフォルトの名無しさん
09/03/15 21:55:22
非再帰って自前でスタック使ったら、再帰アルゴリズムを
言語の再帰使わずに実装しているだけの様な。
281:デフォルトの名無しさん
09/03/15 22:37:11
クソ課題だなあ
282:自分が解けもしないくせに口だけは大きい馬鹿
09/03/15 22:40:26
281 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:37:11
クソ課題だなあ
283:デフォルトの名無しさん
09/03/15 22:55:57
分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ
284:デフォルトの名無しさん
09/03/15 23:02:32
こんな感じかな?
void quick(Data a[], int left, int right,
int Cmp(Data x, Data y, int order), int order){
int pl;
int pr;
Data x;
while(1)
{
pl =left;
pr =right;
x = a[(pl+pr)/2];
do {
while(Cmp(x, a[pl], order)) pl++;
while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){
swap(Data , a[pl], a[pr]);
pl++;
pr--;
}
} while(pl <= pr );
if (left < pr) {right = pr; continue;}
if (pl < right) {left = pl; continue;}
break;
}
}
285:自分が解けもしないくせに口だけは大きい馬鹿
09/03/15 23:14:59
283 名前:デフォルトの名無しさん 投稿日:2009/03/15(日) 22:55:57
分割統治法を非再帰でやらせるとか
クソ課題以外の何者でもないだろ
286:デフォルトの名無しさん
09/03/15 23:15:35
オレが解けないのは課題が悪いからだ!
287:デフォルトの名無しさん
09/03/15 23:18:06
>>281>>283
スレ違い。公開オナヌーは他所でどぞ。
288:デフォルトの名無しさん
09/03/15 23:26:07
口先だけのヤツは、いつも自分がそれに対してどう思うか?
という主観しか述べず、問題があるなら問題点を指摘するなり
客観性のある見解を示さず、自分が言ったことを反対されると
ファビョるだけの井の中の蛙なんだなぁ
289:デフォルトの名無しさん
09/03/16 00:15:42
>>284さんありがとうございますm(_;)m
290:デフォルトの名無しさん
09/03/16 00:51:08
>>289
間違っる。
最初のleftとrightを記憶し、
左側を絞り込み、記憶しておいたleftとrightで右側を絞り込むように
2回に分けないといけないみたい。
291:デフォルトの名無しさん
09/03/16 01:04:18
>>283
再帰を反復に変換するのは普通の課題だろ。
292:デフォルトの名無しさん
09/03/16 01:15:13
初心者です。
/*BMI.c*/
#include<stdio.h>
int main()
{
double a,b,c;
c=b/(a*a);
printf("あなたの身長(m)を入力してください。-----");
scanf("%f",&a);
printf("あなたの体重(kg)を入力してください。-----");
scanf("%f",&b);
printf("あなたのBMIは%fです。\n",c);
if(c >=25){
printf("あなたは肥満です。");
}
return 0;
}
これはあってますか?
293:デフォルトの名無しさん
09/03/16 01:19:08
>>292
間違ってます。
294:デフォルトの名無しさん
09/03/16 01:25:59
修正?
void quick(Data a[], int left, int right,
int Cmp(Data x, Data y, int order), int order){
int pl;int pr;Data x;int _right;
_right = right;
while(1)
{
pl = left;pr = right;x = a[(pl+pr)/2];
do {while(Cmp(x, a[pl], order)) pl++;while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){swap(Data , a[pl], a[pr]);pl++;pr--;}
} while(pl <= pr );
if (left < pr) {right = pr; continue;}
break;
}
left = 1;right = _right;
while(1)
{
pl = left;pr = right;x = a[(pl+pr)/2];
do {while(Cmp(x, a[pl], order)) pl++;while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){swap(Data , a[pl], a[pr]);pl++;pr--;}
} while(pl <= pr );
if (pl < right) {left = pl; continue;}
break;
}
}
295:デフォルトの名無しさん
09/03/16 02:16:47
それじゃ無理だろ
296:デフォルトの名無しさん
09/03/16 03:09:37
修正の修正?
void quick(Data a[], int left, int right,
int Cmp(Data x, Data y, int order), int order){
int pl;
int pr;
Data x;
int _right;
_right = right;
while(1)
{
pl = left;
pr = right;
x = a[(pl+pr)/2];
do {
while(Cmp(x, a[pl], order)) pl++;
while(Cmp(a[pr], x, order)) pr--;
if ( pl <= pr ){
swap(Data , a[pl], a[pr]);
pl++;
pr--;
}
} while(pl <= pr );
if (left < pr) {right = pr;continue;}
else
right = _right;
if (pl < right) {left = pl;continue;}
break;
}
}
297:デフォルトの名無しさん
09/03/16 04:16:12
>>294
>>295
>>296
重ね重ねありがとうございます
298:デフォルトの名無しさん
09/03/16 04:28:20
>>296
無駄が多い
299:デフォルトの名無しさん
09/03/16 04:55:23
>>298
模範解答をお願いします。
300:デフォルトの名無しさん
09/03/16 05:27:00
クイックソート 非再帰でググればいくらでも転がってるだろ
301:デフォルトの名無しさん
09/03/16 11:35:25
>>292
a,bに値が格納される前にcを計算しているので間違い。
302:デフォルトの名無しさん
09/03/16 12:03:26
>>298
指摘するくらいなら、自分がそれに応じたコードを示せよ?
ここんとこ、口先だけの役立たずw
303:デフォルトの名無しさん
09/03/16 16:54:19
>>301
ありがとうございます。
304:デフォルトの名無しさん
09/03/16 17:16:54
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整列配列を用意します。
要素を入力し、クイックソートを用いて昇順にソートするプログラムを作成しなさい。
[3] 環境
[3.1] OS: (UNIX)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: qsortを使わないでお願いします。
305:デフォルトの名無しさん
09/03/16 17:24:06
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):qsort関数を用いてソートするプログラムを作成しなさい。身長の昇順、視力の降順など、複数の条件でソートすること。
※qsort関数
書式 void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void))
[3] 環境
[3.1] OS: (UNIX)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限:
306:デフォルトの名無しさん
09/03/16 17:26:47
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):文字列から任意の文字を探索するプログラムを作成しなさい。
[3] 環境
[3.1] OS: (UNIX)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします。
307:デフォルトの名無しさん
09/03/16 17:34:56
>>304
>>219,>>225
308:デフォルトの名無しさん
09/03/16 17:41:24
>>307
その問題はqsortを使っているので…
309:デフォルトの名無しさん
09/03/16 18:01:55
>>306
#include <stdio.h>
#define BUFSIZE 108
char *mstrchr(const char *src, char ch)
{
for(;*src;++src) if(*src==ch) return (char*)src;
return 0;
}
int main()
{
char buf[BUFSIZE], ch, *p;
int c = '0';
printf("文字列:", buf);
fgets(buf, BUFSIZE, stdin);
/*if(!mstrchr(buf, '\n')) while(c!='\n'&&c!=EOF) c = getchar();
if(c==EOF) return 1;*/
printf("文字:", buf); ch = getchar(); p = mstrchr(buf, ch);
if(p) printf("%d文字目\n", p-buf+1);
else printf("なかった\n");
return 0;
}
310:デフォルトの名無しさん
09/03/16 18:25:04
>>309さんありがとうございます。
311:デフォルトの名無しさん
09/03/16 18:26:40
>>304
#include <stdio.h>
#define N 10
void mqsort(int x[], int left, int right){
int i=left,j=right,p=x[(i+j)/2];
while(1){
while(x[i]<p) i++;
while(p<x[j]) j--;
if(i>=j) break;
{int tmp = x[i]; x[i] = x[j]; x[j] = tmp;}
i++;j--;
}
if(left<i-1) mqsort(x, left, i-1);
if(j+1<right) mqsort(x, j+1, right);
}
int main(){
int a[N],i;
for(i=0;i<N;++i)scanf("%d",a+i);
mqsort(a,0,N-1);
for(i=0;i<N;++i)printf("%d ",a[i]);
return 0;
}
312:デフォルトの名無しさん
09/03/16 18:29:24
>>309
strchr() に準じてだろうけど
const char* で受けた一部を char* で戻すのって微妙に気持ち悪いよね
313:デフォルトの名無しさん
09/03/16 18:34:35
>>311
dクスです。
314:デフォルトの名無しさん
09/03/16 18:38:22
>>308
>>279
315:デフォルトの名無しさん
09/03/16 18:56:12
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク): "string"の先頭の三文字を入力した文字の三文字と比較して、
一致すれば0を一致しなければ1を出力するプログラムを作成しなさい。また、"XXXX"を入力すると終了するようにしなさい。
[3] 環境
[3.1] OS: (UNIX)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします
316:デフォルトの名無しさん
09/03/16 19:04:01
[1] 授業単元:データ構造アルゴリズム
[2] 問題文 ある文の中に指定した語が見つかるとその場所を表示するプログラムをBM法を用いて作成しなさい。
[3] 環境
[3.1] OS: (UNIX)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
おねがいします
317:デフォルトの名無しさん
09/03/16 19:13:43
どんだけ宿題溜め込んでるんだよw
318:デフォルトの名無しさん
09/03/16 19:45:41
>>315
#include <stdio.h>
#include <string.h>
int main(){char s[]="string",b[5];return fgets(b,5,stdin)&&strcmp(b,"XXXX")&&printf("%d",strncmp(b,s,3)?1:0)>=0;}
319:デフォルトの名無しさん
09/03/16 19:54:58
>>318
短いっすね。ありがとうございます。
320:デフォルトの名無しさん
09/03/16 20:01:32
>>318
これで出したらやり直しくらいそうだがな
321:デフォルトの名無しさん
09/03/16 20:16:21
>>318
教員もこんな簡単な問題に対して,こんな大人げない解答出されたら疑問に思うわなw
322:デフォルトの名無しさん
09/03/16 20:54:37
>>318
お前のような漢になりたい
323:デフォルトの名無しさん
09/03/16 21:17:48
>>320-322
むしゃくしゃしてやった。反省はしていない。
>>316
URLリンク(kansai2channeler.hp.infoseek.co.jp)
324:デフォルトの名無しさん
09/03/16 21:44:34
>>323
これは信用していいんですよね?
325:デフォルトの名無しさん
09/03/16 21:47:51
>>311
だからqsortは使っちゃだめ!
326:デフォルトの名無しさん
09/03/16 22:05:18
>>315 ./a <ソース.c
#include <stdio.h>
int main()
{
char s[] = "string", b[1024]; /*
string */
do {
if(!gets(b)) return 1;
printf("%d\n", strncmp(b,s,3) ? 1:0);
} while(strcmp(b, "XXXX"));
return 0;
}
327:デフォルトの名無しさん
09/03/16 22:19:52
>>326
./a<ソース.cが意味不明なんですけど
328:デフォルトの名無しさん
09/03/16 22:26:25
>>326
>>318の後にこれを貼る勇気に乾杯
とりあえずgetsはやめろ
329:デフォルトの名無しさん
09/03/16 22:36:55
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):要素数10個の整数配列を用意します。要素を入力し、シェルソートを用いて昇順にソートするプログラムを作成しなさい。
今回は、比較幅を1,2,4,8…のような2のべき乗とする。
[3] 環境
[3.1] OS: (UNIX)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: ([21年3月16日まで] )
[5] その他の制限: なし
よろしくおねがいします
330:デフォルトの名無しさん
09/03/16 22:42:12
2021年か、結構先だな
331:デフォルトの名無しさん
09/03/16 23:11:38
>>315 ./a <ソース gets使ってしまった。
#include <stdio.h>
int main()
{
char s[] = "string", b[1024]; /*
string */
do {
if(!fgets(b,1024,stdin)) return 1;
printf("%d\n", strncmp(b,s,3) ? 1:0);
} while(strcmp(b, "XXXX\n"));
return 0;
}
332:デフォルトの名無しさん
09/03/17 00:07:12
>>329
URLリンク(kansai2channeler.hp.infoseek.co.jp)
333:デフォルトの名無しさん
09/03/17 00:10:26
>>329
比較幅って言葉の意味がわかんね。
334:デフォルトの名無しさん
09/03/17 00:17:02
>>332さんありがとうございます。
335:デフォルトの名無しさん
09/03/17 00:54:07
[1] 授業単元:データ構造アルゴリズム
[2] 問題文(含コード&リンク):qsort関数を用いてソートするプログラムを作成しなさい。身長の昇順、視力の降順など、複数の条件でソートすること。
※qsort関数
書式 void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void))
[3] 環境
[3.1] OS: (UNIX)
[3.2] コンパイラ名とバージョン: (gcc )
[3.3] 言語: (C)
[4] 期限: ([09年3月17日まで] )
[5] その他の制限:
336:335
09/03/17 00:58:08
お願いします。この問題とかないと単位がやばいです。
337:デフォルトの名無しさん
09/03/17 01:01:11
>>335
入力の形式が分からん。勝手に決めていいのか?
338:335
09/03/17 01:05:26
いいです。レスください!
339:デフォルトの名無しさん
09/03/17 01:32:54
>>335
URLリンク(kansai2channeler.hp.infoseek.co.jp)
340:デフォルトの名無しさん
09/03/17 01:44:02
>>339
修正
URLリンク(kansai2channeler.hp.infoseek.co.jp)
341:335
09/03/17 06:18:57
>>340ありがとうございます。
342:335
09/03/17 07:09:00
すいません!ヘッダとしてが必要という条件が出ているのを忘れてました。どなたか
<stdlib.h>を使った>>335をレスお願いします!
343:335
09/03/17 07:10:59
すいません訂正ですヘッダとして<stdlib.h>が必要という条件が出ているのを忘れてました。どなたか
<stdlib.h>を使った>>335をレスお願いします!
344:335
09/03/17 07:16:32
>>340さんせっかくレスくれたのに申し訳ありません。
345:デフォルトの名無しさん
09/03/17 07:39:30
>>1
・後から問題に付け足しするのはコラー!!です。付け足しは作業を無駄にしがちです。
346:335
09/03/17 07:45:25
そこをなんとか!せっぱつまってるんです。
347:デフォルトの名無しさん
09/03/17 07:48:51
340の
void qsort(void*base,size_t nmemb,size_t size,int(*compar)(const void*,const void*));
の代わりに
#include <stdlib.h>
にすりゃいいだけだろw
348:デフォルトの名無しさん
09/03/17 07:51:12
>>346
qsort()のプロトタイプ宣言を#include<stdlib.h>に置き換える
349:335
09/03/17 08:00:10
>>347さん>>348さんありがとうございます。
350:デフォルトの名無しさん
09/03/17 12:41:52
論より証拠、言葉よりソースコード、日本語よりプログラム言語
分かったか?最近、口先だけの、新入りは?
351:デフォルトの名無しさん
09/03/17 13:02:20
>>350
ソースでくれ
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5290日前に更新/131 KB
担当:undef