ぼるじょあがC/C++の宿題を片付けますYO! 35代目

このエントリーをはてなブックマークに追加
1ぼるじょあ ◆yBEncckFOU
(・3・)エェー C++房のぼるじょあですYO!
わからない宿題を片づけますYO!
――【注意点】――――――――――――――――――――――
・使用する言語(C/C++)や環境(CUI/GUIなど)は必ず書きましょう。
・問題文は、ちゃんと解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式自体をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。
・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html

【歴代スレは>>1-10辺り】

34代目: http://pc5.2ch.net/test/read.cgi/tech/1100530682/
33代目: http://pc5.2ch.net/test/read.cgi/tech/1097932699/
32代目: http://pc5.2ch.net/test/read.cgi/tech/1097592876/
31代目: http://pc5.2ch.net/test/read.cgi/tech/1095075678/
30代目: http://pc5.2ch.net/test/read.cgi/tech/1091954342/
29代目: http://pc5.2ch.net/test/read.cgi/tech/1090765027/
28代目: http://pc5.2ch.net/test/read.cgi/tech/1089974839/
27代目: http://pc5.2ch.net/test/read.cgi/tech/1089448445/
26代目: http://pc5.2ch.net/test/read.cgi/tech/1088860889/
25代目: http://pc5.2ch.net/test/read.cgi/tech/1087929711/
24代目: http://pc5.2ch.net/test/read.cgi/tech/1086612317/
23代目: http://pc5.2ch.net/test/read.cgi/tech/1085149383/
22代目: http://pc5.2ch.net/test/read.cgi/tech/1083050221/
21代目: http://pc5.2ch.net/test/read.cgi/tech/1078157730/
20代目: http://pc5.2ch.net/test/read.cgi/tech/1075217631/
19代目: http://pc5.2ch.net/test/read.cgi/tech/1073566342/
2デフォルトの名無しさん:04/11/28 00:22:16
18代目: http://pc5.2ch.net/test/read.cgi/tech/1071407728/
17代目: http://pc5.2ch.net/tech/kako/1070/10704/1070469896.html
16代目: http://pc5.2ch.net/tech/kako/1069/10698/1069837000.html
15代目: http://pc5.2ch.net/tech/kako/1068/10689/1068950713.html
14代目: http://pc5.2ch.net/tech/kako/1067/10671/1067175933.html
13代目: http://pc5.2ch.net/tech/kako/1064/10645/1064541405.html
12代目: http://pc5.2ch.net/tech/kako/1060/10607/1060706382.html
11代目: http://pc5.2ch.net/tech/kako/1058/10582/1058283913.html
10代目: http://pc5.2ch.net/tech/kako/1057/10570/1057070174.html
9代目: http://pc5.2ch.net/tech/kako/1055/10559/1055944101.html
8代目: http://pc5.2ch.net/tech/kako/1055/10550/1055056940.html
7代目: http://pc5.2ch.net/tech/kako/1053/10539/1053963794.html
6代目: http://pc5.2ch.net/tech/kako/1053/10530/1053045530.html
5代目: http://pc5.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc5.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc5.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
1代目: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html

【注意点追加】
・複雑なAAはスレが荒れたり問題を埋もれさせてしまう原因に
 なりますので、使用を控えてください。
【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:yyyy年mm月dd日hh:mmまで/無期限 のいずれか
[5] その他の制限:
3デフォルトの名無しさん:04/11/28 00:22:17
ちんちん
4デフォルトの名無しさん:04/11/28 00:35:36
は?
5ぼるじょあ ◆yBEncckFOU :04/11/28 00:45:02
(・3・)エェー ぼるじょあかYO!
6デフォルトの名無しさん:04/11/28 01:10:20
**************** 糸冬 了 ****************
7デフォルトの名無しさん:04/11/28 01:28:06
ぼるじょあキター
性懲りも無く・・・
8デフォルトの名無しさん:04/11/28 01:54:08
ボルジョア・ワイン
9デフォルトの名無しさん:04/11/28 01:56:19
ぷれたぽるて
10デフォルトの名無しさん:04/11/28 02:02:08
>>1
11デフォルトの名無しさん:04/11/28 11:35:20
集約とprivateな継承はどのように使い分けたらよいか、実際のコードを用いて説明せよ。
使用する言語はC++とする。

という宿題がでたんですけど、だれか教えてくれませんか?
12デフォルトの名無しさん:04/11/28 11:40:54
ボルジャレー ターヴォ3
13ぼるじょあ ◆yBEncckFOU :04/11/28 13:09:06
だれもこないね。。
14デフォルトの名無しさん:04/11/28 13:14:31
前のスレ終わったの?
1511:04/11/28 14:37:34
僕はスルーですか?・・・
16(・∀・)イイ!!:04/11/28 15:12:00
そんな答えてもらいたいなら
あげれば(・∀・)イイ!!
それでも答えてもらえないなら
しかたな(・∀・)イイ!!
17デフォルトの名無しさん:04/11/28 15:43:58
あげ
18デフォルトの名無しさん:04/11/28 16:19:12
宿題スレ自体はあるの?
19sage:04/11/28 17:46:32
専門学校1年のアルゴリズムで、本当に出た宿題(問題そのまま)です。
具体例は理解できるのですが、考え方がまったくわからないので
お願いします。

[1] 授業単元:アルゴリズム
[2] 問題文(含コード&リンク):
C言語を用いて次のプログラムを作成しなさい。

材料が、鉄:5000kg 3000kgの二種類あり、
製品が、鉄鋼:3100kg 1800kg 1400kg 1100,800kgの4種類ある。

ユーザは、ほしい製品の数量をコンソールからそれぞれ入力し、
どの材料からどのような組み合わせで作ればいいか
最適な組み合わせ(材料に無駄が少ないようにする)を出力する。
具体例:
3100kg*1がほしい→5000kgから3100*1の組み合わせで作ればよい。
1500kg*2がほしい→3000kgから1500*2の組み合わせで作ればよい。
3100*2,1800*2,1000*2がほしい

4000kg*1から3100*1+1800+1
4000kg*1から3100*1+1800+1
3000kg*1から1000*2
の組み合わせで作ればよい。
[3] 環境
 [3.1] OS:Windows2000
 [3.2] コンパイラ(バージョン):Microsoft VisualC++6.0
 [3.3] 言語:C/C++/どちらでも可 のいずれか
[4] 期限:2004年12月14日
[5] その他の制限:ある程度最適ならよい
2019:04/11/28 17:47:15
sageみすりました_Π○
21デフォルトの名無しさん:04/11/28 18:08:40
>>19
不可能でFA
22デフォルトの名無しさん:04/11/28 18:20:31
4000kg?
23デフォルトの名無しさん:04/11/28 18:34:35
"abcbccab"という文字列のsuffix arrayを作成するC++のプログラムを作成せよ。

要するにabcbccab、bcbccab、cbccab、bccab、ccab、cab、ab、bという文字列を
クイックソートを用いて辞書順にソートしたいんですがどうもやり方がわかりません
24デフォルトの名無しさん:04/11/28 19:14:00
作成せよとか書かれるとどっちが主題出されてる側なのかと思ってしまう。
25(・∀・)イイ!! ◆LC7P44pfbg :04/11/28 19:36:59
出された問題は文章変えずにそのまま投稿しろということになってるから
しかたな(・∀・)イイ!!
26デフォルトの名無しさん:04/11/28 20:41:30
>23
クイックソートしなくてもセットに入れていけばいいんだよね?
27デフォルトの名無しさん:04/11/28 20:42:55
また、(・∀・)イイ!!か。
(・∀・)イイ!!の言うことは確かに正論だ。
だがな?正論ばっかじゃ生きていけないぜ?
(・∀・)イイ!!のような自治厨をこのスレは欲していない。
(・∀・)イイ!!がいたところで、このスレが荒れることには
変わりないんだからな、わかったな?
28デフォルトの名無しさん:04/11/28 21:59:05
>>27
良い良い良い良い五月蠅いな
29デフォルトの名無しさん:04/11/28 22:03:48
そんなことより、なんか書き込みすくねーな。
30デフォルトの名無しさん:04/11/28 22:40:59
[2] 問題文: マクローリン展開によって正弦を計算する簡単なプログラムを作れ
[3] 環境
 [3.1] OS:windows xp
 [3.2] コンパイラ(バージョン):よく分からないんですが、Cygwin(?
 [3.3] 言語:C

sin(x)=x-x^3/3!+x^5/5!-x^7/7!・・・がサインの展開したものです。
角度をthetaとしてください。何項まで計算するか自分で指定しなくちゃいけないんですかね^^;
かなりの素人ですが、 お願いしますm(__)m
31デフォルトの名無しさん:04/11/28 22:43:56
ん?何項までの計算は自分でするの?
それとも俺等が聞かれてるの?

オマエは素人ってか馬鹿だから、俺は答えない。
32デフォルトの名無しさん:04/11/28 23:21:03
すみません; それすらもよく分かりません。
四項まで指定するとどうなりますか?
33デフォルトの名無しさん:04/11/28 23:33:18
>>31はばかだと思う。
34デフォルトの名無しさん:04/11/28 23:33:27
>>32
4項までとかそんなのは関係無い。
要は、何項までか指定されているか、そうでないか?で、プログラムが変わる。
35デフォルトの名無しさん:04/11/28 23:51:51
指定があったら
> 何項まで計算するか自分で指定しなくちゃいけないんですかね^^;
なんて言葉が出てくるだろうか
36デフォルトの名無しさん:04/11/28 23:54:03
>>35
いけないんですかね?だとしたら、
指定されているけど、そんなんする必要あるの?っ解釈も出来るでしょ?
その上での>>31
37デフォルトの名無しさん:04/11/28 23:56:50
そんなもんユーザーに決めさせるようにするにきまってんだろ。
38デフォルトの名無しさん:04/11/29 00:04:25
>23
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
#include <map>
using namespace std;
class Suffix{
map<string, int> Dictionary;
public:
Suffix(string str);
void MakeSuffix(string str);
vector<int> GetSuffixArray();};
Suffix::Suffix(string str){MakeSuffix(str);}
void Suffix::MakeSuffix(string str){
for(string::iterator itr=str.begin();itr!=str.end();itr++){
string temp;
copy(itr, str.end(),back_inserter(temp));
Dictionary.insert(make_pair(temp, itr-str.begin()));}}
vector<int> Suffix::GetSuffixArray(){
vector<int> ret;
for(map<string, int>::iterator itr=Dictionary.begin();itr!=Dictionary.end();itr++){
ret.push_back(itr->second);}return ret;}
void show(int i){cout << i <<endl;}
int main(void){
string str="imfinethankyou";
Suffix sfx(str);
vector<int> v=sfx.GetSuffixArray();
for_each(v.begin(), v.end(), show);
return 0;}
39300:04/11/29 00:59:15
>製品が、鉄鋼:3100kg 1800kg 1400kg 1100,800kgの4種類ある。

5種類に見える
40デフォルトの名無しさん:04/11/29 01:13:07
csvファイルを作成する時、1行目のA1を a、B1を b と表示するには
どうすればいいのですか?

a    b
0.001  1
0.002  2
0.003  3
以下続く。

for(i=1; i<10; i++){
 moge(double a, double b;):
  cout<< a << ", " << b << endl;
}
41デフォルトの名無しさん:04/11/29 01:16:39
駄目だ… どうコメントしたらいいか…
42デフォルトの名無しさん:04/11/29 01:18:34
>>40
何がしたいのかよく分からん。もっと分かりやすく説明してくれ。
43デフォルトの名無しさん:04/11/29 02:14:37
ぼるじょあさん今日はもう寝ちゃったの?
44デフォルトの名無しさん:04/11/29 02:50:22
そもそも宿題じゃないだろ?
45デフォルトの名無しさん:04/11/29 07:23:28
どのセルも文字列として扱え
46デフォルトの名無しさん:04/11/29 11:23:57
[1] 授業単元:プログラミング言語基礎
[2] 問題文:
課題2 1〜20までの整数を入力し、その個数分だけの正の整数を入力し、入力した順と逆順に出力する。
課題3 20個までの適当な正の整数を入力し、入力した順と逆順に出力する。課題2とは違って、あらかじめ何個入力するかは指定しない。
課題4 課題3で入力された整数に加えて、別に1個の数値を入力し、その数値が先に入力した数値の中に含まれるかどうかを判定し、あればyes、無ければnoを出力する。
課題5 課題4に加えて、数値がある場合、何番目の数値か出力する。
課題6 課題4,5に加えて、後から入力した数値が含まれる場合、その数値を除いた残りの数値を出力する。

[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン): MinGW 2.0.0
 [3.3] 言語:C
[4] 期限:2004年12月22日

素人なのでよく分かりません。どうか宜しくお願いします。
47デフォルトの名無しさん:04/11/29 12:00:54
#include <stdio.h>
#include <string.h>

int main()
{
    int array[20];
    int i,in,key;
    int yesno = 0;
    memset(array, -1, sizeof(array));
    printf("個数?:");
    scanf("%d",&in);
    if(in < 0 || in > 20) return 0;
              /* in = 20; */
    printf("-1で強制終了:");
    for(i=0; i<in; i++) {
        scanf("%d",&array[i]);
        if(array[i] == -1) break;
    }
    printf("キー?:");
    scanf("%d",&key);
    for(i=19; i>=0; i--) {
        if(array[i] == key) { yesno = 1; printf("yes\t"); printf("%d番目\n", i+1); }
        else if(array[i] != -1) { printf("%d\n",array[i]); }
    }
    if(yesno == 0) { printf("no"); }
}
48デフォルトの名無しさん:04/11/29 12:47:10
>>30
#include <stdio.h>
#include <math.h>
/* 階乗 */
double factorial(unsigned int a)
{
    int ans = 1;
    while(a) {
        ans *= a;
        a--;
    }
    return (double)ans;
}
int main()
{
    int n;
    double x,ans = 0.0;
    printf("n?:");
    scanf("%d", &n);
    printf("theta(rad)?:");
    scanf("%lf", &x);
    while(n>0) {
        ans += ( pow(-1,(n-1)) / factorial(2*n-1) * pow(x,(2*n-1)) );
        n--;
    }
    printf("左辺:%lf", sin(x));
    printf("右辺:%lf",ans);

    return 0;
}
ある範囲超えると大幅に狂う… 制限区間があったかも
49デフォルトの名無しさん:04/11/29 13:21:43
入力した文字列が何文字であっても正確に逆順に出来るプログラムを作りなさい。

だそうです。
誰か作って下さい。
5049:04/11/29 13:25:49
C++でお願いします。
51デフォルトの名無しさん:04/11/29 13:44:04
>>49
std::string str = "hoge";
str.assign(str.rbegin(), str.rend()); // 逆順にする
52デフォルトの名無しさん:04/11/29 14:02:53
>>49
君はまずCとC++の区別をつけられるようになりなさい
53デフォルトの名無しさん:04/11/29 14:10:37
>>48
階乗はあっさりINT_MAXを越えると思うのだが。
5449:04/11/29 14:44:36
>>51
ありがとうございます。

>>52
今まで実行は Visual C++ .NET でやっていたのでてっきり
自分はC++習ってると思ってたんですが、ちょっと調べたところ、C言語だったみたいです。
忠告ありがとうございました。




まことに身勝手ながら、>>49の問題を誰かC言語でお願いします。
5546:04/11/29 15:31:04
>>47 ありがとうございました。

また、課題が出たので、よろしくお願いします。

[1] 授業単元:プログラミング言語基礎
[2] 問題文:
  20個の正の整数を入力し、その中から3番目に大きな数値とそれが何番目に入力されたかを出力するプログラム。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン): MinGW 2.0.0
 [3.3] 言語:C
[4] 期限:2004年12月24日
5649:04/11/29 19:56:11
自力で出来ました。
お騒がせしました。
もしやって下さっていた方が居ましたら、
ご苦労様でした & すいませんでした。
57デフォルトの名無しさん:04/11/29 19:57:59
[2]問題文:離散データ点列 (0.0,1.0),(1.0,3.0),(2.0,5.0)
                   (3.0,5.0),(4.0,2.0),(5.0,0.0)
        の最小2乗近似による一次多項式f1(x),二次多項式f2(x)を求めなさい
        与えられた関数系はf(x)=x^jとして,近似関数F(x)を係数a(j)と関数系f(x)を乗じて
        0からj(j=0,1,・・・,m)まで級数をとったものとする。その近似が最もよくなるように
        係数a(j)を決める
[3]環境:
 [3.1]OS:Windows XP
 [3.2]コンパイラ(バージョン):詳細はわかりませんが,Cygwinを使ってます
 [3.3]言語:C

最小2乗近似をつかって近似多項式を求める問題でm=1,2の場合について
求めなければならないのですが、求めるのは係数のa(j)で、m=1の場合はa(0),a(1)
m=2の場合はa(0),a(1),a(2)という風に分けて求めたいです
どうかよろしくお願いします
58デフォルトの名無しさん:04/11/29 21:48:53
c言語初心者で程度の低い質問で申し訳ないんですが

キーボードから10個の値(正の整数)入力し、その合計を求め表示するプログラム

 入力した値が
 奇数なら5を足した値を足す
 偶数は3倍した値を足す

10個の値を入力するためには、for関数を使用する

という課題を出されたのですが、for関数を用いて10個の値を入力するってのがよく分かりません。
お教え頂けないでしょうか?
59デフォルトの名無しさん:04/11/29 22:00:01
int func_for()
{
  int i,num,total=0;
  for(i=0;i<10;i++) {
    scanf("%d",num);
    if(num%2 == 1) total+=num+5;
    else total+=(num*3);
  }
}
    
  
60デフォルトの名無しさん:04/11/29 22:25:41
>>58
int main(void){
unsigned int i,n,sum=0;
for(i=0;i<10;i++){
scanf("%u",&n);
if(n%2 == 1) sum+=n+5;
else sum+=(n*3);
}

return(0);
61デフォルトの名無しさん:04/11/29 22:28:03
[問題文]
円周率πを以下の式を用いて計算するプログラムを作成しなさい。

π/4 = arctan 1/2 + arctan 1/5 + arctan 1/8

ただし、arctanは以下の級数展開の式を用いて計算すること。

arctan t = t - t^3/3 + t^5/5 -t^7/7 + … + (-1)^n * t^(2n+1) / 2n+1 + …

[言語]C言語です


式が見づらくてすみません。
このような課題が出たのですが、解き方が全くわかりません。
どなたか解いていただけないでしょうか?
62デフォルトの名無しさん:04/11/29 22:32:38
>>55
かなりやっつけ。もっとスマートな方法はあるはず。
void sort(int *list,int *input){
int cnt1,cnt2,temp;
for(cnt1=19;cnt1>0;cnt1--){
for(cnt2=0;cnt2<cnt1;cnt2++){
if(*(list+cnt2)<*(list+cnt2+1)){
temp=*(list+cnt2+1);
*(list+cnt2+1)=*(list+cnt2);
*(list+cnt2)=temp;
temp=*(input+cnt2+1);
*(input+cnt2+1)=*(input+cnt2);
*(input+cnt2)=temp;
}
}
}
}

void showList(int *list,int *input){
for(int cnt=0;cnt<20;cnt++)printf("%d番目に大きいのは%d(入力は%d番目)\n",cnt+1,*(list+cnt),*(input+cnt)+1);
}

int main()
{
int list[20],input[20];
for(int cnt=0;cnt<20;cnt++){printf("No. %d =",cnt);scanf("%d",&list[cnt]);input[cnt]=cnt;}
sort(list,input);
printf("3番目に大きいのは%d(入力は%d番目)\n",list[2],input[2]+1);
showList(list,input);
}
63デフォルトの名無しさん:04/11/29 22:33:15
あー、int mainがreturnしてねぇ…
64デフォルトの名無しさん:04/11/29 22:34:48
>>61
long double Arctan(long double t,unsigned int n){
  unsigned int i;
  long double p,q,x=0;
  for(i=0;i<n;i++){
    p=pow(-1,n);
    q=pow(t,2*i+1);
    x=p*q/(2*i+1);
  }
  return(x);
}

int main(void){
  unsigned int n;
  scanf("%u",&n);
  printf("%lf\n",Arctan(0.5,n)+Arctan(0.2,n)+Arctan(0.25,n));
65デフォルトの名無しさん:04/11/29 22:38:54
答えたのにお礼も無い人ってどうかと思うよー。
66デフォルトの名無しさん:04/11/29 22:43:48
>>65
じゃあ答えるなよばーか
67デフォルトの名無しさん:04/11/29 22:45:45
>>66
ほぉーそう来たかw
分かった。そうする。
68デフォルトの名無しさん:04/11/29 22:51:22
>>64
間違ってねぇか?
p=pow(-1,n); はp=pow(-1,i);
最後のArctan(0,25)は(0.125)だと思われ。
あと最後の返し中括弧がないね。これはどーでもいいが。
69デフォルトの名無しさん:04/11/29 22:53:44
>>68
あーそうだね。間違ってる。
でも君が気付くんだから、質問者も気付くんじゃないかな?
最後の括弧とretunは面倒だから省いた。ヘッダのインクルードもね。
70デフォルトの名無しさん:04/11/29 22:57:06
>>69
じゃあ答えるなよばーか
71デフォルトの名無しさん:04/11/29 22:58:22
>>70
だから答えねーよばーか
72デフォルトの名無しさん:04/11/29 22:59:16
>retun
言い訳がましいなぁ。まぁ、Typoする香具師だということはよく判ったが。
73デフォルトの名無しさん:04/11/29 23:00:36
彼は会社にいてほしくない人だね
74デフォルトの名無しさん:04/11/29 23:01:00
>>72
んな小さいミスでゴタゴタ言うなや・・・すぐ見つかるミスだからいいでしょ。
このスレに書くプログラムで動作テストまでやってる人いるの?
75デフォルトの名無しさん:04/11/29 23:01:55
>>74
動作確認して書くのは当たり前だろ。
恥を知れ。
76デフォルトの名無しさん:04/11/29 23:02:34
>>73
何?社会人でこのスレにプログラム提供してる人いるの?
だとしたら、随分レベルの低い人だね。

俺は大学学部4年。暇な時ここに書いてる。
77デフォルトの名無しさん:04/11/29 23:03:01
>>75
そうか。ドンマイw
78デフォルトの名無しさん:04/11/29 23:05:59
>>76
もう二度とクソコード書き込むなよ…
79(・∀・)イイ!! ◆LC7P44pfbg :04/11/29 23:06:11
回答者どうしでケンカするの(・∀・)イイ!!
せめぎ合う中で良質のプログラマーは育まれ
世に良質なコードが多数生み出されていく
そんな明るい未来(・∀・)イイ!!
80デフォルトの名無しさん:04/11/29 23:07:30
>>78
うーん。大体が糞コードなんだし、糞コードが一つ増えても何も変わらないのでは?
ま、もうここにソースは書き込まないよ。

ってか書き込む人はちゃんと動作テストするんだぞ!!
81デフォルトの名無しさん:04/11/29 23:09:42
>>80
ソースといわず、ここといわず、何も書き込むな。
82デフォルトの名無しさん:04/11/29 23:09:50
暗い人達ですが、何か?
83デフォルトの名無しさん:04/11/29 23:11:12
C++

(  )の中に当てはまる語句を選択肢から選ぶ問題です。

・switch文は(  )[1]によって、(  )[2]の実行文の中のどれかを(  )[3]処理する(  )[4]制御文です。

選択肢
a単数 b複数 c式の値 d選んで e単一方向 f多方向分岐

・(式)の値は(  )[1]でなければいけません。
・case 定数式:と default:文は実行文を示す(  )[2]です。
・case 文は、何段でも続けて書くことが(  )[3]。
・case 定数式と default の後には(  )(;)[4]ではなく(  )(:)[5]を書きます。
・実行文の範囲は、カッコ{  }で(  )[6]。
・(  )[7]文は、必要でなければ省略することもできます。
・switch 文はif 文のように、式の大小や、文字列同士を比較して分岐方向を決めることが(  )[8]。

選択肢
aできます bできません c示します d示しません eラベル f整数 gコロン hセミコロン i case j default


よろしくお願いします m(_ _)m
84デフォルトの名無しさん:04/11/29 23:12:34
動くかどうかや不正確な情報を書く人の気が知れないなぁ
85デフォルトの名無しさん:04/11/29 23:13:00
>>81
いやーそれはしない。
ソースを書き込まないってのはここの流儀が俺には気に食わないからって理由。
ここに書き込まない理由は一切無い。

そういう指図する権利があるのが是なら、俺も君にこのスレに書き込むな要求をしよう。
86デフォルトの名無しさん:04/11/29 23:13:50
>>84
宿題丸投げしておいて礼も言わない人にそこまでの労力を注ぐ人の気が知れないなぁ
87デフォルトの名無しさん:04/11/29 23:14:32
誰だその問題作った香具師。曖昧な回答があるじゃないか。
88デフォルトの名無しさん:04/11/29 23:15:47
[8]は引っかけか?
89デフォルトの名無しさん:04/11/29 23:15:55
>>86
気が向きゃコード書くし、暇ならテストもする。労力? そんなものが要るほど高度な宿題なんかあったかね。
90デフォルトの名無しさん:04/11/29 23:16:15
>>86
じゃあ答えるなよばーか
91デフォルトの名無しさん:04/11/29 23:16:41
>>88
7,8は引っかけと言うより設問者が阿呆だと思われ。
92デフォルトの名無しさん:04/11/29 23:18:09
>>89
馬鹿。テストは義務らしいぞ。暇なら〜は通用せんらしい。
93デフォルトの名無しさん:04/11/29 23:19:50
>>92
お前、いいかげん邪魔なんだけど。
94デフォルトの名無しさん:04/11/29 23:20:43
ってかね、>>89のスタンスでいいじゃん。
何でテストまで義務化するよ?

簡単な問題でもミスる時あるでしょ?
テストの段階ですぐミスに気付けば、それでいいじゃん。
俺のさっきのミスはあれは勘違いとかのハマリにはならない。すぐ気付くミス。

そんなんいちいち指摘するなよ。
95デフォルトの名無しさん:04/11/29 23:21:36
>>93
邪魔?結構。
96デフォルトの名無しさん:04/11/29 23:22:29
VisualStudioやBorlandのせいで
ソフト使ってるだけでC++を勉強してるんだと勘違いしてる椰子多すぎ
97デフォルトの名無しさん:04/11/29 23:22:39
>>94
じゃあ答えるなよばーか
98デフォルトの名無しさん:04/11/29 23:24:15
文字列の中に文字aが何文字あるか表示するプログラムってどう書けばいいですか?
Cの基礎を勉強中です。
99デフォルトの名無しさん:04/11/29 23:27:36
>>94
横槍だが、自分の書いたことに責任もてない奴が何を言っても無駄
10061:04/11/29 23:27:37
>>64 >>68
さっそく解いていただきまして、ありがとうございます。
ご指摘の箇所を訂正して、コンパイルしようとしたら

error C2018: 文字 '0x81' は認識できません。
error C2018: 文字 '0x40' は認識できません。

このようなエラーが出てしまったのですが・・・
101デフォルトの名無しさん:04/11/29 23:28:29
>>100
見えないかもしれないが、全角スペースが入ってる。
102デフォルトの名無しさん:04/11/29 23:29:36
>>100
2バイト空白を1バイト空白に置換汁。
それから、2バイト空白が見えるエディタを使っとけ。
103デフォルトの名無しさん:04/11/29 23:29:38
>>99
そこまでの事をする必要性に疑問を感じる。
君はここにプログラムを書くときにわざわざコンパイルまでしてるの?
書き込み欄に書いて確認しないで終了って人が殆どだと思ってた。
>>100
スペースは全角で入れてる。
コピペしても動かんぞ。
104デフォルトの名無しさん:04/11/29 23:30:21
>>103
じゃあ答えるなよばーーーーーーーーーーーーーーーーか
10599:04/11/29 23:32:43
>>103
少なくとも君に意見している椰子はそれが常識という認識だろう
106デフォルトの名無しさん:04/11/29 23:34:15
>>105
自分の意見に責任持つのは大事だけどさぁ、
別にここに書き込む”プログラムの方”に責任持つのは理解できんな。

というのが俺の認識だな。
ま、この話題はもう止めようや。平行線だろ。
107デフォルトの名無しさん:04/11/29 23:34:32
>>98
#include <stdio.h>

int main(void)
{
char *s = "aaabcdeeaa", *p, cnt = 0;

for (p = s; *p;p++)
if (*p == 'a') cnt++;
printf("aは%d個\n", cnt);
return 0;
}
108デフォルトの名無しさん:04/11/29 23:34:36
間違っていない自信があるならテストもコンパイルさえも不要だろ。
なーに、間違ったところでどうせ誰かの突っ込みが入るさ。
109デフォルトの名無しさん:04/11/29 23:34:42
>>106
お前が消えれば終わるんだよ
110デフォルトの名無しさん:04/11/29 23:35:39
>>109
俺は君が消えたらこの話題を続ける必要は無くなる。
なので、君が消えれば終わるんだよ。
111デフォルトの名無しさん:04/11/29 23:36:24
>>108
上の香具師はそういうスタンスとは明らかに違うがな
112デフォルトの名無しさん:04/11/29 23:36:24
ガミガミ言い合ってるだけのつまらん自演だな。
113デフォルトの名無しさん:04/11/29 23:36:52
>>107
意図的にそう書いているなら未だいいが、普段からそんな書き方しているなら仕事では通用しないな。
114デフォルトの名無しさん:04/11/29 23:37:12
すげえ。久々にイカれた奴をみたwwww
115デフォルトの名無しさん:04/11/29 23:38:46
大原2号?



いや本人か!?
116デフォルトの名無しさん:04/11/29 23:42:14
>>113
いえ、意図的ではなく、まじめに書いたつもりです。
プログラムで飯を食うつもりはありませんが、後学のために
どこがいけないのか教えてもらいたいです。
117デフォルトの名無しさん:04/11/29 23:43:22
>>113
君が仕事で通用していないということが良く分かった
118デフォルトの名無しさん:04/11/29 23:45:35
>>116
横槍だが、何文字数えられますか?とか、関数化したほうが、とか。
119デフォルトの名無しさん:04/11/29 23:45:38
>>107
ありがとうございます!!
120デフォルトの名無しさん:04/11/29 23:47:05
追記で、数えられる数以内になかったら・・・
121デフォルトの名無しさん:04/11/29 23:47:24
>>118
はぁ?
122デフォルトの名無しさん:04/11/29 23:48:19
>>121
君が仕事で通用していないということが良く分かった
123116:04/11/29 23:49:59
何文字数えられますか?とはなんでしょう。
あと、例を示すのにこのくらいのものなら関数化は必要ないと思いました。
124デフォルトの名無しさん:04/11/29 23:51:07
ばかなやつが、自演やら適当なレスを繰り返してるんだろ・・・
125デフォルトの名無しさん:04/11/29 23:51:09
cntがcharってのがまずおかしい。
126デフォルトの名無しさん:04/11/29 23:52:01
>>125
それは仕様です。
127116:04/11/29 23:53:15
>>125
ああ本当ですね(汗)素でミスりました。
128デフォルトの名無しさん:04/11/29 23:54:23
ポインタを使わないで、配列だけで書く方法はないですか?

>文字列の中に文字aが何文字あるか表示するプログラムってどう書けばいいですか?
129デフォルトの名無しさん:04/11/29 23:55:20
――【注意点】――――――――――――――――――――――
・使用する言語(C/C++)や環境(CUI/GUIなど)は必ず書きましょう。
・問題文は、ちゃんと解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式自体をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。
・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
130デフォルトの名無しさん:04/11/29 23:56:37
すいません、失礼しましたm()m
131デフォルトの名無しさん:04/11/29 23:57:38
#include <stdio.h>

int main(void)
{
char *s = "aaabcdeeaa";
int cnt = 0, i;

for (i = 0; s[i]; i++)
if (s[i] == 'a') cnt++;
printf("aは%d個\n", cnt);
return 0;
}
132113:04/11/29 23:57:42
>>107
一応マジレス。
・cntをchar型にする積極的理由がない。
・変数は1行に一つ(或いは意味的関連性がある数個)程度にしたほうが保守性が上がる。
・1行に書かない制御構造は修正時のミスを避けるためにブロック化するべき。
・1行に纏めたい積極的理由がないなら制御構造ではブロック化したほうが無難。
・明らかな使い捨て処理であっても関数化しておく癖をつけるとコードの再利用がしやすくなる。
・文字終端の検出は、できればナルキャラのと比較という形にしたほうが意図が伝わりやすい。

要は、ダメプログラマーが読めるように、という按配。
133デフォルトの名無しさん:04/11/29 23:59:14
>>130
せめて「すいません」ではなく、「すみません」と書くように。
134107:04/11/30 00:03:14
>>132
なるほど参考になります。しかしこのスレの性質上多少の手抜きは
容認してもらいたい気もします。
135デフォルトの名無しさん:04/11/30 00:05:10
>>131
本当にありがとうございます。

>>133
「すいません」が間違った日本語とでも?
136デフォルトの名無しさん:04/11/30 00:05:41
小さい処理をいちいち関数化して示す必要は別にないだろ。
関数やってないんで、使わないでくれって初心者多いし。
あとスタイルの問題についてとやかく言うのはどうかと。
137デフォルトの名無しさん:04/11/30 00:06:02
ダメコードで教わり育った人はダメコードを書く。
138デフォルトの名無しさん:04/11/30 00:06:58
なんかさっきから無駄に煽ってるやつがいるな。
139デフォルトの名無しさん:04/11/30 00:07:33
すみません 【済みません】
相手に謝るとき、礼を言うとき、依頼をするときなどに言う語。しばしば感動詞的に用いられる。
すいません。
三省堂提供「大辞林 第二版」より
140デフォルトの名無しさん:04/11/30 00:10:46
>>132
ここ宿題スレだぞ?
14161:04/11/30 00:10:57
たびたびすみません。
おかげさまでようやくコンパイルできたんですが
プログラム実行してみても、動かないというか・・・
私自身使い方よくわかってないのだと思います・・・
よろしければ教えていただけないでしょうか?
142デフォルトの名無しさん:04/11/30 00:12:42
char s[] = "aaabcdeeaa";
int i,cnt[256]={0};
for(i=0; i<sizeof(s)/sizeof(s[0]); ++i) ++cnt[s[i]];
printf("aは%d個\n", cnt['a']);
143デフォルトの名無しさん:04/11/30 00:13:26
関数に、というのは時と場合だろうけど、>137は頷ける
144デフォルトの名無しさん:04/11/30 00:15:08
>>141
あぁ、アークタンジェントの関数に、t-ってのを忘れてたわ。
すまん。l
145132=113:04/11/30 00:18:19
>>140
仕事で2ch語でメールなんぞ書いたらとんでもないことは判るよね?
仲間内なら2ch語でメール書いてもそれは一向に構わないのだけれど
不特定多数へのメールなら一応2ch語は避けようと思わない?

私はプログラミングも同じだと思う。つまり、普段から崩れた書き方してると
それが染み付いてしまいきちんとした書き方ができなくなりますよ、と。

>>134
容認も何も、私が書いたことには一切拘束力はない。
判断し、行動するのはあなた。char cntの件がなければ>132も書かなかっただろうしね。
146デフォルトの名無しさん:04/11/30 00:22:25
145 名前: 132=113 [sage] 投稿日: 04/11/30 00:18:19
>>140
仕事で2ch語でメールなんぞ書いたらとんでもないことは判るよね?
仲間内なら2ch語でメール書いてもそれは一向に構わないのだけれど
不特定多数へのメールなら一応2ch語は避けようと思わない?

私はプログラミングも同じだと思う。つまり、普段から崩れた書き方してると
それが染み付いてしまいきちんとした書き方ができなくなりますよ、と。


( ;´Д`)
147デフォルトの名無しさん:04/11/30 00:23:26
ウザ
148デフォルトの名無しさん:04/11/30 00:24:17
会社にて、後輩or同僚、時には先輩で苦労した人じゃないと共感はされまいて。
149デフォルトの名無しさん:04/11/30 00:25:09
>>145
飯食っていく気ないんなら自分が読めればそれでいいじゃん
150デフォルトの名無しさん:04/11/30 00:26:09

  <⌒/ヽ-、___  たまたま機会があったから書いただけじゃないか。
/<_/____/ いいよもう、寝るから。
151デフォルトの名無しさん:04/11/30 00:26:56
758 :仕様書無しさん :04/11/29 18:35:48
この上司の台詞に俺はキレた・・・
「ドラクエ8のラスボスは主人公の兄イリアス」



759 :仕様書無しさん :04/11/29 18:54:19
>>758
うそだと言ってくれ・・・orz


761 :仕様書無しさん :04/11/29 19:14:45
>>758
おれはおまえにキレそうだ。
152デフォルトの名無しさん:04/11/30 00:27:04
なんでお説教が始まってんだ?
ドキュソのプログラム作ってやるのに
ブロック化だの、関数化だの
会社だの仕事だの・・・・
153デフォルトの名無しさん:04/11/30 00:27:12
駄目コードを作る人間に育つ人が増える事が辛いんだろう
154デフォルトの名無しさん:04/11/30 00:45:15
助けてもらいたいのですが、
VC++6.0でダイアログベースで作成してます。
Monthcalendarの週番号は取得できないのですか?
MSDNを見たんだけど、ShowWeekNumberっていうのを
どのように使ったらいいかわかんないんです。
詳しく、お願いします。
誰か親切な方お願いします。
155デフォルトの名無しさん:04/11/30 00:46:52
>>154
まずは仕様書を書いてください。
そんなことではじっさいの開発では通用しませんよ。
156デフォルトの名無しさん:04/11/30 00:51:00
>>155
はっはっはっはっはっは
じっさいの開発にかかわった事ないな?仕様書が最初にあるわけないだろう
わっはっはっはっはっは
157デフォルトの名無しさん:04/11/30 00:51:34
ttp://f1.aaa.livedoor.jp/~pointc/index11.html
今度からテンプレに入れておいてくれ
158デフォルトの名無しさん:04/11/30 00:53:00
>>156
泣くな。
159デフォルトの名無しさん:04/11/30 01:02:26
仕様書ですか?
月間予定表のプロパティで週番号の表示はできますよね。
ある日付を選択したら、その週番号をエディットボックスに
表示したいんですけど・・・
それでもわかりにくいですか・・・
誰かお願いします。
160デフォルトの名無しさん:04/11/30 01:11:35
カーニハンは典型的な駄目プログラマだったってことでOK?
161デフォルトの名無しさん:04/11/30 01:13:50
だめプログラマでもいいので教えてください

162デフォルトの名無しさん:04/11/30 01:16:14
たしかあのへんにあったんだが
163デフォルトの名無しさん:04/11/30 01:23:47
どの変ですか?
本当にお願いします。
164デフォルトの名無しさん:04/11/30 01:40:12
LRESULT CALLBACK FooDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message) {
case WM_INITDIALOG:{
HWND hwndMonthCalender;
RECT rcMonthCal;
// 新しいコントロールを使用するための宣言
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(icex);
// カレンダーコントロールを使用する
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
// カレンダーコントロールの作成
// ここで指定したウィンドウサイズは意味がない
hwndMonthCalender = CreateWindowEx( WS_EX_CLIENTEDGE, MONTHCAL_CLASS, "",
WS_VISIBLE | WS_CHILD | WS_BORDER | MCS_DAYSTATE ,
5, 5, 150, 150, hDlg, NULL, g_hInstance, NULL);
// カレンダーコントロールの大きさを取得
MonthCal_GetMinReqRect( hwndMonthCalender, &rcMonthCal);
// 大きさを設定
SetWindowPos( hwndMonthCalender, NULL, 0, 0,
10+rcMonthCal.right-rcMonthCal.left,
10+rcMonthCal.bottom-rcMonthCal.top, SWP_NOMOVE );
return TRUE;
}break;
}
return FALSE;
}
165デフォルトの名無しさん:04/11/30 01:40:53
BOOL CFooDialog::OnInitDialog()
{
CDialog::OnInitDialog();
:
:
// 新しいコントロールを使用するための宣言
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(icex);
// カレンダーコントロールを使用する
icex.dwICC = ICC_DATE_CLASSES;
InitCommonControlsEx(&icex);
// m_wndMonthCalenderはCWnd型のオブジェクト
// カレンダーコントロールの作成
// ここで指定したウィンドウサイズは意味がない
m_wndMonthCalender.CreateEx( WS_EX_CLIENTEDGE, MONTHCAL_CLASS, "",
WS_VISIBLE | WS_CHILD | WS_BORDER | MCS_DAYSTATE ,
5, 5, 150, 150, m_hWnd, NULL);
// カレンダーコントロールの大きさを取得
CRect rcMonthCal;
MonthCal_GetMinReqRect(m_wndMonthCalender.m_hWnd, &rcMonthCal);
// 大きさを設定
m_wndMonthCalender.SetWindowPos( NULL, 0, 0,
10+rcMonthCal.Width(), 10+rcMonthCal.Height(), SWP_NOMOVE );
return TRUE; // TRUE を返すとコントロールに設定したフォーカスは失われません。
}
166デフォルトの名無しさん:04/11/30 01:56:56
これはカレンダーを表示ですよね?
週番号の取得は・・・
167デフォルトの名無しさん:04/11/30 02:04:00
計算したら?
168デフォルトの名無しさん:04/11/30 02:11:02
もう人の宿題やるのは辞めよう…
169デフォルトの名無しさん:04/11/30 02:12:59
それを聞きたいのですよ。
170デフォルトの名無しさん:04/11/30 02:21:05
週番号って、何週目ってやつ?
ツェラーの公式でその年の1/1の曜日がわかるんだから、
うるう年の計算忘れずに知りたい日の1/1からの日数調べて割れば?
171デフォルトの名無しさん:04/11/30 02:23:33
その何週目ってやつです。
月間予定表コントロールで週番号を表示できるので
その週番号を取得できないですかって聞いてるんです。
172デフォルトの名無しさん:04/11/30 02:33:10
strftimeはVCに無いの?
173デフォルトの名無しさん:04/11/30 04:15:56
ありますけど、うるう年ときがおかしくなってしまう。
174デフォルトの名無しさん:04/11/30 06:21:13
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1101761829
学校で出た課題です。
txtファイルを読み込んだり、arrayがいっぱいあったりで少し混乱してます。
txtファイルが読み込めなくてかれこれ3時間ほど苦悩しえます。

テキストファイルを読み込むには
ifstream inFile;
inFile.open("txt")
でいいんですよね?
ファイルがうまくよみこめません。
txtファイルはプログラムがセーブしてある同じフォルダ内においてあります。
テキストファイルが読み込めないことには何もできないです。
どうか助けてください。
175デフォルトの名無しさん:04/11/30 09:52:53
ifstream fin("txt")
176デフォルトの名無しさん:04/11/30 10:01:21
意味同じか…
ファイルないんじゃないの
177デフォルトの名無しさん:04/11/30 10:08:28
C++かと思えばC++もどきか…

openだけすればファイル読み込み完了してるんだと勘違いしてる悪寒
178デフォルトの名無しさん:04/11/30 10:10:33
>>174
ファイルの内容が、リンク先の>>2でいいのなら・・・

char Item_id[date];
int Sale_Date[date];
int Customer_id[date];
char Payment_Type[date];
    ↓
string Item_id[date];
string Sale_Date[date];
int Customer_id[date];
string Payment_Type[date];

あと、ソースの一番上に「#include<string>」を書く。

・charは1文字しか入らないので、stringにする。
 char Item_id[date]・・・では、「一文字」の配列になってしまうので望んだとおりにならない。
・日付はいきなりintにならんので、stringに読み込んでおく。
で、どうだろう。
179デフォルトの名無しさん:04/11/30 10:14:29
あと、voidなのにreturnはまずくないか?
DevC++ではOKなのか?
180デフォルトの名無しさん:04/11/30 10:43:58
>>179
OK death
File wo hiraku koto ha dekimashita
(full path ga hituyou datta)
181提出まで後7日:04/11/30 12:00:19
>175-179の方々
色々ご指摘ありがとうございます。
試行錯誤の結果txtファイルのフルパスを入れてみたら読み込めました。
こんな感じです。
これ見つけるまでにとても時間がかかった(一日つぶしちゃいました
//Open file
ifstream data("C:\\Documents and Settings\\My Documents\\PROJECT\\Sales.txt");
前にVC++で作ったプログラムは動いたので行けるかなと思ってたらダメでした。
そして今度こそファイルを表示できるべとおもってたら・・・
なぜじゃー
という具合です。
182提出まで後7日 DevC++4.0:04/11/30 12:24:48
連続で質問、大変もうしわけありませんがお許しください。
txtファイルのほうはこうなっているのですが
Sale_ID Item_id, Sale_Date, Customer_id, Payment_Type
2004090001, p1, 09/01/2004, 0000, Credit
2004102002, p2, 10/01/2004, 0001, Cash
2004100003, p1, 10/01/2004, 0001, Cash
2004090004, p3, 09/01/2004, 0000, Credit
  ・    
  ・
2004110020, p1, 11/20/2004, 0012, Credit

まず日付を認識し、同じ日に購入したお客さんの支払い方法(cash or credit)
で分けるようにしたいのです。
スクリーンOUTPUTの例です。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1101761829&res=2&fi=no

Sales.txtは他のファンクションでも使うのでstructをつかってみようと思います。
(classにするかもです)。
そしてinheritanceも他のファンクションに使ってみようと思ってます
(そんなことじぶんにできるのか疑問ですが)。

今日はこれから出かけなければいけないのでこれ以上書き込みできませんが、
これから一週間このスレに粘着させていただきます。
(大変ご迷惑だと思います、本当にすみません。相談できる友達いないんです)。
なにとぞよろしくご指導のほどをお願い致したい次第でございます。
183≠179:04/11/30 12:53:41
>>182

・>179の補足。
戻り値なし(void)の関数から値を戻しては(値つきのreturn)いけない。

・各処理関数からReportMenu()を呼び出しているが、それだといずれスタックオーバフローで落ちる。
ReportMenu()内でループするようにし、各処理関数は単純に戻るだけにしたほうがいい。

・エラー時に関数から抜けてないので正常処理に突入してしまっている。

つーか、課題に見合うだけの基礎知識がない気がするが。

184デフォルトの名無しさん:04/11/30 15:55:42
文字列"hoge00123.txt"があって、ここから拡張子の前の数値の部分(123)だけ
取り出すにはどうしたらいいですか?
Cでおながいします。
185デフォルトの名無しさん:04/11/30 16:41:08
>>184
それが人にものを頼む態度か?失せろ
186デフォルトの名無しさん:04/11/30 16:54:56
>>184
取り敢えず、こんなもんでどうだろう。

int getFileValue(const char * buf)
{
int value;
if (sscanf(buf, "%*[^0-9]%d", &value) < 1) {
return 0; /* or -1 &c. */
}
return value;
}
187デフォルトの名無しさん:04/11/30 17:01:29
先を越された……。しかもそっちの方がスマートだ。OTL
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int Hoge(const char *pText) {
  const char *p;
  if (pText == NULL || *pText == '\0')
    return 0;
  p = strrchr(p, '.');
  if (!p)
    p = pText + strlen(pText);
  while (pText != p--) {
    if (!isdigit(*p)) {
      p++;
      break;
    }
  }
  return atoi(p);
}
188デフォルトの名無しさん:04/11/30 17:29:21
[1] 授業単元: プログラミング言語 基礎
[2] 問題文:
20個までの適当な個数の正の整数を入力し、その中から3番目に大きな数値とそれが何番目に入力されたかを出力するプログラム。

[3] 環境
 [3.1] OS: WindowsXP
 [3.2] コンパイラ(バージョン):MinGW 2.0.0
 [3.3] 言語:C/
[4] 期限:2004年12月27日

よろしくお願いします。
189デフォルトの名無しさん:04/11/30 18:17:57
>>182
添付テキストデータ
途中コンマ抜けたりしてるんだけど、これって自分で作ったの?
190提出まで後7日 DevC++4.0:04/11/30 19:20:32
>>183
なるほど。
MenuReport()に戻りたいなあと思いreturn MenuReport()を
入れたら通ってしまったのでそのまま気にしないでいました。
MenuReport()内でループできるよう変更して見ます。
>>189
いえ、渡されたものです。
テキストデータのエラーを指摘したところそれを直すのも課題のうちだといわれましたので
一部自分で手を加えています。
自分が使うデータファイルは今のところSales.txtとCustomer.txtです。
もう一度ファイルの中を確認してみます。

現在はデータを読み込むことはできたのですが表示できないのでそれと格闘中です。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1101761829&res=9
大幅な書き換えが必要なので再び書けるところまで書いてからまた質問させて
いただこうと思ってます。
191デフォルトの名無しさん:04/11/30 19:58:24
座標系変換に手を焼き課題が解けないので、知恵を拝借したく参りました。
宜しくお願いします。

ラウンジをお借りしました。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1101811955
192デフォルトの名無しさん:04/11/30 20:01:25
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
キーボードから入力をチェックする。
入力が0〜100であれば「OK」と表示し、
それ以外であれば「NG」と表示する。
OKの例…0,16,100
NGの例…-3, 2d, # , スペースを含む入力,Enterのみの入力
[3] 環境
 [3.1] OS:Windows me
 [3.2] コンパイラ(バージョン):Visual C++(R)6.0
 [3.3] 言語:C言語
[4] 期限:早急に!
[5] その他の制限:特になし
193デフォルトの名無しさん:04/11/30 20:09:49
>>190
無限ループ…
breakを入れよう
194デフォルトの名無しさん:04/11/30 20:10:07
>>192
君が悪いわけじゃないけれど、そのテンプレートは見にくいなぁ。
195デフォルトの名無しさん:04/11/30 21:32:38
>>192

#include <stdio.h>

int main()
{
scanfとかで入力を受け取る
if(0から100)
OKと出力
else
NGと出力

return 0;
}

19661:04/11/30 22:21:11
>>144
遅くなってすみません。
t-は、具体的にどこの部分に入れたらいいのでしょうか?
何ヶ所かにt-を入れてみたのですが、うまくいかないもので。。。
197デフォルトの名無しさん:04/11/30 22:25:45
>>196
宿題の期限いつまでなの?
とりあえず今日俺もう酔っ払ってるから、コード書きたくないのね。

明日か明後日辺りにちゃんと動く奴作っておくよ。
19861:04/11/30 22:33:11
>>197
金曜の朝までです。
作っていただけるなら本当にありがたいです。
お忙しいと思いますが、どうぞよろしくお願いします。
199デフォルトの名無しさん:04/11/30 22:34:52
>>198
あそ。ならそれまでに作っておくわ。
20061:04/11/30 22:40:09
>>199
すみません、どうもありがとうございます!
201184:04/11/30 23:15:57
>>186-187
ありがとうございます!
助かりました。
202:04/11/30 23:29:27
ttp://www.iis.u-tokyo.ac.jp/~susaki/c/func2.html
ここの問題なんですが・・・・
全部分かりません(x_x)
どなたかよろしくお願いしますm(_ _)m
丸投げ状態ですが、ちゃんとパソコンの前に座って勉強してます
203デフォルトの名無しさん:04/11/30 23:36:52
>>202
辞めてしまえ。
204デフォルトの名無しさん:04/11/30 23:43:21
scanf使うなボケ
205≠197:04/11/30 23:44:26
>>61
#include <stdio.h>
#include <math.h>

double arctan(double t, double n)
{
double p = 0.0, x = t, i;
for(i = 0.0; i < n; i += 1.0) {
p += (x / (2.0 * i + 1.0));
x = - x * t * t;
}
return p;
}

int main(void)
{
double n = 15.0; /* 求める桁数 */
double p;

p = arctan(0.5, (unsigned int)(n * 1.661));
p += arctan(0.2, (unsigned int)(n * 0.71534));
p += arctan(0.125, (unsigned int )(n * 0.5537));
printf("pi = %.*1f\n", (unsigned int)n, p * 4.0);
return 0;
}

色々端折った。
206:04/11/30 23:51:49
どうかお願いしますm(_ _)m
207デフォルトの名無しさん:04/12/01 00:01:08
>>206
いやです
208デフォルトの名無しさん:04/12/01 00:07:01
>>206
では聞くが、課題1はやったのか?
209:04/12/01 00:14:23
遅れましたm(_ _)m
実行はしたのですが、「正の整数を5つ入れてください」
しか表示されません

実行例通りにはならないんです
どうしてか分かります??
210デフォルトの名無しさん:04/12/01 00:16:18
>>209
判ります。("分"ではなくて"判"だよ。)
貴方が書いたコードに誤りがあるからです。
211:04/12/01 00:19:39
>>210質問者側なのに偉そうな事を言いますが
答えてくれる気がないなら書かないでくれますか??
口先だけの貴方には何も期待してませんから

他の方どうかよろしくお願いしますm(_ _)m
212デフォルトの名無しさん:04/12/01 00:22:28
>>211
答えていますが、何か答えに問題がありましたか?
213:04/12/01 00:22:40
>>210詳しくお願いしますm(_ _)m
>>211情けないですよ(x_x) 人の文章使わないで下さい
214:04/12/01 00:24:49
>>212さん
211は私じゃないですm(_ _)m
多分、どっかのアホです
さっきからちょっかい出して来るんですよ(x_x)
215デフォルトの名無しさん:04/12/01 00:25:12
>>213
第6引数に&maxを付けましょう。
216デフォルトの名無しさん:04/12/01 00:26:57
>>215
マルチ野郎にも親切なんですね。
217デフォルトの名無しさん:04/12/01 00:27:56
>>216
大原ゆきですから。
218:04/12/01 00:30:10
>>216
僕のような将来日本をしょって立つ東大生に親切にしておくと損はないですよ。
いずれじゅうぶんな見返りを社会に対して返せますからね。
219:04/12/01 00:30:22
>>215
感謝しますm(_ _)m

>>216
マルチ行為はすいませんでしたm(_ _)m 期間のせいで余裕が無いんです
それで納得してください
220デフォルトの名無しさん:04/12/01 00:30:36
バカは死ななきゃ直らないんです。
相談できる友達もいないんですから。
221デフォルトの名無しさん:04/12/01 00:31:08
>>219
反省の色の欠片も無いな。
氏ね。
222デフォルトの名無しさん:04/12/01 00:33:12
>>219
> 期間のせいで余裕が無いんです
> それで納得してください
その理由は一般社会には通りませんよ。
223デフォルトの名無しさん:04/12/01 00:36:47
キーボードから数個のstringを読み込んで、
fwrite()を使用することによってファイルにstringを書くプログラムを作れ。
次にfread()を使ってファイルを開き、列変数からファイルからのストリングを読み取れ。
そして画面にstringを表示せよ

全く意味がわかんないんです・・・
お願いします。
224:04/12/01 00:36:57
>>220口だけなら何でも言えますよ
友達に相談する手も考えましたが
2chの方達の方が詳しく教えて頂けるかと思いここに書きましたm(_ _)m
しかしドコにでも貴方のように中傷するしか脳が無い方はいるんですね
225デフォルトの名無しさん:04/12/01 00:44:41
>某

正の整数を5ついれてみろ。

33_44_11_55_2 (リターン)
みたいな感じで
226:04/12/01 00:47:04
>>225協力感謝しますm(_ _)m
227:04/12/01 01:03:58
>>219
遅れましたm(_ _)m
まだ学生の身分なので「一般社会」を語ることなんて到底無理ですが
私はネットと一般社会が同じようなモノだとは思ってません
228デフォルトの名無しさん:04/12/01 01:15:41
>>227
一般社会とは一般的な社会のことです。
ネット社会が一般的であれば一般社会と言えるでしょう。
229デフォルトの名無しさん:04/12/01 04:06:52
Cの標準関数のみを使ってg[x][y]のint型の配列をグラフ化しなさい。

7|
6|
5|
4|
3|
2|
1|_____________________________________
0 1 2 3 4 5 6 7 8 9 10 11 12
このような形式のグラフを作りたいのです。

宜しくお願いします。
230デフォルトの名無しさん:04/12/01 04:15:03
>>229
問題の意味がよく分からない。
g[x][y] の値はどこにどのように表示されるの?
231ぼるじょあ ◆yBEncckFOU :04/12/01 06:39:00
>>229
(・3・)エェー よく分からないYO!
232デフォルトの名無しさん:04/12/01 08:00:37
キーボードから数個のstringを読み込んで、
fwrite()を使用することによってファイルにstringを書くプログラムを作れ。
次にfread()を使ってファイルを開き、列変数からファイルからのstringを読み取れ。
そして画面にstringを表示するプログラムを作製せよ。

提出明日でむっちゃ困ってます・・・
お願いしますm(__)m
233デフォルトの名無しさん:04/12/01 08:39:17
無意味にstringなんて単語使ってるから混乱するんだよな
この場合は string = 文字列 に置き換えて読めば問題の意図はわかるだろ
234デフォルトの名無しさん:04/12/01 08:41:54
おっと、
>キーボードから数個の string を読み込んで
とあるから string = 文字 か?
でも、以降の string は文字列と解釈して欲しいんだろうけど…
235デフォルトの名無しさん:04/12/01 09:09:06
列変数って何だ?
作成じゃなくて作製か?
stringもそうだが、課題を出される方もDQNなら出す方もDQNだな。
236デフォルトの名無しさん:04/12/01 09:34:08
>>192

#include <stdio.h>

int main(void)
{
char str[BUFSIZ];
int num;

if(fgets(str, sizeof(str), stdin) != NULL &&
sscanf(str, "%d", &num) == 1 &&
num >= 0 && num <= 100)
puts("OK");
else
puts("NG");

return 0;
}
237233:04/12/01 10:31:47
煽るつもりじゃなかったんだが…
>>232まぁとりあえず書いた。環境は知らんから cc で確認

#include <stdio.h>
#include <stdlib.h>
#define BUFFER_SIZE 256

int main( int argc, char *argv[] ){
FILE *fp = NULL;
char buf[ BUFFER_SIZE ] = { '\0' };

if( ( fp = tmpfile() ) == NULL ){
printf( "file was not created.\n" );
return EXIT_FAILURE;
}

printf( "input strings[EOF:stop]\n" );
while( scanf( "%s", buf ) != EOF )
fwrite( buf, sizeof( char ), BUFFER_SIZE, fp );

fseek( fp, 0, SEEK_SET );
printf( "\ninputed string are...\n" );
for( ;; ){
fread( buf, sizeof( char ), BUFFER_SIZE, fp );
if( feof( fp ) )
break;
printf( "%s\n", buf );
}
fclose( fp );
return EXIT_SUCCESS;
}
238デフォルトの名無しさん:04/12/01 12:05:49
>>237
煽る積もりも何も、そんなコードじゃ話にならない。
突っ込みどころが多すぎるので突っ込みは割愛。
239デフォルトの名無しさん:04/12/01 12:31:16
fflush( fp );
が必要ってこと?

でも多すぎる、なんて言ってるからもっとあるんだろうけど、
割愛されちゃ、ハタから見たらガキが文句言ってるだけにしか見えないよ?

それとも固定サイズの配列でscanf使ってることに文句言いたいとか?
とりあえず突っ込みキボン
240デフォルトの名無しさん:04/12/01 12:31:20
>>238




.
241デフォルトの名無しさん:04/12/01 13:02:59
>>239
それじゃさわりだけ。

・括弧の内側空けるな。
・必要のない初期化をするな。
・エラーは標準出力ではなくエラー出力に出力しろ。
・scanf()を使うなら最低限バッファサイズで制限しろ。
・sizeof(char)は常に1だ。無意味だから1にしておけ。
・fwrite()で不定値が入った情報はできれば書くな。
・fread()で全て読めることを期待するな。
・読めた情報がナルターミネートされていることを当てにするな。
・課題なのだから出力されたファイルを見られるようにしておけ。
・そもそも課題に書かれていることを無視するな。
242デフォルトの名無しさん:04/12/01 13:13:38
・括弧の内側空けるな。
好みでは? それとも環境依存?
・sizeof(char)は常に1だ。無意味だから1にしておけ。
課題だからこそ、1が何を意味しているのか知るべき

・必要のない初期化をするな。
VCで変数初期化しないと挙動が変になった経験上

・エラーは標準出力ではなくエラー出力に出力しろ。
ferror( "tmpfile" ); は反応なかった(有無は知らない)

・課題なのだから出力されたファイルを見られるようにしておけ。
問題からはそのような文意は読み取れませんが?
・そもそも課題に書かれていることを無視するな。
どのことでしょう?
文字列を fwrite で書き込み, それを fread で読み取るが問題のメインじゃ?

・fwrite()で不定値が入った情報はできれば書くな。
できればって…

・scanf()を使うなら最低限バッファサイズで制限しろ。
・fread()で全て読めることを期待するな。
・読めた情報がナルターミネートされていることを当てにするな。
これこそ課題に求められてるものなの?

つーか>>241
http://pc5.2ch.net/test/read.cgi/tech/1101615970/413-
>>417じゃない?
243デフォルトの名無しさん:04/12/01 13:15:58
どっちもキチガイなことに気付け
244デフォルトの名無しさん:04/12/01 13:17:37
あはは、おもしろいねここ
245デフォルトの名無しさん:04/12/01 13:21:27
釣られちゃってごめんなちゃい(´・ω・`)
246デフォルトの名無しさん:04/12/01 13:21:35
課題を読む限りプログラムは2本作らないといけないような。
247デフォルトの名無しさん:04/12/01 14:26:05
西暦、月、日を入力してその日から1週間分の西暦、月、日を出力せよ。
その月が何日まであるか、閏年等も考慮すること。


よろしくお願いします
248デフォルトの名無しさん:04/12/01 14:42:20
閏年等って何?
ユリウス歴とか?
249デフォルトの名無しさん:04/12/01 15:17:37
>>242
ferrorじゃなくてfprintf(stderrとかfputs("hoge", stderr);とかだよ。
250デフォルトの名無しさん:04/12/01 15:19:30
>>247
1752年や、それ以前の扱いは?
251デフォルトの名無しさん:04/12/01 15:19:48
双方向リストに対して、次の3つのソート方法を用いた辞書順ソートプログラムを作れ。
1.バブルソート
2.クイックソート
3.マージソート
よろしくお願いします。
252デフォルトの名無しさん:04/12/01 15:21:31
DQNな問題だな
253デフォルトの名無しさん:04/12/01 15:42:23
>>247
http://up.isp.2ch.net/up/041b7dc4c9af.txt

>>1のアップローダー==ラウンジが無くなってしまっている・・。
254デフォルトの名無しさん:04/12/01 15:58:20
誰か居ませんでしょうか?
255デフォルトの名無しさん:04/12/01 16:00:02
>>253

ありがとうございました。
中身を理解できるように頑張ります
256デフォルトの名無しさん:04/12/01 16:00:48
リストにか...
257デフォルトの名無しさん:04/12/01 16:05:46
一般社会にでて無理難題を押し付けられても
口答えせずにちゃんと解決する訓練なんだよ。
258デフォルトの名無しさん:04/12/01 16:09:13
インデクサはさめばいいんじゃないか
259デフォルトの名無しさん:04/12/01 17:07:19
C言語で、キーボードから入力した文字列を字句解析して、結果を表示してくれるプログラムを
作りたいのですが判りません。初心者ですが、教えてください。お願いします。

例えばa+1と入力すると

IDENT:a
OP :+
NUM :1.0

3a*5と入力すると

ERR :3a
OP :*
NUM :5.0

ab 1.2 *と入力すると空白を無視して

IDENT:ab
NUM :1.2
OP :*

のように表示してくれるものを作りたいのです。よろしくお願いします。
260デフォルトの名無しさん:04/12/01 18:01:22
パーサは一文字呼んで状態変化の繰り返しで簡単なものはどうにでもなる。
もう少し頑張ってみろや
261デフォルトの名無しさん:04/12/01 18:16:28
parserじゃなくてlexerじゃないの?
262デフォルトの名無しさん:04/12/01 23:15:12
キーボードから数個のstringを読み込んで、
fwrite()を使用することによってファイルにstringを書くプログラムを作れ。
次にfread()を使ってファイルを開き、列変数からファイルからのstringを読み取れ。
そして画面にstringを表示するプログラムを作製せよ。

sizeofとかfopenとか使うみたいです。
文字列を入力してファイルを読んで文字列を表示するんだそうです。

お願いします・・・
263デフォルトの名無しさん:04/12/02 00:35:12
高速フーリエ変換について調べないと行けないんですけど
解説ページみてたら分からなくなりました。
以下解説文から抜粋----------------


 まず,長さ N の DFT

    N-1    jk         -2πi / N
A = Σ a W , W = e  
 k   j=0  j  N    N      


を素直に計算する場合を考えます.この場合 A_0 から
A_N-1 までの各項の 計算に N 回の乗算が必要なため,全体で
N^2 回の乗算が必要になります. しかし,少し考えてみてください.
もし,N が 2 で割り切れるならば, 添字 k を偶数と奇数とに分ける
ことで,長さ N の DFT は,次の二つの, 長さ N/2 の DFT

    N/2-1               jk
A = Σ  (a + a )     W
 2k   j=0     j   N/2+j       N/2


    N/2-1           j   jk
A = Σ ((a − a ) W ) W
 2k+1   j=0     j   N/2+j   N   N/2
264デフォルトの名無しさん:04/12/02 00:35:25
>>262
>列変数からファイルからのstringを読み取れ
???
265デフォルトの名無しさん:04/12/02 00:35:36

に分解できることがわかると思います.さらに,この分解を
2 回, 3 回,... と繰り返せば, 計算量は約 1/4, 1/8,... と激減します.


以上抜粋----------------
この解説ページみたいにやっていくと
最期はW_N/Nになって乗数のところは2πijkになってWの項はつねに
1になる状態になってkごとの変化がなくなるきがするんですが、どこか
勘違いしてるんでしょうか?教えて下さい。。。
266デフォルトの名無しさん:04/12/02 00:36:36

に分解できることがわかると思います.さらに,この分解を
2 回, 3 回,... と繰り返せば, 計算量は約 1/4, 1/8,... と激減します.


以上抜粋----------------
この解説ページみたいにやっていくと
最期はW_N/Nになって乗数のところは2πijkになってWの項はつねに
1になる状態になってkごとの変化がなくなるきがするんですが、どこか
勘違いしてるんでしょうか?教えて下さい。。。
267デフォルトの名無しさん:04/12/02 00:36:47
>>263
割り込んでごめんなさい
268デフォルトの名無しさん:04/12/02 00:37:46
すいません。二重に書き込んでしまいました。263と265で続いてます。
宜しくお願いします。。。
269デフォルトの名無しさん:04/12/02 00:38:14
@二つのN*M行列X、Yを与え、行列の和WA=X+Yを求めるプログラムを作成しなさい。
A@のプログラムの行列の和を求める部分を関数mplus()にしなさい。
N、M、行列の要素はキーボード入力させる事

という課題です、よろしくお願いします
270デフォルトの名無しさん:04/12/02 00:39:01
271デフォルトの名無しさん:04/12/02 00:42:23
>>270
?わかんないです。何か関係あるんですか?
272デフォルトの名無しさん:04/12/02 00:44:39
>>269
http://www.ecs.shimane-u.ac.jp/~kyoshida/c6(2002).pdf
ここの101ページ嫁
273デフォルトの名無しさん:04/12/02 00:47:20
すいません。ご迷惑おかけしますが教えてください。

学校でこのような宿題が出てわからず困っています。
使用するアプリケーションはvisual stdio.net。
C言語を用いて作成する。

問題文↓
2つの自然数を入力してその間にある素数を表示する.
入力は整数2つ.
2つの整数が正であること(エラー処理).
大小関係が逆でも対応できるようにする.
処理:prime関数を用いる.
引数:整数
戻り値:素数の場合が1、それ以外0.
出力:素数の値 下4桁と下4桁+100.

#include <stdio.h>←学校ではこれしか習っていない.

void prime(int)

main()
{
int a,b;
printf("input number:" );
scanf(%d%d,&a,&b);
if(a<=0||b<=0){ printf("error.");}
}
この先からどうすればいいのか全くわかりません。
274デフォルトの名無しさん:04/12/02 00:50:35
おいおい、クリスマスも近いってのにstdio.hしか習ってないってどういう事だ?
275デフォルトの名無しさん:04/12/02 00:50:58
初心者なんですがお願いします。MATLABで画像のラベリングをやってるんですがプログラムの仕方が全くわかりません。C/C++でいいんでプログラム例を教えてください。
276デフォルトの名無しさん:04/12/02 00:52:04
>処理:prime関数を用いる.
prime関数はもうあるのかえ?
277273:04/12/02 00:56:48
>>274
すいません・・・

>>276
まだないです・・・。
全て1から作れとのことです。
下のCは僕が自分なりに考えて作ってみたものです・・・
って言いますか、全然できてないけど。
278269 ◆AnalSexRiQ :04/12/02 00:57:05
>272
ありがとうございます、助かりました
279デフォルトの名無しさん:04/12/02 01:33:06
>>273
「出力:〜」の意味がよく分からなかったから適当に素数を出力するだけ。
参考にしてちょうだい。
#include <stdio.h>
#include <stdlib.h>
int prime(int n){
  int i, notprime, ret, *is_prime = (int*)malloc(sizeof(int) * (n + 1));
  for (i = 2; i <= n; i++) is_prime[i] = 1;
  for (i = 2; i <= n; i++) {
    notprime = i;
    while ((notprime += i) <= n) is_prime[notprime] = 0;
  }
  ret = is_prime[n];
  free(is_prime);
  return ret;
}
int main(){
  int a, b, lower_bound, upper_bound, i;
  printf("input number:");
  scanf("%d %d", &a, &b);
  if (a <= 0 || b <= 0)
    printf("error.");
  else {
    lower_bound = a < b ? a : b;
    upper_bound = a < b ? b : a;
    for (i = lower_bound; i <= upper_bound; i++)
      if (prime(i)) printf("%4d ", i);
  }
}
280デフォルトの名無しさん:04/12/02 01:38:18
>出力:素数の値 下4桁と下4桁+100.

なんか深い意味があるような無いような
281273:04/12/02 01:45:01
>>279
ありがとうございます。
このCを土台にがんばってみます。
僕の学校じゃ#include <stdlib>とか習っていない
のでそこらへんはどうにかしてみます。
ありがとうございました。ご迷惑おかけしました。

>>280
すいません、それは僕のミスです。
出力は素数の値だけでいいそうです。
混乱させてすいません。
282279:04/12/02 02:15:33
ちょっと気になった。差し替え。
#include <stdlib.h>
int prime(int n){
  int i, notprime, ret, *is_prime = (int*)malloc(sizeof(int) * (n + 1));
  for (i = 2; i <= n; i++) is_prime[i] = 1;
  is_prime[0] = is_prime[1] = 0;
  for (i = 2; i <= n; i++) {
    notprime = i;
    while ((notprime += i) <= n) is_prime[notprime] = 0;
  }
  ret = is_prime[n];
  free(is_prime);
  return ret;
}
283デフォルトの名無しさん:04/12/02 02:15:52
#include "resource.h"
これがついたときどう実行するんですか
visual6.0
284デフォルトの名無しさん:04/12/02 08:54:53
>>283
宿題じゃないならスレ違い。
285デフォルトの名無しさん:04/12/02 13:09:34
アップローダーが逝ってる・・・
質問です。

これがテキストファイルです。
Sale_ID, Item_id, Sale_Date, Customer_id, Payment_Type
2004090001, p1, 09/01/2004, 0000, Credit,
2004092002, p2, 09/01/2004, 0000, Credit,
2004090003, p1, 09/01/2004, 0001, Cash,
2004090004, p3, 09/01/2004, 0000, Credit,
2004100005, p2, 10/01/2004, 0000, Credit,
2004100006, s1, 10/01/2004, 0001, Cash,

このファイルを読みこんで、日付(例えば09/01/2004)で区切って、
さらにcreditかcashで分けてスクリーンに表示させたいんですけどどうすればいいですか?
こんな感じで。

//Sale_ID, Item_id, Sale_Date, Customer_id, Payment_Type//ここの部分はいりません。
2004090001, p1, 09/01/2004, 0000, Credit,
2004092002, p2, 09/01/2004, 0000, Credit,
2004090004, p3, 09/01/2004, 0000, Credit,
2004090003, p1, 09/01/2004, 0001, Cash,
286285:04/12/02 13:14:37
struct Sales_text
{
char Order_id;
char Item_id;
char Sale_date;
char Customer_id;
char Payment_type;
};
int main()
{ Sales_text[ここもどれでコントロールしたらいいかわからないっす] }
これをベースにしようと思ってます。
実際のテキストにはもっとデータが入ってます。
「,」で区切られてるんだけど、それをどうやったらとれるのかわからないっす。
287285:04/12/02 13:20:10
表示するときはカンマを無くさないといけないです。
実際の表示画面はこんな感じになります。
テキストの名前はSales.txtです。

OrderID ItemID SaleDate CustomerID PaymentType
2004090001 p1 09/01/2004 0000 Credit
2004092002 p2 09/01/2004 0000 Credit
2004090004 p3 09/01/2004 0000 Credit
2004090003 p1 09/01/2004 0001 Cash
288デフォルトの名無しさん:04/12/02 13:51:29
http://do.sakura.ne.jp/%7Ejunkroom/

なくなっちゃったんだこのサイト・・・
289デフォルトの名無しさん:04/12/02 13:51:52
>>287
お前>174か? そうでないなら同級生か?
カンマを取り除いて入力するには、ファイルから1行fgets()で読み込んでから、
sscanf()かstrtok()で切り出す。
#sscanf()なら"%s"ではなく"%[^,],"を使う。
290285:04/12/02 13:57:20
>>289
そうです。
174です。
fgets()、教科書に載ってないのですがどうやって書けばいいんですか?
sscanf()とstrtok()もないです。
厨ですみません。
291デフォルトの名無しさん:04/12/02 14:07:19
292デフォルトの名無しさん:04/12/02 14:08:32
>>291
つ?
293デフォルトの名無しさん:04/12/02 14:08:51
おっと説明足らずだな
man on WWW で対象の関数とか検索
294デフォルトの名無しさん:04/12/02 14:14:50
書式が一定なら fscanf を使う

ってのはダメなの?
295285:04/12/02 14:18:13
>293
行ってみましたがまるで理解の範疇をこえています。
どうやって調べていいかすらわかりません。
対象の関数でしらべてみましたがよくわかりませんでした。
>>285-287をそれで書いていだだけますか?
見れば理解できるかもしれません
296デフォルトの名無しさん:04/12/02 14:23:04
man を理解できなきゃ今後同じ様な質問を際限なく繰り返す
まずは man などの内容を理解できるようになってからプログラミングやれ
297285:04/12/02 14:24:39
>>294
書式が一定とはどういう意味でしょうか?
このテキストファイルはアップデートされるので
あまり応用が利かないと困るんです。

298285:04/12/02 14:26:16
>>296
勉強はしますが、ここは宿題スレということで書き込んでます。
そういうことでご理解ねがえますか?
299285:04/12/02 14:30:32
fstream.data("Sales.txt", ios::in)
data.read((char*) &sales, sizeof(Sales_text));

これでファイルを読み込んでます。
このあとの
while(!data.eof())
の中がよくわかりません。
300デフォルトの名無しさん:04/12/02 14:34:22
(;´Д`)…(絶句)
301デフォルトの名無しさん:04/12/02 14:58:55
>>285
MSDNライブラリの方がわかりやすいかも
サンプルコードあるから

重いけど…
302デフォルトの名無しさん:04/12/02 15:01:50
/* そのデータを読み込んで表示するだけのサンプル。 */
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

struct Sales_text {
char Order_id[12];
char Item_id[4];
char Sale_date[12];
char Customer_id[6];
char Payment_type[10];
};

static void readAndPrint(const char * fileName);
static bool readStruct(const char * buf, struct Sales_text * data);
static void printStruct(const struct Sales_text * data, bool withHeader);

int main(int argc, char ** argv)
{
if (argc < 2) {
fprintf(stderr, "Usage:%s <file name>.\n", argv[0]);
exit(EXIT_FAILURE);
}
readAndPrint(argv[1]);
return EXIT_SUCCESS;
}
/* cont'd */
303デフォルトの名無しさん:04/12/02 15:02:40
void readAndPrint(const char * fileName)
{
char buf[200];
bool withHeader = true;
FILE * fp = fopen(fileName, "r");
if (fp == NULL) {
return;
}
while (fgets(buf, sizeof(buf), fp) != NULL) {
struct Sales_text tmp;
if (!readStruct(buf, & tmp)) {
fprintf(stderr, "Illegal data:%s\n", buf);
} else {
printStruct(& tmp, withHeader);
withHeader = false;
}
}
fclose(fp);
}

bool readStruct(const char * buf, struct Sales_text * data)
{
if (sscanf(buf, "%11[^,], %3[^,], %11[^,], %5[^,], %9[^,]",
data->Order_id, data->Item_id, data->Sale_date,
data->Customer_id, data->Payment_type) < 5) {
return false;
}
return true;
}
/* cont'd */
304デフォルトの名無しさん:04/12/02 15:03:38

void printStruct(const struct Sales_text * data, bool withHeader)
{
if (withHeader) {
printf(" OrderID ItemID SaleDate CustomerID PaymentType\n");
}
printf("%10.10s %2.2s %10.10s %4.4s %s\n",
data->Order_id, data->Item_id, data->Sale_date,
data->Customer_id, data->Payment_type);
}
/* cで書いちまったよ。 */
305263:04/12/02 18:55:59
>>263 の高速フーリエ変換についてきいてた者です。
すげー勘違いしてました。自己解決したので後はスルーお願いします。
306デフォルトの名無しさん:04/12/02 19:29:27
最初からスルーされてたような気がするがw
307デフォルトの名無しさん:04/12/02 19:32:55
なんか、もっと斬新な話はないのか…どこかで見たような話ばかりだ。
308デフォルトの名無しさん:04/12/02 19:37:14
宿題なんてだいたい似たようなもんばっかだからな(´Д`)
309デフォルトの名無しさん:04/12/02 19:37:53
リストをクイックソートは問題としては斬新だったな。
310ゆかこ:04/12/02 19:43:29
今度C言語の課題が出たのですがどうも自分の力ではできません。
よろしければ助言をいただきたいと思います。よろしくお願いします。


レポート課題
以下のようなゲームを作りなさい。
コンピュータが 0から 9までの数を 4つ, 順序付きで重複なく選ぶとする. プレイヤ(人間)は, この数列を当てるのだが, はずれた場合に提示されるヒントは次の通り.

正解の n番目の数を n番目に解答していれば, Hit と呼ぶ. Hit の個数がヒントとして提示される.
正解の n番目の数を m番目(n≠m)に解答していれば, Blow と呼ぶ. Blow の個数がヒントとして提示される.

実行例
5 6 7 8
Hit: 0, Blow: 3
7 8 9 0
Hit: 1, Blow: 1
1 2 3 6
Hit: 1, Blow: 0
9 8 5 6
Hit: 3, Blow: 0
0 8 5 6
Congratulations!
311デフォルトの名無しさん:04/12/02 19:43:40
↑無理があるな… いったん配列に落としてまたリストに戻すのかな。
312309:04/12/02 19:44:18
>>308宛ね
313310:04/12/02 19:44:44
ずれた。>>309
314デフォルトの名無しさん:04/12/02 19:44:52
中身を見ずに目新しいからといって、それだけで否定している奴っているよな
315デフォルトの名無しさん:04/12/02 19:56:38
>>310
いわゆるマスターベーションってゲーム?
316デフォルトの名無しさん:04/12/02 20:04:07
>>310
そのゲームで、コンピュータ側が解答者で人間側が出題者のやつをやったことあるけど、
何度か適当なヒント出してるうちに、「矛盾してる!嘘を言うな!」とか言い出した。w
317デフォルトの名無しさん:04/12/02 20:09:02
>>310
begin-base64 664 HitAndBlow.c.gz
H4sICC7zrkEAAEhpdEFuZEJsb3cuYwCNVt9PW1Ucfy4J/8MBQnr7Q2jnXraORZhsmgAzOuIibLW0
t3CgvSX33jKnI5HvNQ42GAXKapYsmcag1C2LMRvJzExcGIIZ+uKDby4xjkF8aOKDD+7B7/me0/a2
srhAes/53u/vH5/vbeFGPJVN6OyIZSd4pm3kaGNDi5uW4kN1RJundSI1NrS3tyT0JDd01vdqd1f/
CaL5WS5/5Ro8mn2QyzN/O4qWefp7u7rfjB472d93ih2s4Z17uPDHYqqGu7fzdFRKsEOC17JjNo8z
btgsZljndHPAre9MRPAIjf7GBqbUfge3YdV51znuDDl9RP4kWri+mIKHy7/AWmOD3y8MuhRzK8GH
uW1p8Yxh2Sw+EjOZ3/KxDxobPDzJtCa84NFj6nbWNFgIjXrwP5kxmRZBzgizAgHiENya32JHmDfk
9bELF5i4HWXeQ14fMdToUOcwnifdUSxdgxUozf2Zu0lXZ8ZZcqLOh7BVfQF3pjplPpZ/zuVha+H3
pWewBrtTXXXxTWR4gqVjY3pUsmsqLBF2kI1G1BldMc+Li2XGjISmZQ2LDxt6wsdE3bW+/p4en4+S
LcPmrANjYBwjddcDKZgJsuBJZOTTQ7qJn66qjPwMksiYj7UyzVX3AAv7JCs2Sg83su+xN8zMsBlL
p3XTa7HemJGNpWALnsAe/DS9OXMPHi3/c/UVKOY+mv8CvkHqOnwmc1FnT8NYfUwLh9pCfmm73WU5
EG4L+ZRpkUJ8ULCjMthRDJbjoxKhrLfSP4r6O1jFWIWlEn44oghDph4bU5dJetDvJDs3wlM600iA
3KCuaOFJA4ejMmuecROjSGrNnWTrMGsm3v8vizBSlm1NsOagy9uIS++gQRpbdCPBk8KDmuZ0Pp4a
cPphFXaWnhW2oXTlL7g91emMI/U03IH7s5dnfoSSqVvZlF3tSylKTPOZwjRsYoE24QcUPOHMTA1A
318デフォルトの名無しさん:04/12/02 20:09:29
MX8rd1eIz+/NXYTty/1QwmG9A+vz04XrULr6G6yJcqISJD/FWS7mzqKCndzN2b/3m2hjPGtHjWx6
SDctUXTmlx7JstCED2WTA+HQgYMCQzw1k49JFA0fKXP6x10UUi8RANtTIYQVjxmUVfmHqZXmBkJn
Ksdw9XigenwZO6Wpo6Za9VgjYhMFHtYRotDrILP4+3omKc4+vCCCG1RA9Gfm2ZwFpfyt2VWRTNiB
b+FrKM6/vjhAKCsBSoRj2WZ8xJTqvIMmwhOh1X9fGfiKPKIseAdDXgV/Ik2ChHwv1n9yItBJ57Rz
ntplG089iNIT0jmPGgBRATTFvBIyEVxpWpT05Se5X+EplBZPwZqSI5B2+24FSdxXnkLBwOvzzF5C
oJFjWMk2QwOFiYUkFBe+QiPYprIhZZsqczSuesrSJVKMBwKuzJTdFKtoevPSScSmu7iUijgH3xMu
idZfvZTOH3c7X1lB1j57wiMbgvqFYCxmZzhyus2JkYAvQZRduvy4xmWqe1XFERaS9a6SjrpW7/N8
oJIrYHru9iqcxSW1gyB8X/hEK2sDbqjgd2F1fmPuooSDKSz9O9gIb2OOBq+swGPs3c/3HfOFt2B9
em9xYp9Rj4/o8TG1uWnQafb333Ij3GblRSTuQ6nMufL9RfvXBfmcIJ/sCQylnKEJ1a6iQVT71W+R
Wt3PWShu7aOufSKcViYqy0S07dJtuIufAsXlT/H3BuzKxp3em30AG0hZgV3VC7VbR1VTGBbp6ajD
Imm2vBqOZQzcw3Y2henHjDepVeFxNwOpqwZfFn2N24dZayLIutB/cULZoKhIkMpQoyak1EzKrztR
qnSMG+5vF0pL/aegp+ZDR+GUApWwq35N9ftBdEw5w2WHu00zY1YjFCvCxo8RPVKBAKFKtp/SQHyV
9S54ELPFCpHOuKLDd/8CxofV2IQLAAA=
====
319デフォルトの名無しさん:04/12/02 20:15:05
ゆかこちゃんにいぢわるするのはよせ
320デフォルトの名無しさん:04/12/02 20:21:45
GyRCJEwkayRdGyhC
321デフォルトの名無しさん:04/12/02 20:48:59
どうせならQRコードで解答すっかw
322デフォルトの名無しさん:04/12/02 20:56:36
323デフォルトの名無しさん:04/12/02 20:59:18
>>322
おまえは馬鹿かアホかと
324デフォルトの名無しさん:04/12/02 21:05:28
>>322
マジレスすると隣り合った文字列リテラルは結合されてしまう。しかし
問題はそこにあるのではなく、',' (カンマ)が入っている事です。これじゃ
ホワイトスペース文字とマッチしないよん。
325デフォルトの名無しさん:04/12/02 21:08:02
だ、誰か!助けて!

【仕様】
2つのファイルを読み込んで新しい2つのファイルを作成する。
読み込むファイルには1行に1名分のデータが書かれており、
「B 氏名 打率」または「P 氏名 防御率」である。以下は例である。

--bluewave.txt--
B tani 0.317
B hidaka 0.274
P kawagoe 4.16
P motoyanagi 5.61

--kintetsu.txt--
B kitagawa 0.303
B isobe 0.308
P iwakuma 3.00
P kawajiri 4.25

このような2つのファイルを読み込み打率が0.300以上または防御率が4.20以下のデータのみを集めた
orixbuf.txtと、それ以外のデータを集めたrakuten.txtという2つのファイルを出力するプログラムを作成せよ。
326317:04/12/02 21:11:23
分からない宿題やってもらう分、
Base64の知識でも詰め込んで置けと言うつもりでやったんですけどね

>>320
GyRCJSwlQxsoQg==
327325:04/12/02 21:26:21
ぐわ、書き忘れだ… orz
言語はC言語です。
328デフォルトの名無しさん:04/12/02 21:41:19
C++の問題で
文字列と1文字を入力して、文字列中の1文字の個数を処理して出力する問題なんですけど
たとえばnellyでlなら2と出力するプログラムなんですけど、よかったら教えてください
329デフォルトの名無しさん:04/12/02 21:52:46
>>328
#include <algorithm>
#include <iostream>
#include <string>

int main()
{
  std::string str = "Hello, World!";
  char c = 'l';
  std::cout << std::count(str.begin(), str.end(), c) << std::endl;
  return 0;
}
330285:04/12/02 22:17:16
>>304
どうもです。
うごかないです。
C++で書くとどうなりますか?

表示するのはできますが、読み込んだ後日付とPayment_typeで読み込んだ後の
ファイルの並び替えをしなければなりません(すでに書いたと思いますが)。
それをどうやったらいいかわかりません。
331デフォルトの名無しさん:04/12/02 22:21:42
名前データの先頭文字が'E'のものだけ表示するプログラミングを作りなさい。

static char *name[]={"Eluza","Candy","Emy","Ann"};
int i;
for (i=0;i<4;i++)
if (name[i][0]=='E')
printf("%s\n",name[i]);

これを先頭文字をscanfで打ち込み、その先頭文字の名前を表示し、
打ち込んだ先頭文字の名前がなければその旨を表示するプログラムに
変えたいんですが、どうしたらいいでしょうか?
言語はCです
332デフォルトの名無しさん:04/12/02 23:05:59
頭文字(・∀・)イイ!!
333デフォルトの名無しさん:04/12/02 23:22:23
#include <stdio.h>

>>331
int main(void)
{
  static char* name[] = {"Eluza", "Candy", "Emy", "Ann"};
  int i, count;
  char cap;
  printf("頭文字をどうぞ:");
  scanf("%s", &cap);
  for (i = 0, count = 0; i < 4; i++)
    if (name[i][0] == cap)
    {
      printf("%s\n",name[i]);
      count++;
    }
  if (!count) printf("ありませんですた");
  return 0;
}
334331:04/12/02 23:49:22
>>333
ありがとうございます!
助かりました。
335デフォルトの名無しさん:04/12/03 00:16:35
C言語で質問なのですが、少しわからない事があります。
背番号,打数,安打数を多数入力し、打率の最高の選手のみ
背番号,打数,安打数とともに打率を出力する(同一打率の選手はない)
プログラムです。ストッパは背番号=−999,打数=安打数=0
ここまでは出来ました。しかしコンパイルがうまくいきません・・・。
指摘下さいますと助かります。
#include <stdio.h>
int main(void)
{
int num,num1,dasuu,dasuu1,anda,anda1;
double daritu,daritu1;
daritu=0;
daritu1=0;
do{
printf("背番号を入力せよ\n");
scanf("%d",&num);
printf("打数を入力せよ\n");
scanf("%d",&dasuu);
printf("安打数を入力せよ\n");
scanf("%d",&anda);
daritu=anda/dasuu;
if (daritu1<daritu)
{
num1=num;
dasuu1=dasuu;
anda1=anda;
    daritu1=daritu;
}
}while(num!=-999 && dasuu!=0 && anda!=0);
printf("%d %d %d %.3f",num1,dasuu1,anda1,daritu1);
return(0);
}
336デフォルトの名無しさん:04/12/03 00:26:19
>>335
    daritu1=daritu;
↑ここに全角スペースがあるからちゃうのん?
337273:04/12/03 00:27:12
>>273
>>279
>>282
のC言語なんですが、訂正をお願いしてもいいでしょうか?
僕の学校ではstdlibをならってないのでできるだけstdioだけで
Cを作りたいのです・・・.
prime関数の方ではmallocは習っていないのでこれを学校に
提出したらちょっと危ないと思いますので、使わないでどうにか
できませんか?
Cを書いてもらった279さんには不愉快な思いをさせて申し訳
ありませんが、どなたかお願いします。
338279:04/12/03 00:29:43
>>337
氏ね
339デフォルトの名無しさん:04/12/03 00:29:46
>>336
コンパイルはできたんですけど実行がうまくいかないんですよ。
だからプログラム自体が間違えてると思うんですよねぇ〜。
340デフォルトの名無しさん:04/12/03 00:30:35
>>330
>302-304はCでも動くぞ。stdbool.hをインクルードする必要もないし。
充分ヒントになるように関数を作ってあるようだから、頑張って勉強しろや。

>>333
何故頭文字だけなのに%s? ほぼ確実に領域破壊しているんだが。

>>334
つーことで、そのまま提出しないように。
341デフォルトの名無しさん:04/12/03 00:35:35
>>335
実行モジュールは何かダイイング・メッセージを残しませんでしたか?
342デフォルトの名無しさん:04/12/03 00:38:03
>>341
ストッパを入力すると『Division by 0』というのがでて終了してしまいます。
343デフォルトの名無しさん:04/12/03 00:40:14
>>342
( ゚Д゚)ポカーン

そのまんまだろう
344デフォルトの名無しさん:04/12/03 00:41:46
>>343
すいません(^∀^;初心者なもので・・・。
どういう意味なんでしょうか?
345デフォルトの名無しさん:04/12/03 00:46:19
自分で書いたことぐらい把握しろ
それとも何か?人生初心者を主張してるのか?
346はるか:04/12/03 00:46:36
すいません質問です。0から9までの数を重複なく四つ選ぶ方法を教えてください
347328:04/12/03 00:46:44
>>329
ありがとうございましたー
348デフォルトの名無しさん:04/12/03 00:47:53
>>344
お前、ストッパは-999, 0, 0なんだろ? 0 / 0 を計算しているだろ?
あやまれ!それを告げて死んだプログラムにあやまれ!
349デフォルトの名無しさん:04/12/03 00:48:26
>>345
だってわかんないんだもぉ〜ん!
350デフォルトの名無しさん:04/12/03 00:48:29
>>346
「0〜9までの数字をランダムで2個選んでswap」を
任意回行った後、先頭の4つを取り出す。
351デフォルトの名無しさん:04/12/03 00:48:54
/* 取り敢えずこんなもんかな */
int prime(int n)
{
int i;

if (n == 2) {
return 1;
}
if (n < 2 || n % 2 == 0) {
return 0;
}
for (i = 3; i * i <= n; i += 2) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
352デフォルトの名無しさん:04/12/03 00:51:21
for (int i0 = 0; i0 <= 9; ++i0) {
for (int i1 = 0; i1 <= 9; ++i1) {
if (i1 == i0) {
continue;
}
for (int i2 = 0; i2 <= 9; ++i2) {
if (i2 == i1 || i2 == i0) {
continue;
}
for (int i3 = 0; i3 <= 9; ++i3) {
if (i3 == i2 || i3 == i1 || i3 == i0) {
continue;
}
printf("%d, %d, %d, %d\n", i0, i1, i2, i3);
}
}
}
}
353デフォルトの名無しさん:04/12/03 00:52:33
>>348
っつー事は0/0を計算しなければ(・∀・)イイ!ってことか!
354デフォルトの名無しさん:04/12/03 00:58:56
>>348
AA略をお忘れですよ。
355279:04/12/03 01:01:09
>>337
俺が書いたのはエラトステネスのふるいと超有名な方法の最も
初歩的な書き方。どっちにしても見ておくといいだろう。
で、>>351氏のを提出したら大丈夫じゃねぇか?
356273:04/12/03 01:51:37
>>279
ごめんなさい。そしてありがとうございます。
最後の最後まで迷惑おかけしました。
ずうずうしい自分の態度に反省しています。

>>351
ありがとうございます・・・。
357デフォルトの名無しさん:04/12/03 02:12:21
(・3・)エェー ここはぼるじょあスレなのに
なんでみんな普通の言葉でしゃべってるんだYO!
358ぼるじょあ ◆yBEncckFOU :04/12/03 02:24:37
>>357
(・3・)エェー なんでトリップがついてないんだYO!
359デフォルトの名無しさん:04/12/03 02:36:55
いつまでそんな、とっくに飽きられた事をやってるんだ?
360デフォルトの名無しさん:04/12/03 06:56:07
>>359は新スレが立つたびに荒らす奴か。
今回はおとなしかったみたいだが。
361ほんたま:04/12/03 07:07:26
プログラマーのみなさん、教えてください。
ひとつのオブジェクトを2つに分裂させるコードを書きたいのですが、どう書けばいいのですか?
擬似的に2つに分裂したように見えるのではなくて、実際に2つに分裂するコードを書きたいのです。
つまり1つから2つのオブジェクトが同時に発生し、2つのオブジェクトの発生にはほんの少しの時間差もないという、事実上の分裂を書きたいのですが…
362デフォルトの名無しさん:04/12/03 07:17:16
>>361
CPUが二つ必要だな
363デフォルトの名無しさん:04/12/03 07:37:51
精神分裂病になれば同時に二人分の人生を生きられるよ。
364デフォルトの名無しさん:04/12/03 09:34:03
つーか、何マルチしてんだよ。
365デフォルトの名無しさん:04/12/03 09:40:07
ギャー誰も>>325の問題にレスつけてくれてNeeeeeeeeeee!!!
死んできます、切腹。orz
366デフォルトの名無しさん:04/12/03 10:12:34
>>365
起きたら電子レンジのように解答が出来上がってるって虫のいい事を
考えないで、答えが出るまで起きてて催促しろ。
367365:04/12/03 10:21:39
>>366
うぉ、心に響く… 確かに、そうですな。
もう少し自分で足掻くだけ足掻いてダメだったら吊って来る。
368デフォルトの名無しさん:04/12/03 11:13:20
まず,ファイルにデータの個数nと,その個数分のデータ(整数のデータ)を保存する.
プログラムbinsearch.cは,まずファイルからnを読み込み,その数だけデータを読み込む.次に整数を一つキーボードから入力し,それが読み込んだデータ内に存在する場合にはyes,存在しない場合にはnoを答える.
プログラムbinsearch.cを作成し,その動作を確認せよ.ただし,プログラムの動作がわかるように,探索範囲のインデックス(iL, iM, iR)を表示するようにせよ
以下参照
#include <stdio.h>
#define N 100
enum yn {yes,no};
enum yn bsearch(int x, int *A, int n);
main(){
int A[N],n,x;
enum yn ans;
ans = bsearch(x,A,n);}
enum yn bsearch(int x, int *A, int n){
int iL,iR,iM;
iL=0;iR=n-1;
if(A[iL]==x||A[iR]==x)return(yes);
if(x<A[iL]||x>A[iR])return(no);
while(iR-iL>1){
iM=(iL+iR)/2;
if(A[iM]==x)return(yes);
if(A[iM]<x)iL=iM;
else iR=iM;}return(no);}
cでお願いします。
369デフォルトの名無しさん:04/12/03 11:31:37
>>367
暇だから作ってみたけど、>>1のリンク先切れてるな。
確か前に行った時、どこか他のURIに変わるって書いてあった希ガス。
今どこにうpすればいい?
370デフォルトの名無しさん:04/12/03 11:41:30
アップローダーの移転先わからんからここに連貼りするよ。
#include <stdio.h>
#include <stdlib.h>

#define INPUT1 "bluewave.txt"
#define INPUT2 "kintetsu.txt"
#define OUTPUT1 "orixbuf.txt"
#define OUTPUT2 "rakuten.txt"


struct Member {
char position;
char name[20];
double rate;
};

int main(void)
{
FILE *fi1, *fi2, *fo1, *fo2;
struct Member mb[20];
int i, count = 0;
char buf[128];

if ((fi1 = fopen(INPUT1, "r")) == NULL || (fi2 = fopen(INPUT2, "r")) == NULL || (fo1 = fopen(OUTPUT1, "w")) == NULL || (fo2 = fopen(OUTPUT2, "w")) == NULL)
exit(1);

while (fgets(buf, 128, fi1)) {
sscanf(buf, "%c %s %lf", &mb[count].position, mb[count].name, &mb[count].rate);
count++;
}
371デフォルトの名無しさん:04/12/03 11:42:12
fclose(fi1);
while (fgets(buf, 128, fi2)) {
sscanf(buf, "%c %s %lf", &mb[count].position, mb[count].name, &mb[count].rate);
count++;
}
fclose(fi2);

for (i = 0; i < count; i++)
switch (mb[i].position) {
case 'B':
fprintf((mb[i].rate >= 0.3) ? fo1 : fo2, "%c %s %f\n", mb[i].position, mb[i].name, mb[i].rate);
break;
case 'P':
fprintf((mb[i].rate <= 4.2) ? fo1 : fo2, "%c %s %f\n", mb[i].position, mb[i].name, mb[i].rate);
break;
default:
break;
}
fclose(fo1);
fclose(fo2);

return 0;
}

>>1の移転先わかる人URIキボン。
372デフォルトの名無しさん:04/12/03 14:44:44
移転先が分からない。見つかるまではここを代用にどうでしょう。
2ch(公式?)うpローダー。txtを貼れるからそこに書く。少し重いけど。
http://up.isp.2ch.net/upload/c=03okari/index.cgi
373デフォルトの名無しさん:04/12/03 15:08:31
お前らは負け組みであり勝ち組
そういう均衡を保った凄まじさに可憐さを交えた
熱い思いを吐き出せずに、ただ毎日を暗鬱と過ごしている
だけのカリカチュア。
374デフォルトの名無しさん:04/12/03 16:58:20
誤爆?
375デフォルトの名無しさん:04/12/03 17:03:29
ローカル記憶域を指してthisポインタのようなものと言ってるのだろう。
376デフォルトの名無しさん:04/12/03 18:18:08
以下のメインプログラムを基に、4次のAdams-Bashforth法を用いて常微分方程式を
解くプログラムを作成せよ。


#include <stdio.h>
#include <math.h>

#define DX 0.1
#define XINI 1.0
#define YINI 0.0
#define IXFIN 10

main()
{
double x = XINI, y= YINI, y_next;
int ix;
double next(double,double);

for(ix=1;ix<=IXFIN;ix++)
{
y_next= next(x,y);
x= XINI + DX*(double)ix;
y= y_next;
printf("%f%f\n",x,y);
}
}

Cでお願いします。
377デフォルトの名無しさん:04/12/03 18:21:50
最近思うんだ・・・
#defineは使うんじゃネェ!

ってint ix;
for(ix=1
ってやってるあたりからしてCか・・・
378デフォルトの名無しさん:04/12/03 18:23:21
>>377
だからCだと言ってるじゃないですか。
いいかげんにしてください。
379デフォルトの名無しさん:04/12/03 18:45:48
#define よりも const を使うことが推奨されている
380デフォルトの名無しさん:04/12/03 18:51:07
>>379
わたしを区切らないで
 ,(コンマ)や;(セミコロン)いくつかの段落
 そしておしまいに「return」があったりする
 プログラムのようには
 こまめにコメントをつけないでください
 わたしは終りのないプログラム
 川と同じに
 はてしなく流れていく 拡がっていく
 一行の詩
381デフォルトの名無しさん:04/12/03 19:05:22
池沼?
382デフォルトの名無しさん:04/12/03 19:06:39
>>380
心に沁みます。
383デフォルトの名無しさん:04/12/03 19:12:09
>>380
心にシミが出来ますた。
384デフォルトの名無しさん:04/12/03 19:12:28
>>378
去れ池沼
385デフォルトの名無しさん:04/12/03 21:40:51
>>384
そういうふうな言葉を言われるととても悲しくなります。
どうして、そんな非道いこと僕にいったの?
386デフォルトの名無しさん:04/12/03 22:19:07
。゚(゚´Д`゚)゚。
387デフォルトの名無しさん:04/12/03 22:53:00
           ...,、 -  、
      ,、 '  ヾ 、    丶,、 -、
     /    ヽ ヽ  \\:::::ゝ
 /ヽ/   i  i    ヽ .__.ヽ ヽ::::ヽ
 ヽ:::::l i.  l  ト  ヽ  ヽ .___..ヽ 丶::ゝ
 r:::::イ/ l  l.  i ヽ  \ \/ノノハ  ヽ
 l:/ /l l.  l  i  ヽ'"´__ヽ_ヽリ }. ',  ',
 'l. i ト l  レ'__    '"i:::::i゙〉l^ヾ  |.i. l
. l l lミ l /r'!:::ヽ    '‐┘ .} /  i l l  / ̄ ̄ ̄ ̄ ̄ ̄ ̄
  l l l.ヾlヽ ゝヾ:ノ   ,     !'"   i i/ i<  お呼びですか?
  iハ l  (.´ヽ     _   ./    ,' ,' '  |   ・・・・・
   |l. l  ` ''丶  .. __  イ          \_______
   ヾ!        l.   ├ァ 、
          /ノ!   /  ` ‐- 、
         / ヾ_   /     ,,;'' /:i
        /,,  ',. `  /    ,,;'''/:.:.i
388デフォルトの名無しさん:04/12/03 23:00:16
死ねよ
389デフォルトの名無しさん:04/12/03 23:01:51
また禁断症状ですか?
390デフォルトの名無しさん:04/12/03 23:06:08
[PR] 2chカレンダー2005仮予約受付中 [PR]
http://chbox.com/goods/
391デフォルトの名無しさん:04/12/04 14:44:15
c言語です。お助けください…

文字列数字を10進数に変換して表示させる

NGワード:atoi(ss)

自分は(恐らく)00001111でその文字とANDをとったところまでしかわからんです
一桁までならわかるんだけど、何だか制限されてるんですよ。
以下問題箇所をそのまま載せます

char suuji[5]= "5432" ;
unsigned int r1=0; mask=(任意)
int cnt ;

for(cnt = 0 ; cnt < 4 ; cnt ++){
r2 = (unsigned int)suuji[cnt] ;
r2 = r2 (演算子1) mask ;
r1 = (r1 (演算子2) 3 ) + (r1 (演算子3) 1 ) ;
r1 = r1 + r2 ;
}

printf("10進数 = %u\n",r1) ;

(演算子1〜3)を補って10進数を表示させるらしいのですが…
maskの値は…0x0fじゃないかなーとか思っております…こういうひらめきなの嫌いです。
ヒントでも良いです・・・お願い致します…
392デフォルトの名無しさん:04/12/04 15:00:18
なんかきもちわるいプログラムですね。
393デフォルトの名無しさん:04/12/04 15:00:37
mask = 0x0f;

r2 = r2 & mask;
r1 = (r1 << 3) + (r1 << 1); /* (r1 * 8) + (r1 * 2) は (r1 * 10) */
r1 = r1 + r2;
394デフォルトの名無しさん:04/12/04 15:05:48
関係ないけど
r1 *= 10;って書くより
r1 = (r1 << 3) + (r1 << 1);
のほうがいいの?
395デフォルトの名無しさん:04/12/04 15:08:58
>>394
昔のCPUで命令に掛け算が無かった頃はその方が速かった。
396デフォルトの名無しさん:04/12/04 15:09:00
はやっ・・・・・・・・・
おれはあれですか、バカですか・・・ありがとうございました・・・r1*10か・・・なるほどね・・・がっくし
397デフォルトの名無しさん:04/12/04 16:04:16
>>396
バカとは言ってないよ。こういうのは経験として知ってるかどうかだけだと思う。
とりあえず、2進数の掛け算を筆算でしてみればいい。
398デフォルトの名無しさん:04/12/04 23:46:03
さっぱりわかんない宿題がでました。助けてください。

[1] 授業単元:プログラミング言語基礎
[2] 問題文:
  2ちゃんねるデータ形式で、ID名をカウントし、一番多いやつを調べる。
[3] 環境
 [3.1] OS:WindowsXP
 [3.2] コンパイラ(バージョン): MinGW 2.0.0
 [3.3] 言語:C
[4] 期限:2004年12月24日
399デフォルトの名無しさん:04/12/04 23:47:20
それ宿題じゃなくてお前が作って欲しいだけだろ
400デフォルトの名無しさん:04/12/04 23:50:24
ネタ乙
401デフォルトの名無しさん:04/12/05 04:16:38
int* sumArrays(int* a, int* b, int N){
int* c = new int[N];
for (int i = 0; i < N; ++i)
c[i] = a[i] + b[i];
return c;
}

これってコンパイルとラン可能ですよね?
自分でやってみたら、動いたんですけど。。。
でもエラーとか不利点とか、あるみたいで、それがいまいち、よく分からないんですが。。。

ポインターって、関数で、&パス(リファレンス)できないですよね?
なんでですか?
402デフォルトの名無しさん:04/12/05 04:50:32
>ポインターって、関数で、&パス(リファレンス)できないですよね?
なんのために使う?
403デフォルトの名無しさん:04/12/05 05:09:59
使わないけど、そういう問題が出てて。なんで出来ないのか書けって。
404デフォルトの名無しさん:04/12/05 05:18:45

int* sumArrays(int*& a, int*& b, int N){
int* c = new int[N];
for (int i = 0; i < N; ++i)
c[i] = a[i] + b[i];
return c;
}

これコンパイル&ラン可能だったけど?
405404:04/12/05 05:19:23
コンパイラはBorland C++ Compiler
406デフォルトの名無しさん:04/12/05 05:22:59
関数呼んだあとdeleteをするのを忘れるなって話?
407デフォルトの名無しさん:04/12/05 05:24:16
そうなんだよね。私も出来たんですよ。でも、問題文が、
「これは、コンパイラー、ラン可能か?そのエラーと不利点をあげ、正しくプログラムを書き換えろ」
なんだよね。。。
408デフォルトの名無しさん:04/12/05 06:28:50
std::vector<int> sumArrays(int*& a, int*& b, int N) {
  std::vector<int> v;
  for (int i = 0; i < N; ++i)
    v.push_back(a[i] + b[i]);
  return v;
}
こう直せばいいんじゃないか?
409404:04/12/05 06:35:08
int* sumArrays(int*& a, int*& b, int N){
int*&ってしたの気づいてくれてるよね?
410404:04/12/05 06:35:39
>403
411デフォルトの名無しさん:04/12/05 08:49:22
プログラムの開始前時刻と終了後時刻を調べその差を取ってプログラム実行時間(秒単位)を調べよ

この課題の時間差ってどうやってもとめるのでしょうか?
412デフォルトの名無しさん:04/12/05 09:01:01
time
413デフォルトの名無しさん:04/12/05 09:44:50
>>409
ポインタのリファレンスは呼び出し側で&を省けるって利点があるね。
それがそのまま欠点にもなってるけど。
414デフォルトの名無しさん:04/12/05 11:15:05
出力結果をhtml形式の表に出力するのはどうやったら宜しいのでしょうか?

htmlファイルの中にある複数のセルを結合した中にC言語の変数の内容を出力したいのですが・・・

printf関数の内容をhtml出力対象にしてもセル関係がうまく均等にならなかったり

415デフォルトの名無しさん:04/12/05 11:25:05
>>414
CでHTMLを出力するってこと?
それならHTMLの勉強をすればいい。
HTMLでのtableの結合は、tdタグのcolspan属性またはrowspan属性だ。
416デフォルトの名無しさん:04/12/05 13:32:12
>>411
時間変数2個作って最初と最後に取った差分を取るだけ?
417デフォルトの名無しさん:04/12/05 14:18:10
助けて下さい! 「身長を入力していき、一番背の高い人と一番低い人の身長を
求めるぷログラム(0を入力した時にデータ終了)」が課題なんです。while文を
使うんです。私はSUMとかDATとか習ってないのでそれらを使わずに作らなくては
いけないんですが、どうしても分かりません・・。誰かお助けをお願いします!
418デフォルトの名無しさん:04/12/05 14:22:49
>>417
ソートの問題はさんざん既出だろ。
みなさん、スルーで。
419417:04/12/05 14:29:31
すいません。ソートって何ですか?過去ログ四段ですけどいまいち分からなくて。
c++とかのことですか?
420デフォルトの名無しさん:04/12/05 14:34:33
ソートじゃないと思うけど。
421デフォルトの名無しさん:04/12/05 14:39:07
>>419

int i;
double a[100]
double max;
double min;

max = a[0];
min = a[0];
i = 0;
while (a[i] != 0) {
if (a[i] > max) max = a[i];
if (a[i] < min) min = a[i];
++i;
}
422デフォルトの名無しさん:04/12/05 14:40:53
>>417
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
int main()
{
  char buf[256];
  int n, min = INT_MAX, max = INT_MIN;
  while( n = atoi(fgets(buf, sizeof(buf), stdin ) ) ){
    if( min > n ) min = n;
    if( max < n ) max = n;
  }
  printf(" 最大 %d, 最小 %d \n", max, min );
  return 0;
}
423デフォルトの名無しさん:04/12/05 14:50:04
こんなの出ました(Cです)

"end"という文字列が入力されるまで文字列を入力として受け付けて、
入力された文字列を全て配列に格納せよ(ただし、上限は100とする)。
この配列の要素のうち、添え字が偶数のもののみ出力せよ。

お願いします。
424デフォルトの名無しさん:04/12/05 15:29:02
ガンバレ
scanfで文字列読みとって
charの2次元配列にstrcpyでコピー
入れた数は変数にでもいれとけ
425デフォルトの名無しさん:04/12/05 15:54:27
ファイルを読み取り、その各行に行番号をつけたものを別のファイルに出力する
プログラムを作成せよ。(C言語でお願いします)

例)
Nice to meet you.
My name is Taro Tanaka.
のとき、出力は
1: Nice to meet you.
2: My name is Taro Tanaka.

のように。

FILE *rfp, *wfpみたいにファイルポインタを宣言して
fopen やfclose などを使って
if((rfp = fopen("test1input.txt", "r")) == NULL)
みたいにやっていくみたいなんですが、サパーリです(汗

よろしくお願いします。
426デフォルトの名無しさん:04/12/05 16:05:47
>>423
#include <stdio.h>
#include <string.h>
int main() {
  char Buf[101] = "";
  int i, Len;
  for (i = 0; i < sizeof Buf; i++) {
    int ch = getchar();
    Buf[i] = ch;
    if (ch == EOF || !strcmp(Buf + i - 2, "end"))
      break;
  }
  Len = strlen(Buf);
  for (i = 0; i < Len; i += 2)
  putchar(Buf[i]);
  return 0;
}
427デフォルトの名無しさん:04/12/05 16:14:54
>>426
ひねくれてるなぁw
428デフォルトの名無しさん:04/12/05 16:19:55
>>426
感動した
429デフォルトの名無しさん:04/12/05 16:36:09
>>425
#include <stdio.h>

int main(void)
{
char buf[1024];
FILE *rfp, *wfp;
int line = 1;

if((rfp = fopen("test1input.txt", "r")) == NULL){
fprintf(stderr, "file open error\n");
return -1;
}
if((wfp = fopen("test1output.txt", "w")) == NULL){
fprintf(stderr, "file create error\n");
return -1;
}

while(fgets(buf, sizeof buf,rfp) != NULL){
fprintf(wfp, "%d: %s", line, buf);
line++;
}

fclose(rfp);
fclose(wfp);

return 0;
}
430デフォルトの名無しさん:04/12/05 16:37:36
>>425
#include <stdio.h>
int main(int argc, char **argv) {
  FILE *fpInput, *fpOutput;
  unsigned i = 0;
  if (argc <= 2)
    return 1;
  fpInput = fopen(argv[1], "r");
  fpOutput = fopen(argv[2], "w");
  if (!fpInput || !fpOutput)
    return 1;
  for (;;) {
    char Buf[512];
    if (!fgets(Buf, sizeof Buf, fpInput) || fprintf(fpOutput, "%d:\t%s", ++i, Buf) < 0)
      return 0;
  }
}
これは0からカウントするようになっているが、もし1からカウントするようにしたいならi++を++iに書き替えれば良い。
431デフォルトの名無しさん:04/12/05 17:48:35
C++の「algorithm」にある、文字列の並び替え関数next_permutationって、
どういうアルゴリズムなんですか?普通のC言語のプログラムで書こうとしたらどうなるのでしょうか?
javaで同じことをしたいんですけど、ヘッダファイルを見てもチンプンカンプン。
432デフォルトの名無しさん:04/12/05 18:22:32
配列を使用して3つの整数を入力しました。
この3つの整数の大小を比較して大きい順に並び替えたいんですが、
整数のかず(今は3つ)に依存せずいくら多くなっても少なくても並びかえれるようにできるプログラム
はできますでしょうか?教えてください。お願いします(C言語でお願いします)
433デフォルトの名無しさん:04/12/05 18:25:24
だからソートしるって。
434デフォルトの名無しさん:04/12/05 18:35:57
>>432
qsort
435デフォルトの名無しさん:04/12/05 19:34:23
int min (int x, int y) {
if ( x < y ) {
return x;
else
return y;
}
}

print("小さいのは %d です。", min(x, y));

上記のように関数ではなく以下のようにマクロを用いるメリットについて考察して述べよ。
#define MAX(a, b) ((a > b) ? a : b )
 〜略〜
printf("大きいのは %d です。\n", MAX(x, y));

どうなんでしょう?
436デフォルトの名無しさん:04/12/05 19:36:06
>>435
関数を呼ぶときのオーバーヘッドが無くなる かも しれない
437デフォルトの名無しさん:04/12/05 19:38:24
>>436
違います。
438デフォルトの名無しさん:04/12/05 19:43:59
メリットとしては、型に関係ないコードが書けるので同じ内容のコードを
型ごとに書く手間が省ける点、関数呼び出しのオーバーヘッドがない点
がある。その反面、マクロはスコープを持たず、エラーメッセージが読み
にくくなりやすい等の副作用が無視出来ない程に多い。型を無視すると
いうのも、分かりにくいエラーの元になり、必ずしもメリットとは言い切れ
ない。よって、殆どの場合において出来る限りマクロは避け関数で書いた
方がよい。C++にはテンプレートと言う機能があり、副作用がなく、しかも
基本的には型ごとに同じコードを書く必要がない。関数呼び出しのオーバー
ヘッドに関しては、inlineキーワードを使うことによって関数呼び出しの
オーバーヘッドを取り除くかどうかの判断をコンパイラに任せるのが
得策である場合が多い。
よって、マクロには現実的メリットは殆どない。
439デフォルトの名無しさん:04/12/05 19:48:56
C++持ち出してメリットないなんていかがなものかと。
C99でもinlineもサポートされたけどポータブルな分まだ利用価値はあるだろ。
440デフォルトの名無しさん:04/12/05 19:51:14
#define MAX(a, b) (((a) > (b)) ? (a) : (b))

あと MAX(hoge++, fuga++) みたいな使い方も爆死
441デフォルトの名無しさん:04/12/05 19:55:17
ソース置き場がなくなったのって何で?http://www2.to/sourceでも
繋がらないし。完璧にお亡くなりになった?
442デフォルトの名無しさん:04/12/05 19:58:34
マクロのほうがカッコイイ。
443デフォルトの名無しさん:04/12/05 20:07:11
マクロはカッコだらけでカッコワルイイ。
444425:04/12/05 20:09:00
>>429さん
エラー出ちゃうんですけど・・・
445デフォルトの名無しさん:04/12/05 20:10:07
エラーの内容ぐらい書けよ
446デフォルトの名無しさん:04/12/05 20:15:38
#define より defmaro のほうがカッコイイ。
447デフォルトの名無しさん:04/12/05 20:17:53
>>440みたいなマクロの使い方がわからないなぁ
448デフォルトの名無しさん:04/12/05 20:30:34
>>431
順列を生成してるだけだから。
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int nextperm(int n, int pp[]) {
int i, j, t;i = n - 2;
while (0<=i && pp[i] >= pp[i+1]) i--; if (i < 0) return 0; j = n - 1;
while (pp[i] >= pp[j]) j--;t = pp[i]; pp[i] = pp[j]; pp[j] = t;
i++; j = n - 1; while (i < j) {t = pp[i]; pp[i] = pp[j]; pp[j] = t; i++; j--;}return 1;
}
#defineN4
int main(int argc, char* argv[]) {
int i, count = 0, p[n];
for (i = 0; i < N; i++) p[i] = i + 1;
do {
printf("%5d: ", ++count); for (i = 0; i < N; i++) printf("%4d", p[i]); printf("\n");
} while (nextperm(N, p));
return 0;
}
449デフォルトの名無しさん:04/12/05 20:39:59
>>444
どうせ、txtファイルを、プログラムと同じ場所においてないからじゃないの。
450デフォルトの名無しさん:04/12/05 20:57:09
ファイルの内容を読み込んでそれを2進数で出力せよ。
どうやるんでしょう?
451デフォルトの名無しさん:04/12/05 20:57:56
ものすごい桁数になるがそれでもいいのか?
452デフォルトの名無しさん:04/12/05 21:00:20
>>451
OKです
入力用のファイルは多くても200byteなので。
453デフォルトの名無しさん:04/12/05 21:32:21
>>450
int main(int argc, char **argv)
{
  FILE *fpInput;
  if (argc <= 1)
    return 1;
  fpInput = fopen(argv[1], "r");
  if (!fpInput)
    return 1;
  for (;;)
  {
    int i, ch = getc(fpInput);
    if (ch == EOF)
      break;
    for (i = 0; i < CHAR_BITS; i++, ch <<= 1)
      putchar((ch & 80 != 0) + '0');
    putchar('\n');
  }
  fclose(fpInput);
  return 0;
}
454デフォルトの名無しさん:04/12/05 21:35:36
>>450
#include <bitset>
#include <climits>
#include <fstream>
#include <iostream>
#include <iterator>

int main()
{
std::ifstream file("data.dat", std::ios::in | std::ios::binary);
for (std::istreambuf_iterator<char> first(file), last; first != last; ++first) std::cout << std::bitset<CHAR_BIT>(*first);
}
455423:04/12/05 22:05:14
>>426
ありがとうございました!
助かりました!
456デフォルトの名無しさん:04/12/05 22:21:58
>>454
短さに感動した
457デフォルトの名無しさん:04/12/05 22:50:32
>>440
>>447
マクロ関数をマクロ関数と見抜けない人には・・・
http://pc5.2ch.net/test/read.cgi/tech/1099412045/
458デフォルトの名無しさん:04/12/05 22:51:08
1int型整数a,bに値をキー入力する。
2a,bのアドレスをポインタ変数pa,pbに代入する
3paとpb内容(アドレス)を交換する
4paとpbが指すアドレスに格納されている値を表示する
プログラムおねがいします
459デフォルトの名無しさん:04/12/05 23:26:52
>>458
#include <stdio.h>

int main(void)
{
  int a, b, *pa, *pb, *temp;
  printf("a,bの形式で入力せよ:");
  scanf("%d,%d", &a, &b);
  pa = &a;
  pb = &b;
  temp = pa;
  pa = pb;
  pb = temp;
  printf("*pa = %d, *pb = %d", *pa, *pb);
  return 0;
}
460425:04/12/05 23:45:27
すいません、2問目もお願いします。

ファイルを読み込み、合計・平均・最大値と最小値を求め、ファイルに書き出す
プログラムを作成せよ。
(429さんみたいにお願いします。Cで)


(入力ファイル)





出力
合計:10
平均:2.5
最大値:4
最小値:1
461デフォルトの名無しさん:04/12/05 23:51:21
つーか、といてもらってお礼もなしで
次の質問なんてずいぶん礼儀正しい人ですね。
462デフォルトの名無しさん:04/12/05 23:58:03
全角数字では難しいですねぇ
463デフォルトの名無しさん:04/12/06 00:06:55
>>459
ありがとうございました
464デフォルトの名無しさん:04/12/06 00:15:21
>>460
半角数字でよければw
#include <stdio.h>
#include <limits.h>
int main(void) {
  FILE *rfp, *wfp;
  int temp, n = 0, sum = 0, max = INT_MIN, min = INT_MAX;

  if((rfp = fopen("test1input.txt", "r")) == NULL){
    fprintf(stderr, "file open error\n");
    return -1;
  }
  if((wfp = fopen("test1output.txt", "w")) == NULL) {
    fprintf(stderr, "file create error\n");
    fclose(rfp);
    return -1;
  }

  while(fscanf(rfp, "%d\n", &temp) != EOF) {
    if (temp > max) max = temp;
    if (temp < min) min = temp;
    sum += temp;
    ++n;
  }

  fprintf(wfp, "合計:%d\n平均:%f\n最大値:%d\n最小値:%d", sum, (double)sum / n, max, min);

  fclose(rfp);
  fclose(wfp);

  return 0;
}
465デフォルトの名無しさん:04/12/06 00:21:08
[2] 二次方程式の解を求めるプログラムの作成
・係数 a,b,c はキーボードより入力
・繰り返し処理が出来る事(for,while,don 〜 while文のいずれかを用いる)
・繰り返しの条件終了は a=0 の時とする
・虚数解は、求めなくて良い

[3] 環境
 [3.1] OS: WinXP
 [3.2] コンパイラ(バージョン): CPad Ver2.31
 [3.3] 言語:C++
[4] 期限:2004年12月6日

素人なのでよく分かりません。よろしくお願いしますm(__)m
466425:04/12/06 00:25:15
>>429さん
すいません、エラー出てて書き込めてなかったみたいです。
よく出るんです・・・何故?

ありがとうございましたm(__)m
467デフォルトの名無しさん:04/12/06 00:33:14
>>466
だから、エラーの内容を書けとあれほど・・・
468デフォルトの名無しさん:04/12/06 00:33:15
解いて欲しい問題だけは書き込めるんだな
469458:04/12/06 00:38:32
1a,bに値を代入する。
2a,bのアドレスをポインタ変数pa,pbに代入する
3pa,pbをつかって(a,bを使わずに)aとbの値(内容)を交換する
4a,bの値を表示する
を自分でやってみました
#include <stdio.h>
int main(void)
{
int a,b,*c,*pa,*pb;
printf("a= ");
scanf("%d",&a);
printf("b= ");
scanf("%d",&b);
pa=&a;
pb=&b;
pa = pb - pa;
pb -= pa;
pa += pb;
printf("pa=%p\n",*pa);
printf("pb=%p\n",*pb);
}
途中までしたんですがエラーが出ます
間違って入るところを直してください。
おねがいします
470デフォルトの名無しさん:04/12/06 00:42:54
>>469
お前の根性が間違っている
471デフォルトの名無しさん:04/12/06 00:44:52
>>470
お前の根性ひねくれてる
472デフォルトの名無しさん:04/12/06 00:48:04
――【注意点】――――――――――――――――――――――
・使用する言語(C/C++)や環境(CUI/GUIなど)は必ず書きましょう。
・問題文は、ちゃんと解いてもらう方にわかりやすいように全文を書きましょう。
・計算問題は必ず数式自体をあげ、どのような計算をするのか詳しく説明してください。
・エラーは、その行とエラーの詳細を書きましょう。
 エラーメッセージが出た場合はそのままコピーしてください。
・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
473デフォルトの名無しさん:04/12/06 00:53:39
>>465
#include <iostream>
#include <cmath>

int main()
{
  double a, b, c;
  for (; ; )
  {
    std::cout << "a?:";
    std::cin >> a;
    if (a == 0.0) break;
    std::cout << "b?:";
    std::cin >> b;
    std::cout << "c?:";
    std::cin >> c;
    if (b * b - 4 * a * c < 0)
    {
      std::cout << "方程式" << a << "x^2+(" << b << ")x+(" << c << ")=0は実解を持ちません" << std::endl;
      continue;
    }
    std::cout << "方程式" << a << "x^2+(" << b << ")x+(" << c << ")=0の解" << std::endl
              << "x=" << (- b + std::sqrt(b * b - 4 * a * c)) / (2 * a) << std::endl
              << "x=" << (- b - std::sqrt(b * b - 4 * a * c)) / (2 * a) << std::endl;
  }
}
474466:04/12/06 00:54:26
>>467さん
すいません、指摘のとうり
同じトコにファイル置いてないだけでした。

ご迷惑をおかけしましたm(__)m
475459:04/12/06 00:57:05
>>469
>pa = pb - pa;
>pb -= pa;
>pa += pb;
これはダメ。pbもpaもポインタだから「pb - pa」の型はsize_tだから。
普通の整数と違ってそういう足し算引き算でポインタ交換するのは面倒くさい。
476285:04/12/06 02:49:28
>>302-304
どうもありがとうございます。
参考にさせていただきました。
#include <iostream.h>#include<cstdlib>
#include<iomanip>#include<fstream>
#include <stdlib.h>#include<string>
using namespace std;
#define Sales_counter 45
struct Sales_struct
{//Begin Sales_struct
char sale_id[12],item_id[4],sale_date[12],customer_id[6];
};//End Sales_struct
void ReportMenu();
void SalesByOrder(Sales_struct [], int);
int main()
{//Begin Main()
ReportMenu();system("PAUSE");return 0;
}//End Main()
477285:04/12/06 02:50:17
void ReportMenu()
{//Begin ReportMenu()
int action,
Sales_Counter;
Customer_struct Customer;
Sales_struct Sales[Sales_counter];
//Ask user to Enter the action
cout<<"\n\n\nREPORT MENU:"<<endl;
cout<<"\n2.Sales by Order Number "
<<"\n\nEnter the number to proceed your action" <<endl;
cin >>action;
//go to function SlaesByOrder()
if(action==2)
SalesByOrder(Sales, Sales_counter);
}//End Report_Menu()
478285:04/12/06 02:53:48
void SalesByOrder(Sales_struct Sales[], int size)
{//Begin SalesByOrder()
cout<<"\nThis is the Sales by order menu : " ;
fstream data("a:\\PROJECT\\Sales.txt", ios::in);
if(data.fail())
{cout <<"\nNo file" <<endl;
system("PAUSE");}
data.getline( (char *) &Sales[Sales_counter].sale_id, sizeof(Sales_struct), ',');
data.getline( (char *) &Sales[Sales_counter].item_id, sizeof(Sales_struct), ',');
data.getline( (char *) &Sales[Sales_counter].sale_date, sizeof(Sales_struct), ',');
data.getline( (char *) &Sales[Sales_counter].customer_id, sizeof(Sales_struct));
while(!data.eof())
{//Begin while Loop
data.getline( (char *) &Sales[Sales_counter].sale_id, sizeof(Sales_struct), ',');
data.getline( (char *) &Sales[Sales_counter].item_id, sizeof(Sales_struct), ',');
data.getline( (char *) &Sales[Sales_counter].sale_date, sizeof(Sales_struct), ',');
data.getline( (char *) &Sales[Sales_counter].customer_id, sizeof(Sales_struct));
cout << "\nDEBUG! : " << Sales[Sales_counter].sale_id
<< Sales[Sales_counter].item_id
<< Sales[Sales_counter].sale_date
<< Sales[Sales_counter].customer_id;
}//End while Loop
char BackMenu ='q';
cout <<"enter Q to back to REPORT MENU" <<endl;
cin >> BackMenu;
if((BackMenu=='q')||(BackMenu=='Q'))
ReportMenu();
}//End SalesByOrder()
479285 DevC++:04/12/06 02:55:42
Sales.txtの中身
Sale_ID, Item_id, Sale_Date, Customer_id,
2004090001, p1, 09/01/2004, 0000
2004092002, p2, 09/01/2004, 0000
2004090003, p1, 09/01/2004, 0001
2004090004, p3, 09/01/2004, 0000
2004090005, p2, 09/01/2004, 0000
2004090006, s1, 09/01/2004, 0001
2004090007, p2, 09/01/2004, 0000
2004100001, p1, 10/01/2004, 0001
480285 DevC++:04/12/06 03:16:50
Sales.txtをSales[Sales_counter]に読み込むまではなんとかなりました。
次はSales_ID順にその日のデータを表示しなくてはなりません。
Sale_ID, Item_id, Sale_Date, Customer_id,←Customer_idの後の「,」は間違いです。本来はありません。

char Date[12];
cout<<"Enter the date mm/dd/yyyy"<<endl;
cin>>Date;

として、その入力された日付分のデータを表示したいのですがどうしたらいいでしょ?
while(!data.eof())
{//Begin while Loop
if(Date=Sales[Sales_counter].sale_date)
{
data.getline( (char *) &Sales[Sales_counter].sale_id, sizeof(Sales_struct), ',');
data.getline( (char *) &Sales[Sales_counter].item_id, sizeof(Sales_struct), ',');
data.getline( (char *) &Sales[Sales_counter].sale_date, sizeof(Sales_struct), ',');
data.getline( (char *) &Sales[Sales_counter].customer_id, sizeof(Sales_struct));
}これだと156 void value not ignored as it ought to be というエラーメッセージがでました。
}//End Whileloop
481285 DevC++:04/12/06 03:23:01
if(Date=&Sales[Sales_counter].sale_date)ですね。
これで出るエラーは 156 incompatible types in assignment of `char (*)[12]' to `char[12]'です。
482465:04/12/06 08:06:19
>>473
ありがとうございましたm(__)m
483デフォルトの名無しさん:04/12/06 11:39:15
C言語でジグザグスキャンを行うには
どのようにしたらよいのでしょうか?
教えてくださいm(__)m
484デフォルトの名無しさん:04/12/06 12:32:56
>>483
JPEGのとか対象が小さいならテーブル使うのがいい
485デフォルトの名無しさん:04/12/06 12:34:53
>m(__)m
↑これを使われると不快感たっぷりになるのはなぜだろう
486デフォルトの名無しさん:04/12/06 12:40:05
ハゲドー
487デフォルトの名無しさん:04/12/06 12:51:06
C言語で
キーボードから数値を入力して、それが偶数の時のみ入力した数値を足し算する。
合計が50になるまで続け、50になったら合計値を出力するプログラムを作ろうとしているのですが、
まだまだ良く理解出来ていないせいで、完成に至りません。
どこもかしこも間違っていると思いますが、添削お願いします。

#include<stdio.h>
main(){

int a,sum;
sum=0;
printf("input number >>\n");
while(sum<=50)
{scanf("&d",&a);
if (a%2==0)
{sum=sum+a;
printf("input again");}
else {printf("input again");}
printf("sum=%d\n",sum);
}
488デフォルトの名無しさん:04/12/06 13:10:15
>>487
致命的にまちがってるのは
scanf("&d",&a); じゃなくてscanf("%d",&a);
あと、最後にカッコが足りない。
489デフォルトの名無しさん:04/12/06 13:27:35
>>487
#include <stdlib.h>
#include <stdio.h>
main()
{
  int sum;
  sum = 0;
  puts("input number >>");
  while (sum <= 50)
  {
    char buf[64];
    int n;
    fgets(buf, sizeof buf, stdin);
    n = atoi(buf);
    if (n % 2 == 0)
    {
      sum += n;
    }
    puts("input again");
  }
  printf("sum = %d\n", sum);
}
490デフォルトの名無しさん:04/12/06 13:46:20
whileの判定式が間違ってるな
それから非数が入力された場合のフローが激しくキモい
491デフォルトの名無しさん:04/12/06 13:46:38
#inclide <stdio.h>
int main(void)
{
short a[]={10,11,12,13};
short *b;
int i;
b=a;
for(i=0;i<4+i++){
printf("a[%d]=%d ",i,a[i]);
printf("&a[%d]=%p ",i,&a[i]);
printf("a+%d=%p ",i,b);
printf("*(a+%d)=%d\n",i,*b);
b++;
}}
このプログラムの配列とポインタ変数をlong型に変更してください。
おねがいします。
492デフォルトの名無しさん:04/12/06 14:00:07
>>491
shortをlongにして、a[i]と*bを表示するprintf()内の書式を%dから%ldに替える。
iとiを表示する%dと%pはそのまま。
493デフォルトの名無しさん:04/12/06 14:10:53
>>492
どうもありがとう
494デフォルトの名無しさん:04/12/06 14:17:50
使用する言語:C

【問題文】
五角形の面積をヘロンの公式を用いて求めるプログラムを作成しなさい。
繰り返し処理を用いて複数回連続処理ででるようにすること。終了条件は自由。

【ヘロンの公式】
面積 = bh/2 又は
ヘロンの公式
面積 =√( S (S-a) (S-b) (S-c) )

ここで S=(a+b+c)/2 とする
● 鈍角三角形でも、同じ

サッパリ分からず困り果てています。どうかよろしくお願いします。
495デフォルトの名無しさん:04/12/06 14:28:23
>>494
五角形?三角形じゃないの?
それから辺の長さを入力させるのか?それとも頂点の座標を入力するのか?
はっきりさせないと。
496デフォルトの名無しさん:04/12/06 14:38:04
>>495さん
本当にすみません。ヘロンの公式は使用しなくても良いです。。
ヘロンの公式って三角形の面積を求める公式ですよね。。(^^;
申し訳ありません。

辺の長さを入力させたいと思います。
497デフォルトの名無しさん:04/12/06 14:44:04
>>496
結局五角形の面積を求めるのか?
498デフォルトの名無しさん:04/12/06 14:46:22
>>481
おまいは比較したいときに代入してどうすると言うのだ。
コンパイラのエラーくらいきちんと読め。
それから文字列の比較は、C++らしくstd::stringに格納して比較演算子で比較するか、
C流にstrcmp()を使うかだ。
おまいの課題の場合は、日付けを数値化しておいて数値として比較してもいいかも知れん。
499デフォルトの名無しさん:04/12/06 14:46:31
はい。「辺の長さを入力させて五角形の面積を求めるプログラム」でお願いします^^;
本当に細かいご指導までありがとうございます。
500デフォルトの名無しさん:04/12/06 14:49:31
こんなん参考にならないかな

五角形
http://www.curri.miyakyo-u.ac.jp/w3-st/kouza/c-lang/044.html
501デフォルトの名無しさん:04/12/06 15:10:55
>>500
ありがとうございます!動かす事ができました。
問題文の中の
>繰り返し処理を用いて複数回連続処理ででるようにすること
というのが自分はよく分からないのですが、
1辺の値を変動させるという事なのでしょうか。。
502デフォルトの名無しさん:04/12/06 15:10:57
見事に苛めに誘導されているなぁ。
辺の長さだけでは五角形の面積は一意に決まらないのに。
元がヘロンの公式だから、>500でFAだろうけど。
503500:04/12/06 15:11:52
>>501
ごめん
オレわからん('A`)
他の人よろー
504デフォルトの名無しさん:04/12/06 15:12:29
ぷっ、2秒差w

>>501
>500のmain()の先頭で、直接代入しているのを止めて、
ループの先頭で入力するようにすればいいと思われ。
但し、5辺ではなくて5辺+対角線2本であることに注意。
505デフォルトの名無しさん:04/12/06 15:16:49
>>504
ありがとうございます。一応頭では分かりました。
しかしどう書けば良いのかわかりません^^;

度々申し訳ないのですが、できればその処理をソースで書いていただけないでしょうか。。
506デフォルトの名無しさん:04/12/06 15:26:11
(; ・`д・´) !? (`・д´・ (`・д´・ ;) ナ,ナンダッテ−!
507デフォルトの名無しさん:04/12/06 15:29:02
>>505
scanf
508デフォルトの名無しさん:04/12/06 15:42:53
>>398
むかーしつくったのがあるよ
ほしけりゃさらすけど需要ないかな?
509デフォルトの名無しさん:04/12/06 16:01:08
>>505 あとは適当に改造して
int main()
{
double a, b, c, d, e, f, g;
double s1,s2,s3,s;
int ans;

while(1){
printf("input a:"); scanf("%lf", &a);
printf("input b:"); scanf("%lf", &b);
printf("input c:"); scanf("%lf", &c);
printf("input d:"); scanf("%lf", &d);
printf("input e:"); scanf("%lf", &e);
printf("input f:"); scanf("%lf", &f);
printf("input g:"); scanf("%lf", &g);

s1=area(a,b,c);
s2=area(b,d,e);
s3=area(e,f,g);
s=s1+s2+s3;

printf("五角形の面積は%10.2f\n",s);
printf("続けますか?(yes = 0 / no = 1):");
scanf("%d", &ans);
if (ans == 1) break;
putchar('\n');
}
return 0;
}
510デフォルトの名無しさん:04/12/06 17:07:58
これって真面目にやると奥が深いねぇ。
長さが不適切だとsqrt()でエラーになるとか、
通常、対角線が得られていることは少ないだろうから寧ろ座標を入れた方がいいとか、
どっちみちヘロンの公式を単純に利用したんじゃ凹五角形に対応できないとか…
それにしても、bとeを対角線にしているってのもわかりにくいね。
  a
 _ f
c|/|>
  ̄ g
  d
こんな感じか。
511デフォルトの名無しさん:04/12/06 17:14:01
#include <cassert>
#include <iostream>
using namespace std;
class Set{

public:
Set() : size(0) {} // Default constructor.
Set(int data0[], int size0); // Initializing constructor.

bool has( int ) const; // membership checker
void join( int ); // membership maker -- union with one more int.
void assign( const Set& ); // assignment

friend Set setIntersect(const Set&, const Set&);
friend Set setUnion(const Set&, const Set&);

void get( istream& ); // stream input
void put( ostream& ) const; // stream output

private:
static const int MAX_SIZE = 20;
int data[ MAX_SIZE ];
int size;
};
512デフォルトの名無しさん:04/12/06 17:15:08
bool Set::has( int value ) const {
bool answer = false;
for (int i=0; i< size && !answer; ++i)
if (data[i] == value )
answer = true;
return answer;
}

void Set::join( int value ) { // Corrected 10:15am 2/20/03
if ( size < MAX_SIZE ){
if ( !has(value) )
data[size++] = value ;
}
else
cerr << "Error in Set::join(): "
<< "storage size limit exceeded.\n";
}

void Set::assign( const Set& rhs ){ // assignment
size = rhs.size;
for (int i = 0; i < size; ++i)
data[i] = rhs.data[i];
}
513デフォルトの名無しさん:04/12/06 17:15:35
void Set::get( istream& is ){
is >> size;
if ( size > 0 && size <= MAX_SIZE ){
for (int i = 0; i < size; ++i)
is >> data[i];
}
else
cerr << "Set::get() input error: set size out of range.\n";
}

void Set::put( ostream& os ) const { // Note: not symmetric w.r.t. get().
for (int i = 0; i < size; ++i)
os << data[i] << " ";
}

Set setIntersect(const Set& A, const Set& B){
// Quadratic-time solution for unsorted sets
Set C;
for (int i = 0; i < A.size; ++i)
if (B.has( A.data[i] ))
C.join( A.data[i] );
return C;
}
514デフォルトの名無しさん:04/12/06 17:16:12
void menu(){
cout << "Enter \n"
<< " E to ENTER set A or set B by keyboard input \n"
<< " V to VIEW all sets \n"
<< " R to REPLACE a set \n"
<< " I to find the INTERSECTION of A and B \n"
<< " U to find the UNION of A and B \n"
<< " Q to QUIT \n" << endl;
}
515デフォルトの名無しさん:04/12/06 17:16:35
void prompt() { cout << "\nEVRIUQ > "; }

int main(){
Set A,B,C;
menu();
char ch;
do{
prompt();
cin >> ch;
switch (ch){
case 'e': case 'E': {
cout << "A or B? ";
cin >> ch;
if (ch == 'A') A.get(cin);
else if (ch == 'B') B.get(cin);
break;
}
case 'v': case 'V':
cout << " A = "; A.put(cout); cout << endl;
cout << " B = "; B.put(cout); cout << endl;
cout << " C = "; C.put(cout); cout << endl;
case 'i': case 'I':
C.assign( setIntersect(A, B) );
}
} while (ch != 'q' && ch != 'Q' );
return 0;
}
516デフォルトの名無しさん:04/12/06 17:25:06
どなたか助けて下さい

問一 (Cで)
キーボードから入力した整数型の配列とその配列の要素数を引数として取り、最大の要素に対応する添え字を
返す関数及びプログラムを作成せよ。ただし、最大の要素が複数ある場合には、一番小さい値の添え字を、
又、この関数の配列としの要素数として1未満の数が渡された場合には、-1を返すようにせよ。

例1         例2
1          4
3          2
5          3
2          4

結果=2        結果=1

問二
問一で作られたプログラムの考え方(アルゴリズム、方針)を説明せよ。

問二は板違いかもしれないので強くは要求しません。
よろしくお願いします。
517デフォルトの名無しさん:04/12/06 17:26:41
私達は弱くても要求されません
518デフォルトの名無しさん:04/12/06 17:26:49
setUnion(...) functionをthe fixed-length-array versionで作れってことなんだけど、
クラスって難しい。。。
助けてください。
519デフォルトの名無しさん:04/12/06 17:35:35
要求されたくありません
520デフォルトの名無しさん:04/12/06 17:55:38
>>510
曙が袋叩き
521デフォルトの名無しさん:04/12/06 18:09:28
522505:04/12/06 18:25:03
答えてくださった皆様ありがとうございました!
無事に解決しましたー。

これからはこのスレで答える側になれるようがんばりたいと思います。
本当にありがとうございました。
523デフォルトの名無しさん:04/12/06 18:25:53
>>522
当分それは無理そうだから、いらん事は書かなくていいよ。
524デフォルトの名無しさん:04/12/06 18:26:55
>>516
# include <limits.h>
# include <stdio.h>
# include <stdlib.h>
int min_index_of_max(int array[], int size) {
    int max = INT_MIN;
    int ret;
    int i;
    if(size < 1) return -1;
    for(i = 0; i < size; i++)
        if(array[i] > max) {
            max = array[i];
            ret = i;
        }
    return ret;
}
int main(void) {
    int size = 0;
    int capacity = 10;
    int *data = (int *)malloc(sizeof(int) * capacity);
    int state;
    for(state = scanf("%d", data); state != -1 && state != 0; state = scanf("%d", data + size)) {
        size++;
        if(size == capacity) {
            capacity *= 2;
            data = (int *)realloc(data, sizeof(int) * capacity);
        }
    }
    printf("\n結果:%d\n", min_index_of_max(data, size));
    free(data);
    return 0;
}
525デフォルトの名無しさん:04/12/06 18:29:27
C宿題とJava宿題比べるとC宿題スレはなんでこんなにレベルが低いのですか?
526デフォルトの名無しさん:04/12/06 18:31:03
>>516
こんなのでいいのかな。もし間違ってたらゴメン。(例2の結果が正解がよくわからないけど。)

#include <stdio.h>

int func(const int x[], int num){
int i, temp, ans = 0;
temp = x[0];

if (num < 1) return -1;

for (i = 1; i < num - 1; i++){
if (temp < x[i]){
ans = i;
}
}
return ans;
}

int main(){
int i, ans;
int array[4];

for (i = 0; i < 4; i++){
scanf("%d", &array[i]);
}

/* 第2引数(要素数)を0にした場合、-1が返ってくる */
ans = func(array, 4);
printf("結果=%d\n", ans);
return 0;
}
527526:04/12/06 18:31:55
被ってしまった
526は無かった事に
528デフォルトの名無しさん:04/12/06 19:22:55
>>523
あなたもな。そして俺も。
529デフォルトの名無しさん:04/12/06 19:28:54
>>528
さらに俺も。
530デフォルトの名無しさん:04/12/06 19:33:24
俺はとてもこのスレで答える実力はないが、無理してデタラメな解答を
書いて、出題者を困らせてみようと思う。皆さんよろしく。
531デフォルトの名無しさん:04/12/06 19:34:20
(display "俺はとてもこのスレで答える実力はないが、無理してデタラメな解答を書いて、出題者を困らせてみようと思う。皆さんよろしく。")
532511-515,518:04/12/06 19:50:24
今、必死こいてやってんだけど、・・・。
誰か助けてちょ。m(_ _)m
533デフォルトの名無しさん:04/12/06 19:54:18
LisperかSchemerか知らんがどっか行け
534デフォルトの名無しさん:04/12/06 19:54:40
<algorithm>のstd::set_union()を使うか、そのソースを参考にしなされ。
535ハッシュ法1:04/12/06 21:19:31
ハッシュ法を作成しています。
1000から2000個程のデータをハッシュ表に格納して衝突回数を調査するという課題を行っているのですが、
データ総数によってエラーが出てしまい、どうしようもなく困っています。
データが100程度ならなんとか、オペランドエラーが出なくなりますが、
総数を多くすると、エラーが出現します。
下にプログラムを貼り付けますので、良くない所をどんどん指摘、御教授
下さい。宜しくお願い致します。

エラー画面:行番号134:初期値エラー
      行番号136:'!='の演算項が不当
      行番号70:'='の左辺値オペランドが不当
ハッシュ表に格納するデータは[数字 文字列]がランダムに格納されているもので、データ総数は1000程度です。
環境はWindows Me、Ultra-C Pro2を使用しています。
536ハッシュ法2:04/12/06 21:21:07
データ例:
978 rejoice
743 duplicate
205 lantern
254 shed
631 chop
93 livestock
918 network
380 milestone
239 advocate
212 visibility
88 label
489 sociobiology
251 cram
932 synchronize
187 interconnect
537ハッシュ法2:04/12/06 21:25:35
<pre>/* ハッシュ法 */
/* ハッシュ関数:除算法(division method) */

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

#define HashSize 150 /*ハッシュ表サイズ*/
#define NameSize 20
#define TableSize 150

/*--ハッシュ表に格納するデータの構造体--*/
typedef struct cell{
int number;
char name[NameSize];
struct cell *next;
} Data;
538ハッシュ法3:04/12/06 21:28:36

Data *hashtable[HashSize]; /*ハッシュ表*/
FILE *fp;

void MakeHashTable(void);
void Chaining(Data *, unsigned int);
unsigned int Hash(char *);
void PrintHash(void);
void PrintHashBunsan(void);
void Free(void);
539ハッシュ法4:04/12/06 21:29:47
int main(void)
{
MakeHashTable();
PrintHash();
PrintHashBunsan();
Free();
fclose(fp);
return(0);
}
540ハッシュ法4:04/12/06 21:30:52
void MakeHashTable()
{
Data *temp;
int i;
for(i=0; i<HashSize; i++)
hashtable[i]=NULL;
if((fp=fopen("word.txt", "r"))==NULL){
printf("エラー\n");
exit(1);
}
for(;;){
temp=(Data *)malloc(sizeof(Data));
if(fscanf(fp, "%d", &temp->number)!=EOF){
fscanf(fp, "%s", temp->name);
temp->next=NULL;
Chaining(temp, Hash(temp->name));
free(temp);
}
else{
free(temp);
break;
}
}
}
541ハッシュ法5:04/12/06 21:33:11
void Chaining(Data *temp, unsigned int f)
{
Data *s;
if(hashtable[f]==NULL){
hashtable[f]=(Data *)malloc(sizeof(Data));
*hashtable[f]=*temp;
}
else{
s=hashtable[f];
while(s->next)
s=s->next;
s->next=(Data *)malloc(sizeof(Data));
*s->next=*temp;
s->next->next=NULL;
}
}

/*--ハッシュ関数:除算法(division method)--*/
unsigned int Hash(char *buf)
{
unsigned int value;
for(value=0; *buf!='\0'; buf++)
value=*buf+value*11;
return value%HashSize; /*valueをHashSizeで割った剰余(valueとHashSizeは整数でなければならない)*/
}
542ハッシュ法4:04/12/06 21:35:43
void Chaining(Data *temp, unsigned int f)
{
Data *s;
if(hashtable[f]==NULL){
hashtable[f]=(Data *)malloc(sizeof(Data));
*hashtable[f]=*temp;
}
else{
s=hashtable[f];
while(s->next)
s=s->next;
s->next=(Data *)malloc(sizeof(Data));
*s->next=*temp;
s->next->next=NULL;
}
}

/*--ハッシュ関数:除算法(division method)--*/
unsigned int Hash(char *buf)
{
unsigned int value;
for(value=0; *buf!='\0'; buf++)
value=*buf+value*11;
return value%HashSize; /*valueをHashSizeで割った剰余(valueとHashSizeは整数でなければならない)*/
}
543ハッシュ法4:04/12/06 21:36:27
/*--ハッシュ表中の全データを表示--*/
void PrintHash(void)
{
Data *s;
int i;
for(i=0; i<HashSize; i++){
printf("[%d]\t", i);
s=hashtable[i];
while(s){
printf("%4d %-16s\t -> ", s->number, s->name);
s=s->next;
}
printf("(NULL)\n");
}
}

/*--ハッシュ表のクリーンアップ--*/
void Free(void)
{
int i;
Data *s, *t;
for(i=0; i<HashSize; i++){
s=hashtable[i];
while(s){
t=s->next;
free(s);
s=t;
}
}
}
544ハッシュ法4:04/12/06 21:37:00
/*--ハッシュ表中の全データを表示--*/
void PrintHash(void)
{
Data *s;
int i;
for(i=0; i<HashSize; i++){
printf("[%d]\t", i);
s=hashtable[i];
while(s){
printf("%4d %-16s\t -> ", s->number, s->name);
s=s->next;
}
printf("(NULL)\n");
}
}
545ハッシュ法5:04/12/06 21:37:40
void PrintHashBunsan(void)
{
int i, total=0;
int table[TableSize];

for(i=0; i<TableSize; i++)
table[i]=0;
for(i=0; i<HashSize; i++){
Data *ptr=hashtable[i];
int n=0;
if(*ptr!=NULL){
for(; *ptr!=NULL; *ptr=*ptr->next)
n++;
}
total+=n;
if(n<TableSize){
table[n]++;
}
else{
fprintf(stderr, "table size error%d\n", n);
}
}
for(i=0; i<TableSize; i++){
if(!(i%8))
putchar('\n');
printf("%3d:%3d", i, table[i]);
}
printf("\n 合計 %d 個\n", total);
}


</pre>
546デフォルトの名無しさん:04/12/06 21:37:45
Cでこの課題のプログラム作ってくださいm(__)m
英語の文章に出現する単語の中で、文字数が最も多い単語を出力して終了するプログラムを作成せよ。
入力データには英文字、スペースのみが含まれているものとし、単語とはスペースで区切られた連続する英文字の列とする。
文章の文字数は80文字以下で、一つの単語の文字数は32文字以下とする。
最長の文字数を持つ単語は文中にただ一つだけ存在するものとする。
547ハッシュ法5:04/12/06 21:38:37
以上です。至らないところがあったら、申し訳ありません。
548デフォルトの名無しさん:04/12/06 21:48:49
>>547
貼ったのはご苦労だが>>372のアップローダも使え。
すぐ消えちまうが、ファイル全体を貼れるはず。
どれがエラー行かわかんねーよ。




549516:04/12/06 21:58:09
>>524
>>526

図々しい問題にも関わらず答えて頂いたおかげで、無事課題を終わらせる事が出来ました。
物凄く助かりました。本当にありがとうございました。
550ハッシュ法5:04/12/06 22:03:39
ハッシュ法プログラムをアップロードしました。
改行が出来なくてすいません
551ハッシュ法5:04/12/06 22:04:13
552デフォルトの名無しさん:04/12/06 22:06:58
>>551
嫌がらせかw
553ハッシュ法5:04/12/06 22:10:04
ごめんなさい。
ちゃんと改行できたやつを、アップロードしました。
554デフォルトの名無しさん:04/12/06 22:18:17
助けてください。
OSはUNIXでc言語でお願いします。期日は早めでお願いします。
1.c言語を用いてスロットマシーンをつくってください。
2.構造体利用を用いたプログラムをつくって下さい。
以上の二つです。
555デフォルトの名無しさん:04/12/06 22:18:38
>>553
CodeGuardかけたら実行時エラー出るぞ。fscanf()の使い方がおかしいらしい。
word.txtは>>536のをそのまま使った。

Error 00001. 0x820000 (スレッド 0x0C50):
Function failure:
関数呼び出し:
fscanf(0x004108EC, 0x004100B7 ["%d"], ...)=0x0 [0]

呼び出し履歴:
0x00401318(=hash1.exe:0x01:000318) hash1.c#51
0x0040123D(=hash1.exe:0x01:00023D) hash1.c#31
0x0040D14A(=hash1.exe:0x01:00C14A)

------------------------------------------
Error 00002. 0x100400 (スレッド 0x0C50):
不正なメモリの アクセス : アドレス 0x00000000 から 128
バイトを参照しました。.
呼び出し履歴:
0x00401719(=hash1.exe:0x01:000719) hash1.c#132
0x00401247(=hash1.exe:0x01:000247) hash1.c#33
0x0040D14A(=hash1.exe:0x01:00C14A)

------------------------------------------
Error 00003. 0x400000 (スレッド 0x0C50):
Exception 0xC0000005: Access violation at 0x0.
呼び出し履歴:
0x0040172F(=hash1.exe:0x01:00072F) hash1.c#132
0x00401247(=hash1.exe:0x01:000247) hash1.c#33
0x0040D14A(=hash1.exe:0x01:00C14A)

------------------------------------------
556デフォルトの名無しさん:04/12/06 22:19:02
>>554
>期日は早めでお願いします。
うざwww
557デフォルトの名無しさん:04/12/06 22:20:51
いや、fscanf()が失敗しているのは正常なのか。
何だろこの不正なメモリのアクセスってのは。
多分malloc()で確保してないメモリアドレスでもアクセスしてるんじゃない?
558デフォルトの名無しさん:04/12/06 22:21:07
>>554
マルチ氏ね
559デフォルトの名無しさん:04/12/06 22:31:40
助けてください。
OSはUNIXでc言語でお願いします。期日は早めでお願いします。
1.c言語を用いてスロットマシーンをつくってください。
2.構造体利用を用いたプログラムをつくって下さい。
以上の二つです。
560デフォルトの名無しさん:04/12/06 22:34:31
助けてください。
OSはUNIXでc言語でお願いします。期日は早めでお願いします。
1.c言語を用いてスロットマシーンをつくってください。
2.構造体利用を用いたプログラムをつくって下さい。
以上の二つです。

いい加減にお前ら答え書かんかい!ヴォケ。
561デフォルトの名無しさん:04/12/06 22:39:00
int main()
{
  struct baka{
    int shit;
  } foolish;
  foolish.shit = 0;

  return foolish.sit;
}
562560:04/12/06 22:41:03
>>561
ああ?そんな答えで俺が満足するとでも思ってるんかい?
563デフォルトの名無しさん:04/12/06 22:44:43
この季節になると年度末の課題をぎりぎりになって提出しようとする
アフォが増えて困る。
564デフォルトの名無しさん:04/12/06 22:45:00
なんか他スレでも同じの見ちゃったよ
565デフォルトの名無しさん:04/12/06 22:44:29
課題を作成する途中で詰まったので先達や識者の知恵をお借りしようかと思います。
※ C++ 
※ 構造体使用不可とのこと

学生3人の国語・英語・数学のそれぞれのテストの点数を読み込んで
1:学生個人の平均点
2:科目の平均点
3:評価(平均80以上:A 60以上80未満:B 60未満:C)
を計算する。
そのうえで、以下のように表として表示せよ。

氏名     国語   英語   数学   平均点   評価 
-------------------------------------------------
 

-------------------------------------------------
科目平均

といった問題です。

力技での表示はできたのですが、自分で関数を設定したり多次元配列などを使ったりして
ソースをよりスマートにするにはどうしたらよいでしょうか?
#defineで最初に学生の人数や科目数を設定し、汎用性をもたせるように、とも言われました。

お願いします。
566デフォルトの名無しさん:04/12/06 22:45:39
課題を作成する途中で詰まったので先達や識者の知恵をお借りしようかと思います。
※ C++ 
※ 構造体使用不可とのこと

学生3人の国語・英語・数学のそれぞれのテストの点数を読み込んで
1:学生個人の平均点
2:科目の平均点
3:評価(平均80以上:A 60以上80未満:B 60未満:C)
を計算する。
そのうえで、以下のように表として表示せよ。

氏名     国語   英語   数学   平均点   評価 
-------------------------------------------------
 

-------------------------------------------------
科目平均

といった問題です。

力技での表示はできたのですが、自分で関数を設定したり多次元配列などを使ったりして
ソースをよりスマートにするにはどうしたらよいでしょうか?
#defineで最初に学生の人数や科目数を設定し、汎用性をもたせるように、とも言われました。

お願いします。
567デフォルトの名無しさん:04/12/06 22:46:07
課題を作成する途中で詰まったので先達や識者の知恵をお借りしようかと思います。
※ C++ 
※ 構造体使用不可とのこと

学生3人の国語・英語・数学のそれぞれのテストの点数を読み込んで
1:学生個人の平均点
2:科目の平均点
3:評価(平均80以上:A 60以上80未満:B 60未満:C)
を計算する。
そのうえで、以下のように表として表示せよ。

氏名     国語   英語   数学   平均点   評価 
-------------------------------------------------
 

-------------------------------------------------
科目平均

といった問題です。

力技での表示はできたのですが、自分で関数を設定したり多次元配列などを使ったりして
ソースをよりスマートにするにはどうしたらよいでしょうか?
#defineで最初に学生の人数や科目数を設定し、汎用性をもたせるように、とも言われました。

お願いします。
568デフォルトの名無しさん:04/12/06 22:46:48
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct UNCO{
int money;
int wwwww;
}kuso;

void xxx(void){
puts("キタ━━━━(゚∀゚)━━━━!!"); getchar();
puts("     ∧_∧ ミ ギャーッハッハッハッ!");
puts(" o/⌒(. ;´∀`)つ");
puts("  と_)__つノ  ☆ バンバン "); getchar();
}
569デフォルトの名無しさん:04/12/06 22:46:56
助けてください。
OSはUNIXでc言語でお願いします。期日は早めでお願いします。
1.c言語を用いてスロットマシーンをつくってください。
2.構造体利用を用いたプログラムをつくって下さい。
以上の二つです。
570デフォルトの名無しさん:04/12/06 22:47:11
main(){
int a,b,c;
kuso.money = 100; kuso.wwwww = 0;
srand(time(0));
while(kuso.money > 0){
kuso.money -= 10;
printf("money:%d (・∀・):%d\n", kuso.money, kuso.wwwww);
if (rand() % 10 == 0){
a = 7; b = 7; c = 7;
} else {
a = rand()%9+1; b = rand()%9+1; c = rand()%9+1;
}
getchar(); printf("1つ目は〜?www→ %d ",a);
getchar(); printf("2つ目は〜?www→ %d ",b);
if (a == b){
printf("あたるかもよ〜すごいねえwwww");
}
getchar(); printf("3つ目は〜?www→ %d\n",c);
if (a == b && b == c){
xxx();
kuso.money += 100; kuso.wwwww++;
} else {
puts("うんこ!!!!!\n\n");
}
}
puts("へたくそやめれ");
return 0;
}
571デフォルトの名無しさん:04/12/06 22:47:13
課題を作成する途中で詰まったので先達や識者の知恵をお借りしようかと思います。
※ C++ 
※ 構造体使用不可とのこと

学生3人の国語・英語・数学のそれぞれのテストの点数を読み込んで
1:学生個人の平均点
2:科目の平均点
3:評価(平均80以上:A 60以上80未満:B 60未満:C)
を計算する。
そのうえで、以下のように表として表示せよ。

氏名     国語   英語   数学   平均点   評価 
-------------------------------------------------
 

-------------------------------------------------
科目平均

といった問題です。

力技での表示はできたのですが、自分で関数を設定したり多次元配列などを使ったりして
ソースをよりスマートにするにはどうしたらよいでしょうか?
#defineで最初に学生の人数や科目数を設定し、汎用性をもたせるように、とも言われました。

お願いします。
572デフォルトの名無しさん:04/12/06 22:47:30
多重してしまいました。申し訳ない
573デフォルトの名無しさん:04/12/06 22:48:20
課題を作成する途中で詰まったので先達や識者の知恵をお借りしようかと思います。
※ C++ 
※ 構造体使用不可とのこと

学生3人の国語・英語・数学のそれぞれのテストの点数を読み込んで
1:学生個人の平均点
2:科目の平均点
3:評価(平均80以上:A 60以上80未満:B 60未満:C)
を計算する。
そのうえで、以下のように表として表示せよ。

氏名     国語   英語   数学   平均点   評価 
-------------------------------------------------
 

-------------------------------------------------
科目平均

といった問題です。

力技での表示はできたのですが、自分で関数を設定したり多次元配列などを使ったりして
ソースをよりスマートにするにはどうしたらよいでしょうか?
#defineで最初に学生の人数や科目数を設定し、汎用性をもたせるように、とも言われました。

お願いします。
574デフォルトの名無しさん:04/12/06 22:49:01
>>573
うざいよ。何回もポストするな。
575デフォルトの名無しさん:04/12/06 22:52:45
オシエテクン養成してるあんたらの方がよっぽど鬱陶しいんだよ
576デフォルトの名無しさん:04/12/06 22:54:47
>>575
そう思うならこのスレ読まなきゃいいのに( ´゚д゚`)
577デフォルトの名無しさん:04/12/07 00:01:59
頭文字を読み込み、与えられた名前の中からその頭文字を含む名前を表示せよ。
なければそのむね表示せよ。


という問題で、下記のようにプログラムを書いたところ、Eを入力すると、
Eluza Eandy Emy Enn
と表示されてしまいました・・・
考えても解りませんでした、教えてくださいm(- -)m




#include <stdio.h>
int main(void)
{
static char *name[]={"Eluza","Candy","Emy","Ann"};
int i,j;

printf("input initial\n");

j=getchar();

for (i=0;i<4;i++)
if(name[i][0]=j)
printf("%s\n",name[i]);
else
printf("no name\n");

}
578デフォルトの名無しさん:04/12/07 00:04:37
>>577
if(name[i][0]==j)
579577:04/12/07 00:21:57
>>578
凡ミスでした…THX
しかしこんどは

Eluza
no name
Emy
no name

と表示されてしまいました
分岐の仕方がわかりません・・・
580367:04/12/07 00:26:51
>>370
ハイパーデンジャラス・レインボー亀レスですが、助かりました…
お礼を言うのが遅くなって申し訳ありませんでした。
581デフォルトの名無しさん:04/12/07 00:26:58
>>579

#include <stdio.h>

int main(void)
{
static char *name[]={"Eluza", "Candy", "Emy", "Ann"};
int i, j, flag = 0;

printf("input initial\n");

j = getchar();

for (i = 0; i < 4; i++)
if (name[i][0] == j) {
printf("%s\n", name[i]);
flag = 1;
}

if (flag == 0)
printf("no name\n");
return 0;
}
582デフォルトの名無しさん:04/12/07 00:29:32
{
sw=0;
if(name[i][0]==j)
{
printf("%s\n",name[i]);
sw=1;
}
}
if(sw==0)
...
583デフォルトの名無しさん:04/12/07 00:38:19
2分半も遅かった
584デフォルトの名無しさん:04/12/07 00:50:23
>自分で関数を設定したり多次元配列などを使ったりしてソースをよりスマートにするにはどうしたらよいでしょうか?
一般的には「リファクタリング」
585デフォルトの名無しさん:04/12/07 01:13:48
>#defineで最初に学生の人数や科目数を設定し、汎用性をもたせる

汎用性、か?(保守性でねーの?)
586デフォルトの名無しさん:04/12/07 04:45:42
istream& getline(istream& ins, string& strVar);
っていう関数が、いまいち良くわかんないんですけど、
istreamをデータタイプみたいに、書いて、このinsって何?
587ポインタ初心者:04/12/07 12:45:56
#include <stdio.h>
void main(void)
{
int a[10]={38, 52, 16, 45, 73,
97, 63, 25, 81, 68};/* 配列変数a の型宣言*/
void disp_data(int, int*); /*関数disp_data()の型宣言*/
disp_data(10, a);
}
/* 配列データを画面に表示する関数*/
void disp_data(int len,int *c)
{
int i;
for(i=0; i<len; i++)
printf("c+%d=%d *(c+%d)=%d c[%d]=%d\n",i,c+i,i,*(c+i),i,c[i]);
}
このプログラムを実行し,どんな形で呼び出し側と関数側の間で配列データを
やり取りしているのかを説明してください!
呼び出し側      関数側
  10      -->   len(配列データの数)
  a(先頭番地) -->   c (ポインタ型変数)
となっているのでしょうか?説明して下さい!
588デフォルトの名無しさん:04/12/07 13:00:39
>>586
insは仮引数名。
getline自体はこんな感じで使う。
#include <iostream>
#include <string>
using namespace std;
int main()
{
  string str;
  getline(cin, str);
  cout << str << endl;
}
589デフォルトの名無しさん:04/12/07 13:24:27
getline は分かるんだけど、このistreamをデータタイプのように使ってるのってどういうわけかなってわかんなくて。
590デフォルトの名無しさん:04/12/07 13:34:18
ウィンドウを作成して、リサイズできるようにするには
どうしたらいいでしょうか?
591デフォルトの名無しさん:04/12/07 13:39:15
マルチでアウト!
592デフォルトの名無しさん:04/12/07 13:51:03
>>589
istreamはデータ型だ。insはistreamへの参照型となる。
593デフォルトの名無しさん:04/12/07 13:51:30
>>589
もしかしたらstd::istreamではなくてstd::ifstreamかもしれんし、std::istringstream
かもしれん。
594デフォルトの名無しさん:04/12/07 17:58:39
C言語で、ファイルから英文を読み込み単語とその数を表示するプログラムを作ります。

出力例

Output:Word [frequency]
in [1]
a [3]
program [1]
of [1]
.
.
.
.
End

お願いします。
595594:04/12/07 19:02:31
>>594
cygwinを使います。
596デフォルトの名無しさん:04/12/07 19:12:48
>>594-595
そうなんですか。
597从*・ 。.・) ◆SayuminPM. :04/12/07 19:21:18
>>594 かってに cygwin つかっててね
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct Word { char* word; int count; struct Word* left, * right; };
struct Word* push_word(char* str, struct Word* node) {
int cond;
if (node == NULL) {
node = (struct Word*) malloc(sizeof(struct Word));
node->word = strdup(str); node->count = 1;
node->left = node->right = NULL;
}
else if ((cond = strcmp(str, node->word)) == 0) { (node->count)++; }
else if (cond < 0) { node->left = push_word(str, node->left); }
else { node->right = push_word(str, node->right); }
return node;
}
void print_all(struct Word* node) {
if (node) {
print_all(node->left);
printf("%s [%d]\n", node->word, node->count);
print_all(node->right);
}
}
int main(void) {
char buf[20]; struct Word* t = NULL; FILE* fp = fopen("hoge.txt", "r");
while (fscanf(fp, "%20s", buf) > 0) { t = push_word(buf, t); }
printf("Output:Word [frequency]\n"); print_all(t); printf("End\n");
return 0;
}
598デフォルトの名無しさん:04/12/07 19:26:31
ひたすら1行で済ませようとする香具師だな
単なる嫌がらせか、これが>>597のコーディングスタイルなのか…
599597:04/12/07 19:30:46
>>598
(´・ω・`)ショボーン
改行大杉で投稿できなかったから...
そんなこと言わなくてもぉ
600594:04/12/07 19:39:53
>>597
ひでえな。これを俺にコンパイルしろと?
601デフォルトの名無しさん:04/12/07 19:41:03
>>600
> ひでえな。これを俺にコンパイルしろと?

コンパイラがコンパイルするんじゃ?
602デフォルトの名無しさん:04/12/07 19:47:35
>>601
言葉の綾は正直ツマラン
603デフォルトの名無しさん:04/12/07 21:09:27
5個の数字を入力して平均値・最大値・最小値をそれぞれ表示するプログラムを作れ
604デフォルトの名無しさん:04/12/07 21:22:06
>>603
#include <stdio.h>
#define SIZE 5
int
main(void)
{
double A[SIZE], min, max, sum = 0;
int i;
for (i = 0; i < SIZE; i++) { scanf("%lf", A + i); }
for (min = max = A[0], i = 0; i < SIZE; i++) {
sum += A[i];
if (min > A[i]) { min = A[i]; }
if (max < A[i]) { max = A[i]; }
}
printf("%lf\n%lf\n%lf\n", sum / SIZE, max, min);
return 0;
}
605デフォルトの名無しさん:04/12/07 21:24:29
>>604
min,maxが間違っていると思うのは俺だけか?
606605:04/12/07 21:25:39
早とちりスマソ
607デフォルトの名無しさん:04/12/07 21:25:56
UNIX上で、”ディレクトリを再帰的に調べ、引数と同名のファイルを探し、
発見したファイルの以下の情報を表示
・絶対パス
・getcnd
・realpath
・iノード番号
・アクセス許可情報
・割り当てられたブロック数
・最終ファイル更新時刻

コマンド引数は、1:ファイル名、2:ディレクトリ名、
無指定の場合はカレントディレクトリ”

という、課題が与えられました、情報を表示するのはできたのですが、ファイル等を
調べるのがわかりません。
また、それをつかって情報を表示する方法にもいきづまってしましました。
どなたか、アドバイスをください。お願いします。
608名無し募集中。。。:04/12/07 21:32:31
>>607
#include <stdio.h>
#include <stdlib.h>

int
main(void)
{
if (system("echo マルチしね") < 0) { fprintf(stderr, "マルチしね\n"); }
return 0;
}
609デフォルトの名無しさん:04/12/07 21:32:35
すみません。誠に失礼でしたが、1つ情報を付け忘れました。
言語はC言語です。
610デフォルトの名無しさん:04/12/07 21:32:53
>>605
thx
611デフォルトの名無しさん:04/12/07 21:34:03
3インデントがはやってるの?
612デフォルトの名無しさん:04/12/07 21:41:41
>19
遅くなってすみま。
数理計画法のシンプレックス法を使うんじゃない?
613デフォルトの名無しさん:04/12/07 21:50:37
お願いします。
・c++
・文字配列
・forではなくwhileを使用
・cout,cinを使用
の条件で
1、キーボードからアルファベットの文字列を入力し、
それが何文字か字数をカウントするプログラム。
例:キーボードからbookと入力したら4と表示させる。
2、キーボードから文字列を入力し、次に1字入力し、
その時が文字列の中にいくつあるかを求めるプログラム。
例:はじめにキーボードからbookと入力し、次にoと入力した場合、
oは2つなので2と表示させる。

お願いします。
614デフォルトの名無しさん:04/12/07 21:55:16
>>604
8行目の
>{ scanf("%lf", A + i); }
は何を表しているのでしょうか?
615デフォルトの名無しさん:04/12/07 21:55:43
>>613
1と2は別?
STL は使って良いの?
1はアルファベット以外の入力はあるの?ないの?考えなくて良いの?
616デフォルトの名無しさん:04/12/07 21:57:10
>>614
A[i] と *(A + i)
は同じ
&A[i] と A + i
は同じ
617デフォルトの名無しさん:04/12/07 22:12:14
>613
1.
string str;
cin >> str;
cout << str.length() << endl;
2.
string str;
char c;
cin >> str >> c;
cout << str.find(c)+1 << endl;

こんなんでいいか?
618デフォルトの名無しさん:04/12/07 22:13:04
あっ


whileつかってねえ・・
619デフォルトの名無しさん:04/12/07 22:16:24
> cout << str.find(c)+1 << endl;
( ゚д゚)ポカーン
620デフォルトの名無しさん:04/12/07 22:22:11
string::size_typeはsize_tだから問題ないかと
621デフォルトの名無しさん:04/12/07 22:22:53
y= 1(x>1) x(|x|≦1) -1(x<-1) 
の値を-5≦x≦5の範囲で0.1刻みで計算し、結果をファイルに出力する
プログラムを書け。

Cでお願いします。
for文3つ使ってfopen fcloseをつかうってのは分かるのですが・・・
622デフォルトの名無しさん:04/12/07 22:33:07
>>621
#include <stdio.h>

double
f(double x)
{
return ((x > 1) ? 1 : ((x < -1) ? -1 : x));
}

int
main(void)
{
double x;
FILE* fp = fopen("out.txt", "w");
for (x = -5.0; x <= 5.0; x += 0.1) { fprintf(fp, "%.1lf %.1lf\n", x, f(x)); }
fclose(fp);
return 0;
}
623デフォルトの名無しさん:04/12/07 22:37:06
>>613
その1。cout,cinはちゃんと使用しているからな。
#include <iostream>
#include <cstddef>
using std::cout;
using std::cin;
int main()
{
  char Buf[1024];
  cin >> Buf;
  std::size_t i = 0;
  while (Buf[i])
    i++;
  cout << i << std::endl;
  return 0;
}
624デフォルトの名無しさん:04/12/07 22:40:13
>>623
YOU
using namespace std;
しちゃいなYO!
625デフォルトの名無しさん:04/12/07 22:41:49
>>613
その2。条件は満たしているはずだ。
#include <iostream>
#include <cstddef>
using std::cout;
using std::cin;
int main()
{
  char Buf[1024];
  char ch;
  cin >> Buf >> ch;
  std::size_t i = 0, n = 0;
  while (Buf[i])
    if (Buf[i++] == ch)
      n++
  cout << n << std::endl;
  return 0;
}
626デフォルトの名無しさん:04/12/07 22:53:59
>>624
だって「cin, coutを使用」ってはっきり書いてあるじゃん。
627デフォルトの名無しさん:04/12/07 23:16:28
-5.0 から 0.1 きざみで足してるのに 0.0 を通過してくれません
628デフォルトの名無しさん:04/12/07 23:19:19
>>627
あたりまえ
629デフォルトの名無しさん:04/12/07 23:20:37
ヒロシです・・・
-5.0 から 0.1 きざみで足してるのに 0.0 を通過してくれません!
630デフォルトの名無しさん:04/12/07 23:25:53
const int getHoge()


constって何の意味があるのでしょうか?
戻り値をconstにするよ、ってことなの?
631デフォルトの名無しさん:04/12/07 23:28:48
>>630

getHoge() = 10;
↑こういうのを防止するため
632デフォルトの名無しさん:04/12/07 23:30:20
実際のところ意味がない。int getHoge()に対してgetHoge() = 5;などと
しても意味がない。意味がないから出来なくしてしまおうと思えばconstを
付ければいい。だから「意味がない」と言う意味があるとも言えるかもしれない。
633デフォルトの名無しさん:04/12/07 23:32:42
>>631
>>632
早速の解決方法ありがとうございます。

getHoge=10;

なんて、よっぽどのバカじゃないとやらないと思うなぁ・・・。
634デフォルトの名無しさん:04/12/07 23:34:42
Meyers氏は「使えるところではconstを使え」と書いております
635デフォルトの名無しさん:04/12/07 23:39:35
C言語です。

#define DADR0    (*((unsigned char*)0xfffff8))
#define DACR     (*((unsigned char*)0xfffffa))
#define MSTPCRH  (*((unsigned char*)0xffff86))

main()
{
     MSTPCRH&=0x3b;
     DACR=0xc0;
     DADR0=0xff;
}


D/A変換器によるアナログ出力電圧を以下の画像のような周期波形を発生させるには、
上のソースをどのように変更すればいいのでしょうか?

http://up.isp.2ch.net/up/3e4ded303767.jpg
636デフォルトの名無しさん:04/12/07 23:41:30
2chのあぷろだはいつも繋がらないからやめて
637613:04/12/07 23:45:57
>>615
1と2は別?
STL は使って良いの?
1はアルファベット以外の入力はあるの?ないの?考えなくて良いの?

えっと1、2は別物で、STLは聞いたことないんで使えません。
あと入力はアルファベットのみです。

説明足らずですみません。

作ってくれた方々ありがとうございます。
これからコンパイル&実行してみます。
638635:04/12/07 23:46:52
すみません上げなおしました
ttp://49uper.com:8080/html/img-s/27242.jpg
639デフォルトの名無しさん:04/12/07 23:48:51
>>635
http://pc5.2ch.net/test/read.cgi/tech/1099574832/
などでやったほうがいいぞ
あとCPUやボードの明細も書くように。
640635:04/12/07 23:50:28
>>639
移動します。ありがとうございます
641デフォルトの名無しさん:04/12/08 00:14:23
642デフォルトの名無しさん:04/12/08 00:20:54
どなたか>>587をどうかお願いします!
643デフォルトの名無しさん:04/12/08 00:35:13
>>642
ま、大体君の書いた通り
644デフォルトの名無しさん:04/12/08 00:42:20
>>273
法○大学の計算機プログの問題だな
以前作った素数プログをFor文で繰り返させればOKだぜ
ただし、1以下の条件を忘れるなよ

下4桁ってとこまで乗せんなよw
645デフォルトの名無しさん:04/12/08 01:08:09
こんばんは
どこで聞いてもswapっての入れられちゃうんです。
一度配列を使ってしまい込んだ数(マクロ使えると(・∀・)イイ!!)の大小を比較して
大きい順に並べたいです。そのときC言語でFor文とIF文のみを用いて何とかならないですか?

for(i=0;i<n;i++) {
printf(“x[%d]?:”i);
scanf(“%d”,&x[i]);
}
これ以下がわかりません
IF文のみでは数が大きくなるととても大変です。
何とか助けてください。よろしくお願いします
646645:04/12/08 01:11:35
x[i]=y[i]
とか置き換えて
for(j=i;j>0;j--){
  if(y[j]<y[j-1]){

とか考えてみたんですが、どういう関係になるのかわからず、
ソースを完成すらできませんでした。よろしくお願いします
647デフォルトの名無しさん:04/12/08 01:15:26
swapのどこが悪い
648645:04/12/08 01:18:27
授業で学習した範囲内でプログラムを書くということになっているので
まったく使用したことが無いswapを使うと便利かもしれないですがまずいんです
申し訳ありません
649デフォルトの名無しさん:04/12/08 01:21:04
swapって文字を使わなければいいじゃん。
機能としては凄く単純で簡単な物なんだから。
650645:04/12/08 01:23:18
#include <stdio.h>

int main(void){
int i, j, dat[5], tmp;

for (i = 0; i < 5; i++){
printf("整数を5つ入力してください。(%d つ目) : ", i+1);
scanf("%d", &dat[i]);
}

printf("入力された5つの数字は : ");
for (i = 0; i < 5; i++){
printf("%d ", dat[i]);
}
printf("\n ");

/* dat[0]〜dat[4] の内容を小さい順に並べ替える部分 */

printf("小さい順に並べ替えると : ");
for (i = 0; i < 5; i++){
printf("%d ", dat[i]);
}
printf("\n ");

  return 0;
}

では・・・
こういう問題だったら・・・
どう答えますか?
651デフォルトの名無しさん:04/12/08 01:28:23
swap に swap 以外の名前を付けて欲しくないな
652デフォルトの名無しさん:04/12/08 01:28:56
>>650
別に問題変わって無いじゃん?
swapの本質ってのは単なるデータの交換だよ?

交換無しにソートするのは非効率になると思うよ。
653デフォルトの名無しさん:04/12/08 01:29:59
>>651
使えないって言ってるんだからしょうがないんじゃん?
名前変えるか、関数化しないで書くかの2択でしょ。
654デフォルトの名無しさん:04/12/08 01:30:52
swap関数をmainに展開すれば終わりの話じゃないか…
655645:04/12/08 01:34:26
>>654
どのようにすれば・・・
656デフォルトの名無しさん:04/12/08 01:35:09
#include <stdio.h>
#include <stdlib.h>
static int sortNumsCB(const int* lhs, const int* rhs)
{
if (*lhs < *rhs) return -1;
if (*lhs > *rhs) return +1;
return 0;
}
int main(void)
{
int i, j, dat[5], tmp;
for (i = 0; i < 5; i++){
printf("整数を5つ入力してください。(%d つ目) : ", i+1);
scanf("%d", &dat[i]);
}
printf("入力された5つの数字は : ");
for (i = 0; i < 5; i++){
printf("%d ", dat[i]);
}
printf("\n ");

/* dat[0]〜dat[4] の内容を小さい順に並べ替える部分 */
qsort(dat, sizeof(dat) / sizeof(int), sizeof(int), sortNumsCB);

printf("小さい順に並べ替えると : ");
for (i = 0; i < 5; i++){
printf("%d ", dat[i]);
}
printf("\n ");

return 0;
}
657645:04/12/08 01:38:10
_| ̄|○

説明まずいですかね・・・

658デフォルトの名無しさん:04/12/08 01:40:36
ここに書いて、スレ更新して、読んで、また書いて・・・

こんな事してる時間があるならCの教科書でも読んで
自分で書いた方が自分のためにもなると思うんだがなぁ。
659デフォルトの名無しさん:04/12/08 01:42:35
>>658
だからさーここはCやC++のスレを宿題で汚されないようにするための
スレであって、質問者のレベル向上のためじゃないんだってば
660645:04/12/08 01:45:13
#include <stdio.h>

int main()
{
int i, j, tmp, buf[3];

for(i=0;i<3;i++){
for(j=i+1;j<3;j++){
if(buf[i] < buf[j]){
tmp = buf[i];
buf[i] = buf[j];
buf[j] = tmp;
}
}
}

for(i=0;i<3;i++)
printf("%d\n", buf[i]);

return 0;
}


tmp = buf[i];
buf[i] = buf[j];
buf[j] = tmp;
ここのところ解説してください・・・
661デフォルトの名無しさん:04/12/08 01:46:23
実際には、ここの生徒が他のスレで暴れまわってるとしか思えない
機能してない隔離センターなんて、隔離対象を引き寄せてるだけ
662デフォルトの名無しさん:04/12/08 01:46:38
>>660
buf[i]とbuf[j]の値を交換する
663デフォルトの名無しさん:04/12/08 01:49:56
>>661
ならばどうしろと?
664デフォルトの名無しさん:04/12/08 01:51:01
>>663
何もする必要無い。放置すればいい話。
665デフォルトの名無しさん:04/12/08 01:53:04
その通り。教えるから次々を虫が湧く
666デフォルトの名無しさん:04/12/08 01:55:08
もしあれならワシのロダ使ってくださいな
臨時でもいいので
ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/l/imgboard.cgi
667デフォルトの名無しさん:04/12/08 01:56:16
>>664
で?教えてクンが減るの?それで。
668デフォルトの名無しさん:04/12/08 01:58:41
教えたら減るとでも言いたいのか?
669デフォルトの名無しさん:04/12/08 01:58:41
>>667
一時的に増える時期ってのはありそうだよね。
授業単元でプログラミングが出た時とか。

でもそれを乗り切れば、また減ると思う。
sin関数みたいな感じになるんじゃないかな。
670デフォルトの名無しさん:04/12/08 02:00:17
教えがり君の出方次第だな
必ず、我慢できずに教えまくる奴いるから
671デフォルトの名無しさん:04/12/08 02:03:30
このスレの何が不満なんだ
672デフォルトの名無しさん:04/12/08 02:04:13
てか素直に言うと、今までプログラム言語なんて全部自学でなんにも
困ったことないんで、このスレ自体が教えたがり君
673660:04/12/08 02:04:52
どうもありがとうございました
交換ってところが少しの見込めませんが眺めてみて理解してみます
674デフォルトの名無しさん:04/12/08 02:07:07
>>672
このスレ自体が教えたがり君なのが何?どうしたいんだ?
お前は何が言いたい?
675デフォルトの名無しさん:04/12/08 02:09:12
>>674
オマエが馴れ合いあたりで宿題スレを運用しろよ
676デフォルトの名無しさん:04/12/08 02:09:48
このスレ自体が教えたがり君
ってのが言いたいだけだろ?
日本語読めてんのか?
677デフォルトの名無しさん:04/12/08 02:10:39
>>675
ではあんたがここの削除依頼を出し、通った後にそちらに立ててくれ
678デフォルトの名無しさん:04/12/08 02:10:58
>>674
お前は何が言いたいんだよ?
679デフォルトの名無しさん:04/12/08 02:11:21
>>676
だから何だと聞いている
680デフォルトの名無しさん:04/12/08 02:17:05
一から十まで全部言わなきゃわかんねーの?

このスレ自体が教えたがり君

スレにむらがる虫常時湧く

他のスレにも沸きまくり

結局>>659は達成されていない

主観もはいってるだろうけどな
とりあえず一から五ぐらいまで説明したぞ
681デフォルトの名無しさん:04/12/08 02:17:11
>>679
>>676
お前知障か?
682デフォルトの名無しさん:04/12/08 02:18:18
>>680
その根拠は?
683デフォルトの名無しさん:04/12/08 02:18:28
どういうスレにしたいのさ?
684デフォルトの名無しさん:04/12/08 02:21:46
そろそろム板にもIDが欲しいと思わん?
685デフォルトの名無しさん:04/12/08 02:23:28
ム板といわず全板に付ければいいとは思うが板違いだな
686デフォルトの名無しさん:04/12/08 04:02:53
データ点の個数が2の べき乗 の場合に FFT を行うプログラムの作成。
C言語。入出力配列以外に用いる配列の記憶容量が最小になるようにすること。
だそうです。あまり期待してませんがよろしくお願いします。
687デフォルトの名無しさん:04/12/08 04:07:53
>>686
放置します。
688デフォルトの名無しさん:04/12/08 04:10:52
2時間かんがえた末の煽りか
689デフォルトの名無しさん:04/12/08 04:23:04
興味アル方メールください

業務内容
サーバ・アプリケーションの設計・開発・運用・保守管理などの業務に取り組んでいただきます。
資 格
学歴不問25〜40歳位迄、下記項目中2項目以上の経験者が望ましい。


Java開発経験者(Tomcat等のJakarta Projectを利用した開発)
DB開発運用経験者(Oracle,PL/SQL,Pro*C,MySQL,PostgreSQLを利用した大規模DBの運用・開発経験者)
Linuxサーバの構築・運用経験者(bind,sendmail,qmail,ネットワーク一般、セキュリティ設定等)
システム開発プロジェクトマネージャー経験者


勤務地
東京都渋谷区
690デフォルトの名無しさん:04/12/08 09:02:06
#typedef multimap<int ,string , less<int> > MMAP;
typedef MMAP::value_type Mvalue;
ostream& operator<<(ostream& os, const Mvalue& p){
os << p.second ;
return os;
}

main() {

MMAP m;
string a;
while(getline(cin,a)){

if( a.size()!=1)
m.insert(Mvalue(a.size(),a));

}
for(MMAP::iterator i=m.begin(),end=m.end(); i!=end; i++){
cout << *i << endl;

}
}

このプログラムの 入出力のしかた
            データ構造について
            整列の方法について
よろしくお願いします。
691デフォルトの名無しさん:04/12/08 09:05:53
入出力の仕方:getline()で1行ずつ読む
データ構造:マルチマップ
整列の方法:挿入法
692690:04/12/08 09:10:38
>>691
どうもありがとうございました。
693デフォルトの名無しさん:04/12/08 10:27:02
Dateっていうクラスがあって、

ostream& operator << (ostream& os, const Date& d){
os << d.month << d.day << d.year;
return 0;
}

この関数もあるわけなんだけど、このostreamをintとかvoidみたいに使っているのが
いまいち、よくわからないんです。
osっていうのが、ファイルだから、それを受け渡しするときに使うってこと?
でも、なんでosをreturnする必要あるんですか?
ファイルは、存在するわけだから、またメインなり、どこかで、開けばいいんじゃないんですか?
694デフォルトの名無しさん:04/12/08 10:35:18
>>693
マルチウザイ
695デフォルトの名無しさん:04/12/08 11:38:07
>なんでosをreturnする必要あるんですか?

return 0;
696デフォルトの名無しさん:04/12/08 11:40:01
>>659
>だからさーここはCやC++のスレを宿題で汚されないようにするための
>スレであって、質問者のレベル向上のためじゃないんだってば

CやC++のスレがとてもまともとは思えんが
697デフォルトの名無しさん:04/12/08 11:41:33
>>661
>機能してない隔離センターなんて、隔離対象を引き寄せてるだけ

それは機能しているって言わないか?
698デフォルトの名無しさん:04/12/08 15:04:24
>>693
os << yesterday << today << tomorrow << ...
699デフォルトの名無しさん:04/12/08 16:34:21
Visual C++

#include <stdio.h>/* 入出力を使うためのおまじない */
#include <string.h>/* 文字列を操作する関数を使うためのおまじない */
#include <stdlib.h>/* 乱数を使うためのおまじない */
#include <time.h>/* 時刻を使うためのおまじない */
void main()
{
char alphabets[100];/* アルファベット全体を入れる配列 */
char challenge[100];/* 打ち込む文字列 */
char input[100];/* 打ち込んだ文字列 */
int i;

/* 配列alphabetsにアルファベットを詰める */
strcpy(alphabets, "abcdefghijklmnopqrstuvwxyz\n");

/* 時刻を使って乱数作成 */
srand(time(NULL));

/* alphabetsからランダムに1文字ずつ取って、challengeに代入 */
for(i=0 ; i<5 ; i++){
challenge[i]=alphabets[rand()%strlen(alphabets)];
}
challenge[5]='\0';
printf("以下の文字列を入力して、リターンキーを押してください\n");
printf("%s\n", challenge);
scanf("%s", input);

700デフォルトの名無しさん:04/12/08 16:35:01
/* challengeとinputがあっているか判定し、結果を表示 */
if(strcmp(challenge , input) == 0){
printf("2つの文字列は等しい\n");
}
else{
printf("2つの文字列はちがう\n");
}
}

上のタイピングのプログラムで
/* challengeとinputがあっているか判定し、結果を表示 */
の部分をポインタを用いた表現に書き直す
という宿題なんですがさっぱりわかりません。

お願いします。
701デフォルトの名無しさん:04/12/08 16:54:32
[1] 授業単元:卒業研究の一部
[2] 問題文(含コード&リンク):
信号(P)、ノイズ(N)の値(1000個)を全部二乗→足し合わせ、その値を
SN比の式10log10(P/N)に代入。
信号の値を出すプログラム、ノイズの値を出すプログラムからそれぞれ
数値のファイルを作り、その二つのファイルを使ってSN比を出すプログラムは
何とか作れたのですが、次の段階としてノイズの値を1/10000〜1まで
変えながら(ノイズの式の末尾に*0.0001〜1を挿入)SN比を算出して
ファイルに結果を出すプログラムがうまくいきません。
信号のプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/l/img-box/img20041208164950.txt
ノイズのプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/l/img-box/img20041208165024.txt
信号・ノイズのファイルからSN比を算出するプログラム
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/l/img-box/img20041208165043.txt
(>>666さんありがとうございます)
この三つを一つにまとめる形でノイズの値のみを変えたプログラムを
作りたいのですがどうすればいいでしょうか?

[3] 環境
 [3.1] OS:winxp
 [3.2] コンパイラ(バージョン):よくわからないのですがASTEC-Xで書いています
 [3.3] 言語:C
[4] 期限:できれば今週末までに・・・

よろしくお願いします。
702名無し募集中。。。:04/12/08 16:55:18
>>699 こういうことなのかな?
#include <stdio.h>/* 入出力を使うためのおまじない */
#include <string.h>/* 文字列を操作する関数を使うためのおまじない */
#include <stdlib.h>/* 乱数を使うためのおまじない */
#include <time.h>/* 時刻を使うためのおまじない */
int sayu(char* sayumin, char* eririn)
{
for (; *sayumin == *eririn; sayumin++, eririn++) { if (*sayumin == '\0') { return 0; } }
return *sayumin - *eririn;
}
int main(void)
{
char alphabets[100];/* アルファベット全体を入れる配列 */
char challenge[100];/* 打ち込む文字列 */
char input[100];/* 打ち込んだ文字列 */
int i;
strcpy(alphabets, "abcdefghijklmnopqrstuvwxyz\n");
srand(time(NULL));
for (i = 0; i < 5; i++) { challenge[i]=alphabets[rand()%strlen(alphabets)]; }
challenge[5] = '\0';
printf("以下の文字列を入力して、リターンキーを押してください\n");
printf("%s\n", challenge);
scanf("%s", input);
if (sayu(challenge , input) == 0) { printf("2つの文字列は等しい\n"); }
else { printf("2つの文字列はちがう\n"); }
return 0;
}
703デフォルトの名無しさん:04/12/08 17:11:42
>>666
おっちゃん前のソースUPローだみたいに、
レス形式のみやすーいCGIつかってくだちゃい
そんでもっておっちゃんとこをこのスレのソースうpろーだにしよーよー
704デフォルトの名無しさん:04/12/08 17:48:31
質問ですunsorted list(ソートされないリスト)で
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃  ┃  ┃
┗━┻━┻━┻━┻━┻━┛
と配列が渡されたとき、「75」を挿入すると

┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃75┃  ┃
┗━┻━┻━┻━┻━┻━┛
となるので正しいですか??

また、
┏━┳━┳━┳━┳━┳━┓
┃10┃53┃24┃35┃  ┃  ┃
┗━┻━┻━┻━┻━┻━┛
から53を削除した場合、リストはどの様に並びますか?
よろしくおねがいしますm(_ _"m)
705デフォルトの名無しさん:04/12/08 17:51:58
>>704
「挿入」「削除」の定義による
706デフォルトの名無しさん:04/12/08 18:09:31
>>704
マルチうぜーーーー
707699:04/12/08 18:42:24
>>702
ポインタの導入に対する考え方
・challengeとinputはどちらも文字列の名前、すなわち、文字列の先頭のアドレスである。
-ただし、別のポインタにコピ−しておく。
・先頭から順'\0'(文字列の終端)に到達するまで、ポインタを一文字ずつ増やして比較する。

繰り返しの構造は
・「・・にと歌うするまで・・・する」の部分は、while文による繰り返し
・正しくなかったかをあらわす変数としてjudgeを宣言しておく。整数でよい
・while文の直前では
-それぞれ(challengeとinput)のポインタを先頭に合わせる
-judgeを「正しいのほうに初期化
・while文の本体は
-challengeの方のポインタがさす文字が'\0'になるまでの間に・・・
-1文字でも違いが現れたら、judgeを「正しくない」にセット
-それぞれのポインタを1ずつ進める

・challengeよりinputが長いとき
・while文を抜けたところで、もう1回だけ文字を比較すれば
challengeとinputが違うことがわかる

のヒントが出ていました。すみません。
あとreturnが入っていますが今まで習ったことないです。
708デフォルトの名無しさん:04/12/08 18:46:18
> ・後になって問題につけたしをするのはやめましょう。
>  解いてもらっている方に失礼になってしまいます。
709デフォルトの名無しさん:04/12/08 18:56:10
>>707
という事でこのスレでの追加分の解答は諦めて他に逝って下さい。
710デフォルトの名無しさん:04/12/08 19:15:35
>>709
> >>707
> という事でこのスレでの追加分の解答は諦めて他に逝って下さい。

>>659
>だからさーここはCやC++のスレを宿題で汚されないようにするための
>スレであって、質問者のレベル向上のためじゃないんだってば
711デフォルトの名無しさん:04/12/08 19:50:30
/* >>707 */
/* challengeとinputがあっているか判定し、結果を表示 */
{
#define Tadashii 1
#define Tadashikunai 0
int judge = Tadashii;
char * hintDashita = challenge;
char * yashiHaKuso = input;
while (*hintDashita != '\0' && *yashiHaKuso != '\0') {
if (*hintDashita != *yashiHaKuso) {
judge = Tadashikunai;
break;
}
++hintDashita;
++yashiHaKuso;
}
if (*hintDashita != *yashiHaKuso) {
judge = Tadashikunai;
}
printf("2つの文字列は%s\n", judge ? "等しい" : "ちがう");
#undef Tadashii
#undef Tadashikunai
}
712デフォルトの名無しさん:04/12/08 20:40:49
同じことやるんだったら、これだけで良くない? judgeは0で初期化。

while (*str1 == *str2 && *str1 != '\0') {*str1++; *str2++;}
if (*str1 == *str2) judge = 1;

そんなことより、この後printf("%s", str1) とすると、ポインタが動いてしまってるから
文字列が表示できないが、このポインタを元の位置に戻す方法は無いの?
どこか適当な変数にアドレス保持させておくか、*(str1 + i)みたいにするしか無い?
ポインタのインクリメントは使うメリットが良く解らない…
713デフォルトの名無しさん:04/12/08 20:42:35
ミスった
*str1++ → str1++ , *str2++ → str2++
714デフォルトの名無しさん:04/12/08 20:45:36
void swap(int *x, int *y)
{
*x^=*y^=*x^=*y;
}
715デフォルトの名無しさん:04/12/08 20:50:18
>>714
それはデータ壊れないか?
716デフォルトの名無しさん:04/12/08 20:51:43
>>714
なんで?
717デフォルトの名無しさん:04/12/08 20:52:30
>>715
なんで?
718デフォルトの名無しさん:04/12/08 20:55:05
719デフォルトの名無しさん:04/12/08 21:00:49
>>717
int main()
{
int a[10] = {1};
printf("%d\n",a[0]);
swap(&a[0],&a[0]);
printf("%d\n",a[0]);
return 0;
}
720デフォルトの名無しさん:04/12/08 21:05:32
質問です

「整数の配列とその要素数を引数として受け取り、添え字の1と2、3と4、…、nとn+1の要素を
それぞれ入れ替える関数を作成せよ。ただし、配列の要素数が奇数個である場合、最後の要素は入れ替えの
対象とならない。main関数では整数を入力として受け付けて、その数分の整数を配列に格納し、この配列の操作の対象とする」

って問題が出たので、とりあえずプログラムを作ってみたのですが、出力結果が正しく出ません。
下に作ったプログラムを貼ってみますので、誰か凄い方、添削お願い致します。
721720:04/12/08 21:07:25
#include <stdio.h>
int irekae(int x, int data[]){
int i, tmp;
if(x % 2 == 1){
for(i = 0; i < x - 1; i = i + 2){
tmp = data[i];
data[i] = data[i + 1];
data[i + 1] = tmp;
}
}
else{
for(i = 0; i < x; i = i + 2){
tmp = data[i];
data[i] = data[i + 1];
data[i + 1] = tmp;
}
}
return(data[i]);
}
722721:04/12/08 21:09:06
int main(void) {
int i, x, m, ans;
int data[256];
scanf("%d", &x);
for(i = 0; i < x; i ++){
scanf("%d", &m);
data[i] = m;
}
for(i = 0; i < x; i++){
ans = irekae(i, data);
printf("%d", ans);
}
printf("\n");
return(0);
}

以上です。お願いします。
723デフォルトの名無しさん:04/12/08 21:24:29
>>722
直接scanf("%d", &data[i]);としてもコンパイルできるよ。
でも俺とscanfの相性は悪いんで使っていない。
#include <stdio.h>
#include <stdlib.h>
void irekae(int data[], int x) {
  int i;
  x &= ~1;
  for (i = 0; i < x - 1; i += 2) {
    int tmp = data[i];
    data[i] = data[i + 1];
    data[i + 1] = tmp;
  }
}
int main(void) {
  int i, num;
  int data[256];
  char buf[256];
  fgets(buf, sizeof buf, stdin);
  num = atoi(buf);
  for (i = 0; i < num; i ++) {
    fgets(buf, sizeof buf, stdin);
    data[i] = atoi(buf);
  }
  irekae(data, num);
  for (i = 0; i < num; i++) {
    printf("%d ", data[i]);
  }
  putchar('\n');
  return 0;
}
724デフォルトの名無しさん:04/12/08 22:06:06
>>703
レス形式のロダを用意してみました。
見やすいかどうかわからないけど、必要なときがあったら使ってみてください。
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
725デフォルトの名無しさん:04/12/08 22:17:29
>>712
普通にstr1[i]のようにすればいいと思われ。
ポインタを理解させるのが目的だろうけど、
教える側が苦労したと言う自覚があればあるほど
判りにくい教え方になる罠。
726722:04/12/08 22:30:40
>>723
あ、即レスありがとうございます!
そこで、あの、折角やって頂いたのに大変申し上げ難いのですが、
#include <stdlib.h>というのをまだ習っておりませんので、
これを除いてプログラムを作って頂けると嬉しさ倍増なのですが・・・
いかがでしょうか?
727デフォルトの名無しさん:04/12/08 22:31:41
>>726
stdlib.hは必要ないよ。
728≠723:04/12/08 22:32:35
>>726
fgets()+atoi()をsscanf()に入れ替え、stdlib.hのインクルードを止める。
729デフォルトの名無しさん:04/12/08 22:37:03
なにー、atoi()なんか使ってたのか。>>723のボケが。
730726:04/12/08 22:47:36
>>727
>>728

ありがとうございました!!
まだ実行してませんがそれでやってみます!
731デフォルトの名無しさん:04/12/08 23:14:20
>>728
fgets+atoiをsscanfに変えたら意味変わらない?


揚げ足取りすまそ
732デフォルトの名無しさん:04/12/08 23:31:35
2が1番小さい素数、3が2番目に小さい素数・・・・・、
i番目に小さい素数を返す関数nthprime(i)をつくり、500番目に
小さい素数を求めよ。
ただし関数nthprimeは再帰呼び出しを用いて作成すること。
#include<stdio.h>

int primep(int) ;
int nthprime(int) ;

int main()
{
int i = 500 ;
printf("%d",nthprime(i));
}
int primep(int i)
{
int k ;
for(k = 2 ;k < i ;k++){
if(i % k == 0){
return 0 ;return 1 ;
}
}
}
int nthprime(int i)
{
/*ここがわからないです・・・*/
}

誰かお願いします。
733名無し募集中。。。:04/12/08 23:55:10
>>732 あってる気がするけど自信がない. 確認してね
#include<stdio.h>
int primep(int) ;
int nthprime(int) ;
int
main(void)
{
int i = 500;
printf("%d\n", nthprime(i));
return 0;
}
int
primep(int i)
{
int k ;
for (k = 2 ;k < i ;k++) { if (i % k == 0) { return 0; } }
return 1 ;
}
int
nthprime(int i)
{
int j;
if (i == 1) { return 2; }
else {
j = nthprime(i - 1) + 1;
while (!primep(j)) { j++; }
return j;
}
}
734デフォルトの名無しさん:04/12/09 00:03:43
>>733
確認できました。動作しました。
ありがとうございました!!
735デフォルトの名無しさん:04/12/09 00:17:31
問題の意図考えると
int nthprime(int i){
 static int j = 1;
 if(i == 0)
  return j;
 ++j;
 if(primep(j))
  return nthprime(i - 1);
 else
  return nthprime(i);
}
とかのが良くね?
736デフォルトの名無しさん:04/12/09 00:19:17
>>735
それは再帰呼び出しだからですか?
737デフォルトの名無しさん:04/12/09 00:27:51
>>736
但し書きまであるわけだから、ループは再帰で書けって意図なんじゃないかなあと思っただけだけどね
別にループ使うなとも書いてないからどっちでも良いと思うけど。
738デフォルトの名無しさん:04/12/09 00:32:36
>>737
ちなみに735の簡単な説明お願いしてもいいですか?
739デフォルトの名無しさん:04/12/09 00:33:08
nthprime(i) は nthprime(i - 1) 次に大きい素数 (i >= 2 の時)
nthprime(i) は 2 (i == 1 の時)

の表現が意図なのでは?
740デフォルトの名無しさん:04/12/09 00:34:20
s/nthprime(i) は nthprime(i - 1) 次に大きい素数 (i >= 2 の時)/nthprime(i) は nthprime(i - 1) の次に大きい素数 (i >= 2 の時)/
741デフォルトの名無しさん:04/12/09 00:43:10
ありがとうございます!!
742デフォルトの名無しさん:04/12/09 01:34:16
すいません。教えてもらってもいいでしょうか?
宿題がわからず困っています。

使用する言語はC言語です。

「英語、数学、国語の点数を入力してその平均点に
よって合否を表示するプログラムを作れ。

入力:英数国の各点数
処理:次の関数を使用する↓
60点以上を「合格」、未満を「不合格」
という成績の文字列を返す関数(grade)
出力:main関数にて成績を表示

点数を比較するときは同じ型同士で比較する。」
743デフォルトの名無しさん:04/12/09 01:43:33
>同じ型同士で比較

意図がわからん
...英語型、数学型、国語型をつくり、基準点型にキャストする?
744デフォルトの名無しさん:04/12/09 01:58:23
>>743
すいません。それは無視してもらっても結構らしいです。
745デフォルトの名無しさん:04/12/09 02:08:53
/*
60点以上を「合格」、未満を「不合格」
という成績の文字列を返す関数(grade)
*/
char *grade(double p){ return (p<60.0)?"不合格":"合格"; }
746デフォルトの名無しさん:04/12/09 02:16:09
>>745
入力が仕様にあってねえじゃん
747デフォルトの名無しさん:04/12/09 02:16:41
C言語超初心者の俺ががんばって考えた

#include <stdio.h>
#include <string.h>

void grade(int a, int b, int c, char x[]){
double temp;
temp = (double)(a + b + c)/3;

if (temp >= 60.0){
strcpy(x, "合格");
} else {
strcpy(x, "不合格");
}
}

int main(){
int eigo, sugaku, kokugo;
char hantei[40];

printf("英語:"); scanf("%d", &eigo);
printf("数学:"); scanf("%d", &sugaku);
printf("国語:"); scanf("%d", &kokugo);

grade(eigo, sugaku, kokugo, hantei);
printf("%s\n", hantei);
return 0;
}
748デフォルトの名無しさん:04/12/09 02:31:39
>>747
ありがとうございます。
自分でも今の時間考えてみましたが、
やはり出来なかったので参考にさせて
いただきます。
749デフォルトの名無しさん:04/12/09 02:35:43
>746

問題をよく読め
>入力:英数国の各点数
>処理:次の関数を使用する↓
>60点以上を「合格」、未満を「不合格」
>という成績の文字列を返す関数(grade)
>出力:main関数にて成績を表示

gradeの入力が英数国の各点数ぢゃねーぞ
750デフォルトの名無しさん:04/12/09 02:44:23
読解力の低下は文章題が解けないものどもの増加に影響を与えている
751デフォルトの名無しさん:04/12/09 02:53:59
いいなぁ このスレ。
始めから読んでみると目頭が熱くなってくるよ。

いや、懐かしくて(藁
自分にもこんな時代もあったなぁと。
752デフォルトの名無しさん:04/12/09 03:01:14
理解できるのは747のソースくらいだよ・・・
情報系の学科行っても全然プログラムやらんし
753デフォルトの名無しさん:04/12/09 04:23:07
これじゃダメかな。

#include <stdio.h>
#include <string.h>

char *grade(int a, int b, int c){
double temp;
temp = (double)(a + b + c)/3;

if (temp >= 60.0){
return "合格";
} else {
return "不合格";
}
}

int main(){
int eigo, sugaku, kokugo;
char *hantei;

printf("英語:"); scanf("%d", &eigo);
printf("数学:"); scanf("%d", &sugaku);
printf("国語:"); scanf("%d", &kokugo);


printf("%s\n", grade(eigo, sugaku, kokugo));
return 0;
}
754753:04/12/09 04:26:06
すまん、間違った。
#include <stdio.h>
#include <string.h>

char *grade(int a, int b, int c){

if (((double)(a + b + c)/3) >= 60.0){
return "合格";
} else {
return "不合格";
}
}

int main(){
int eigo, sugaku, kokugo;

printf("英語:"); scanf("%d", &eigo);
printf("数学:"); scanf("%d", &sugaku);
printf("国語:"); scanf("%d", &kokugo);


printf("%s\n", grade(eigo, sugaku, kokugo));
return 0;
}
755デフォルトの名無しさん:04/12/09 06:04:16
倍精度浮動小数点型が出てくる意義が分らん
756707:04/12/09 10:54:21
>>708-709
ごめんなさい。以後気をつけます。
>>711
遅くなってすみません。
今コンパイルしてうまく実行できました。ありがとうございます。
757デフォルトの名無しさん:04/12/09 11:06:09
[1] 授業単元:計算機概論
[2] 問題文(含コード&リンク):整数nを入力して、nが素数か、合成数であるかを
  判定するプログラムを作る。1を入力すると判定終了となります。(while文は
  必ず使う)
[3] 環境
 [3.1] OS:Windows XP
 [3.2] コンパイラ(バージョン):Microsoft Visual C++6.0
 [3.3] 言語:C++
[4] 期限:2004年12月14日まで
[5] その他の制限:
758757:04/12/09 11:06:57
お願いします!
759デフォルトの名無しさん:04/12/09 11:07:23
[6] 2chで同様の解答を見つけた場合はその解答を無効とします。
760デフォルトの名無しさん:04/12/09 11:09:51
>711をそのまま提出したらすげぇな。
761デフォルトの名無しさん:04/12/09 14:36:52
>>757
まだ五日もあるじゃん
762デフォルトの名無しさん:04/12/09 14:46:05
コンパイラがVC++なのに言語がC++とは一体何事か
763デフォルトの名無しさん:04/12/09 14:50:36
>>762
意味がわからないのだが、何かおかしいのか?
764デフォルトの名無しさん:04/12/09 15:03:56
>>757
素数判定アルゴリズムの指定は無し?
765デフォルトの名無しさん:04/12/09 15:14:30
>>757
ねえねえ、入力する整数nに上限があるのならすぐ作れるんだけど。
問題を読む限り上限はないよね?そういうのは俺には無理です。
766デフォルトの名無しさん:04/12/09 15:19:00
上限ありやけど

#include<bitset>
#include<iostream>

void main(){
 const int max = 1000;
 std::bitset<max+1> prime_table;

 prime_table.set();
 prime_table[0] = prime_table[1] = false;
 for(int i = 2; i * i <= max; ++i)
  for(int j = 2; i * j <= max && prime_table[i] != 0; ++j)
   prime_table[i * j] = false;

 int input;
 std::cin >> input;
 std::cout << (prime_table[input] ? "素数だ" : "素数じゃない") << std::endl;
}
767766:04/12/09 15:19:43
しまった
void main -> int main
768766:04/12/09 15:20:19
最近C#ばっかやってたから癖が
769766:04/12/09 15:24:50
しかももんだいよんでなかったorz
if(input == 1) return 0;

while(false);
でも入れといてくれ
770デフォルトの名無しさん:04/12/09 15:31:03
>>765
へたれ
771デフォルトの名無しさん:04/12/09 15:31:33
>>767
intにしたらreturnしないと。
772デフォルトの名無しさん:04/12/09 15:33:45
>>770
そう言うならお前が作ってみろ。
>>771
標準C++はmain()に限り最後のreturn 0;は省略可能です。
773デフォルトの名無しさん:04/12/09 15:34:32
C++だったかC99だったか忘れたが、intでreturn省略できなかったかな
774デフォルトの名無しさん:04/12/09 15:35:39
C99, C++ も省略可能でなかったか?

>>772
ヘタレ
775デフォルトの名無しさん:04/12/09 15:37:48
>>774
ヘタレはお前。自分が作れないくせに。
776デフォルトの名無しさん:04/12/09 15:43:55
ダメだこいつ。
自分が問題を勝手に曲解しといて、
今度は自分が作れるかのようなこと言い出した
777デフォルトの名無しさん:04/12/09 15:49:52
曲解じゃないだろ。例えば>>766で1000以上のnが入力されたらどうなる。
問題の意図を満たさないだろ。
778デフォルトの名無しさん:04/12/09 15:50:28
そういう場合必ずnの条件が付いてるはずなんだ。
779デフォルトの名無しさん:04/12/09 15:54:29
両方ヘタレでFA
以下何事もなかったかのように再開
780デフォルトの名無しさん:04/12/09 16:04:33
>>775
素数判定アルゴリズムを理解するために、以前ちょっとしたコードを書いたけれど
理解したから興味を失っただけだ!!!!!!?#
巨大な数の扱い方も知っているし、君とは殻が違うのだよ。殻が。解かる?殻。
ところで、DQNって何ですか?
781デフォルトの名無しさん:04/12/09 16:08:21
>>780
殻?格の間違いじゃないの?(ワラ
多倍長計算のライブラリはいくつも持ってるし、Mathematicaもあるよ。
お前と一緒にすんなヴォケ。
782デフォルトの名無しさん:04/12/09 16:08:38
>>757の自演と推理してみるテスト
783デフォルトの名無しさん:04/12/09 16:09:22
どうでもいいけど、
>多倍長計算のライブラリはいくつも持ってるし、Mathematicaもあるよ
ワロタ
784デフォルトの名無しさん:04/12/09 16:13:04
>>783
だから多倍長計算ライブラリを使えばそのまま>>766のプログラムが移植
できるだろ。

Mathematicaは余計だったが、そのまま簡単なプログラムで多倍長計算が
できる罠。それだけの話。
785デフォルトの名無しさん:04/12/09 16:14:09
しかしね。どんな多倍長計算クラスにも上限はあるし、素数を求める
アルゴリズムにも楕円曲線法とかいろいろある。あまり難しい話を
ここでしても意味がない。
786デフォルトの名無しさん:04/12/09 16:17:48
やめいやめい。
↓以降何もなかったかのように質問受け付けます。
787デフォルトの名無しさん:04/12/09 16:23:12
宿題スレで>>757を見て多倍長計算ライブラリとかMathematicaとか言い出すアホが居るスレはここですか?
788デフォルトの名無しさん:04/12/09 16:25:22
>>781
バカめ!!!!!!!?#
格とひきこもりが閉じこもる心の殻を掛けたのを見抜けないのか!!!!!?#
789デフォルトの名無しさん:04/12/09 16:25:54
mathematicaを出してくる意図が理解できん。
こいつぼけ
790デフォルトの名無しさん:04/12/09 16:26:48
>>788
そうか。>>780はヒッキーでしかもニート君だったか。これは失礼。
君のプライドを傷つけるつもりは毛頭なかったので、許してくれたまえ。
791デフォルトの名無しさん:04/12/09 16:28:16
なんかまた曲解している模様
ひょっとしてリアルで低脳だったのか?
792デフォルトの名無しさん:04/12/09 16:52:37
誰かsakuraにかわる宿題スレ用のソースアップローダつくらないのぉ?
793デフォルトの名無しさん:04/12/09 16:55:46
>>792
おまいに任せた!!
794デフォルトの名無しさん:04/12/09 17:00:30
昼間いろんな板を回ると、人が少ないせいか、「あれ、こいつ
さっきあの板にいた香具師じゃね?」と思う場面に出くわす事が
多いね。ニートの生活ってこんな感じなのかな?
795デフォルトの名無しさん:04/12/09 17:02:24
>>794=ニートってことでいいのかな…?
796デフォルトの名無しさん:04/12/09 17:24:32
>>795
今日だけな。
797757:04/12/09 17:59:46
すいません。学校行ってて返事遅れました。上限はないです!
私が作ったのが(全く初心者なので間違いだらけです・・)

int n,i;
printf("整数nを入力して下さい \n");
scanf("%d",&n);
i=2
while (i<=(n-1)){
i=i+1;
}
if ((n%i)=0)
printf ("\n nは合成数です。\n",n);
else
printf ("\n nは素数です。\n",n);
}
798757:04/12/09 18:02:07
超間違いだらけで・・。基本はこんな形で提出しなきゃならないので、
誰か心優しい方、手直ししてもらえませんか?申し訳ないです・・
799デフォルトの名無しさん:04/12/09 18:03:15
・後になって問題につけたしをするのはやめましょう。
 解いてもらっている方に失礼になってしまいます。

なのでスルーされること請け合いでしょうね
800デフォルトの名無しさん:04/12/09 18:06:46
#include <stdio.h>

main(){

printf("おちんちんを高速でしごくんだ。\n");

}
801デフォルトの名無しさん:04/12/09 18:07:53
>>797
#include <stdio.h>
int main()
{
int n,i;
bool isPrime=true;
printf("整数nを入力して下さい \n");
scanf("%d", &n);
for (i=2; i*i <= n; i++) {
if ((n%i)==0) {
isPrime = false;
break;
}
}
printf("%d は %s です。\n", n, isPrime?"素数":"合成数");
return 0;
}
802デフォルトの名無しさん:04/12/09 18:09:11
#include <stdio.h>

main(){

printf("もっと早くッッ!!\n");

}
803デフォルトの名無しさん:04/12/09 18:12:22
>>797
int n,i;
printf("整数nを入力して下さい \n");
scanf("%d",&n);
i=2;
while (i<=(n-1)){
    if ((n%i)==0)
    {
        printf ("\n %dは合成数です。\n",n);
        return 0;
    }
    i=i+1;
}
printf ("\n %dは素数です。\n",n);
>>801
Cでbool使うときは何かincludeしないといけないんじゃなかったっけ?
804デフォルトの名無しさん:04/12/09 18:13:13
(('))
805デフォルトの名無しさん:04/12/09 18:14:06
携帯(iMona)で見てるせいか、めちゃくちゃなソースに見える。
806757:04/12/09 18:26:27
みなさん、ありがとうございます。
#include<stdio.h>
void main()
{
int n,i;
printf("整数nを入力して下さい \n");
scanf("%d",&n);
i=2;
while (i<=(n-1)){
if ((n%i)==0)
{
printf ("\n %dは合成数です。\n",n);
}
i=i+1;
}
printf ("\n %dは素数です。\n",n);
}
エラーはなかったんですが、整数を入力すると、「整数です 合成数です」
と二つとも出てきてしまうんです。あと、1を入力して判定終了するのって
どうすれば良いのでしょうか・・ほんと迷惑かけて申し訳ないです

807デフォルトの名無しさん:04/12/09 18:30:52
>>806
ちゃんとreturn 0;も書け。

>あと、1を入力して判定終了するのって
>どうすれば良いのでしょうか
#include <stdio.h>

int main(void)
{
    int n,i;
    while(1)
    {
        printf("整数nを入力して下さい \n");
        scanf("%d",&n);
        if(n == 1)
            break;
        i=2;
        while (i<=(n-1)){
            if ((n%i)==0)
            {
                printf ("\n %dは合成数です。\n",n);
                goto next;
            }
            i=i+1;
        }
        printf ("\n %dは素数です。\n",n);
next:;
    }
    return 0;
}
808757:04/12/09 18:35:53
>>806
本当にありがとうございます!助かりました v(^^)
809(・∀・)イイ!! ◆LC7P44pfbg :04/12/09 18:47:40
こういう日があっても(・∀・)イイ!!
810デフォルトの名無しさん:04/12/09 19:15:53
(・∀・)イイ!!さんはいつもpositiveですね。
811331:04/12/09 19:52:26
イニシャルの名前を表示する関数を作りなさい。
データの終わりはNULLとする。

#include <stdio.h>

void disp(char *p[],char key)
{
int i=0;
while (p[i]!=NULL){
if (p[i][0]==key)
printf("%s\n",p[i]);
i++;
}
}

void main(void)
{
static char *nam[]={"Candy","Nancy","Eluza",
"Ann","Rolla","Emy",NULL};
disp(nam,'E');
}

上のプログラムを関数プロトタイプ宣言してscanfでイニシャルを打ち込み、
そのイニシャルの名前がある場合はその名前を、ない場合はその旨を表示する
プログラムに書き換えたいんですが、どうしたらいいでしょうか?
言語はCです。
812デフォルトの名無しさん:04/12/09 19:59:10
みんなスペース入れて読みやすいようにしようよ…
813デフォルトの名無しさん:04/12/09 20:06:18
消すのめんどいから、短いのはいい。
814 ◆zKht1y/vIY :04/12/09 20:08:25
#include <stdio.h>

int disp(char *p[],char key){
 int i = 0;
 int existed = 0;
  while(p[i] != NULL){
   if(p[i][0] == key){
    printf("%s\n",p[i]);
    existed = 1;
   }
   i++;
  }
 return existed;
}

int main(void){
 static char *nam[]={ "Candy", "Nancy", "Eluza", "Ann", "Rolla", "Emy", NULL };
 char initial;
 scanf("%c", &initial);
 if(disp(nam, initial) == 0)
  printf("なかった\n");
 return 0;
}
815 ◆zKht1y/vIY :04/12/09 20:09:48
>>811
816デフォルトの名無しさん:04/12/09 20:13:33
[1] 授業単元:プログラミング基礎
[2] 問題文 :
○○○○年、○○月、○曜日(その月の1日の曜日。数化したもの)を入力し、
2次元配列を利用してカレンダーを作成し6行7列の配列で出力せよ。
計算が複雑になるのでうるう年は28日とする。


[3.1] OS:XP
[3.2] コンパイラ(バージョン): Borland C++ Compiler
[3.3] 言語:C
[4] 期限:2004年12月10日
[5] その他の制限: 前提として、自分が習った範囲(if do switch、while for 配列)を使って作成しないといけません。


ヒントだけでもお願いします…。
817デフォルトの名無しさん:04/12/09 20:24:06
その月の1日の曜日入力するのか・・・
818デフォルトの名無しさん:04/12/09 20:28:10
[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
hドライブの○○フォルダ配下の××.datからデータを入力し、そのデータを金額とした時の金額の一覧を表示するプログラムを作成せよ。
但し、××.datファイルはint型の複数データが格納されたバイナリファイルとする。
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ(バージョン):.NET2002
 [3.3] 言語:C++
[4] 期限:2004年12月13日20:00まで
[5] その他の制限:無し

どうかよろしくお願いします。
819デフォルトの名無しさん:04/12/09 20:32:24
>>816
system("cal");
820811:04/12/09 20:32:26
>>814
ありがとうございます!
本当に助かりました。
821デフォルトの名無しさん:04/12/09 20:36:57
>>819
ありがとうございます!とてもヒントになります!
822デフォルトの名無しさん:04/12/09 20:59:02
そんなんでよかったのか?
>>821
たまには嘘をつくのも(・∀・)イイ!!
824デフォルトの名無しさん:04/12/09 21:02:32
C++言語で
[初期化]文字列をポインタで、整数値:n、文字
[処理]文字列のn番目の文字を、初期化した文字で置換して
mainで置換された文字列を出力するプログラムを誰かお願いします
関数はパラメータ3個使って作成する問題です
たとえばlendという文字列の2番目(n)のeを文字aに置換して
landと出力するようなプログラムです
825デフォルトの名無しさん:04/12/09 21:04:04
昨日
2が1番小さい素数、3が2番目に小さい素数・・・・・、
i番目に小さい素数を返す関数nthprime(i)をつくり、500番目に
小さい素数を求めよ。
ただし関数nthprimeは再帰呼び出しを用いて作成すること。
を作っていただいたのですが誰か下のプログラムを見て
アルゴリズム書けるひといませんか?
よろしくお願いします。
826デフォルトの名無しさん:04/12/09 21:05:16
>>825の続き
int primep(int) ;
int nthprime(int) ;
void main()
{
int i = 500;
printf("%d",nthprime(i));
}
int primep(int i)
{
int k;
for(k = 2 ;k < i ;k++){
if(i % k == 0){
return 0;
}
}
return 1;
}
int j=1;
int nthprime(int i)
{
if(i == 0)
return j;
j++;
if(primep(j))
return nthprime(i - 1);
else
return nthprime(i);
}

お願いします。
827816:04/12/09 21:07:30
821は自分の発言ではありません。
system("cal"); でくぐって調べてみましたが自分に扱えそうにないですね。
もう少し分かり易いのをお願いします…。
828デフォルトの名無しさん:04/12/09 21:09:06
あっ、#include<stdio.h>がぬけちゃいました。
それとアルゴリズムは解説みたいな感じでお願いしますm(__)m
829 ◆zKht1y/vIY :04/12/09 21:14:34
>>816
#include <stdio.h>

int main(void){
 int months[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
 int i, j;
 int year, month, dayOfTheWeek;
 int table[6][7] = {0};

 printf("年:");
 scanf("%d", &year);
 printf("月:");
 scanf("%d", &month);
 printf("曜日(日曜:0...土曜:6):");
 scanf("%d", &dayOfTheWeek);

 printf("%d年%d月\n", year, month);
 printf("日 月 火 水 木 金 土\n");

 for(j = dayOfTheWeek; j < dayOfTheWeek + months[month - 1]; ++j)
  table[j/7][j%7] = j - dayOfTheWeek + 1;
 for(i = 0; i < 6; ++i){
  for(j = 0; j < 7; ++j){
   if(table[i][j] != 0)
    printf("%2d ", table[i][j]);
   else
    printf(" ", table[i][j]);
  }
  printf("\n");
 }
 return 0;
}
830デフォルトの名無しさん:04/12/09 21:17:54
すいません、あぷろだしんでるみたいなので、3つに分けます。

#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

#define WORDLEN 50
#define SIZE 32/*素数であること*/

/*単語と出現回数をまとめて1つの構造体で表す。*/
struct wd {
struct wd *next;/*次の単語へのポインタ*/
char *str;/*文字列の先頭へのポインタ*/
int count;/*単語の出現回数*/
};
typedef struct wd WORD;/*WORD型とする*/

WORD *word[SIZE];/*WORDへのポインタを要素とする配列。SIZE個のリストを表す。*/
/*関数の宣言*/
void init_word();
WORD *add_word(char *);
char *getword(char *, int);
int hash(char *);

831デフォルトの名無しさん:04/12/09 21:19:22

int main()
{
char w[WORDLEN];/*単語を読み込むための文字配列*/
WORD *p;/*リストの先頭を指す*/
int i;

init_word();/*単語の出現表を初期化*/
while (getword(w, WORDLEN) != NULL) {
p = add_word(w);/*同じ単語の探索・新しい単語の追加*/
if (p == NULL) {
fprintf(stderr, "Too many words\n");
exit(1);/*単語が多過ぎる時*/
}
p->count++;/*出現回数を1増加*/
}
for (i = 0; i < SIZE; i++) {
for (p = word[i]; p != NULL; p = p->next) {
printf("%d %s\n", p->count, p->str);
}/*全単語とその出現回数を表示*/
}
return 0;
}
832デフォルトの名無しさん:04/12/09 21:19:50
int hash(char *w)
{
int i;
unsigned int h = 0;

for (i = 0; w[i] != '\0'; i++)
h = 65599 * h + w[i];
return h % SIZE;
}


void init_word()/*単語の出現表を初期化する関数*/
{
int i;

for (i = 0; i < SIZE; i++)
word[i] = NULL;
}


WORD *add_word(char *w)
/*文字列wと一致する単語がリスト内にあればその要素へのポインタを返す。
なければ、リストに追加し、その要素へのポインタを返す。
その際countは0にする。*/
{
char *s;
WORD *p;
int i;
833デフォルトの名無しさん:04/12/09 21:20:15
i=hash(w);
for (p = word[i]; p != NULL; p = p->next) {
if (strcmp(w, p->str) == 0)
return p;
}/*リスト内を探索し一致する単語があればそのポインタを返してある。*/
s = (char *)malloc(strlen(w) + 1);/*新しい単語を保存する領域を指すポインタ。*/
if (s == NULL)
return NULL;
strcpy(s, w);/*wをsにコピー。*/
p = (WORD *)malloc(sizeof(WORD));/*新しい単語を保存する領域を確保*/
if (p == NULL)
return NULL;
p->str = s;
p->count = 0;/*新しい単語を追加した時、countを0に*/
p->next = word[i];
word[i] = p;/*リストへの追加*/
return p;
}

834デフォルトの名無しさん:04/12/09 21:20:32
char *getword(char *w, int n)/*単語を文字配列に読み込む関数*/
{
int c;
int i = 0;

if (n <= 0 || feof(stdin))
return NULL;/*入力の終端かどうかをチェック
また単語の最大長が負かどうかもチェック*/
c = getchar();
while (c != EOF && ! isalpha(c)) {
c = getchar();
}/*英文字でない文字をとばす*/
if (c == EOF)
return NULL;/*EOFならNULLを返す*/
while (isalpha(c)) {
if (i < n - 1)
w[i++] = toupper(c);
c = getchar();
}/*英文字の間は大文字に変換しつつ文字配列wに代入*/
if (i < n)
w[i++] = '\0';/*単語の最大長を超えたら最後にNULLを代入*/
return w;/*代入された文字配列を返す*/
}

上は標準入力中に現れる英単語(英文字の列)の回数を数え、
大文字になおして標準出力に出力するコードです。
さらに、出現回数の多いものから順に表示できるようにするのが課題なのですが、
ソートがわからなくて困っています。
言語はCです。
また、入力されるのはハムレットや海底2万里などの全文です。
どうかよろしくお願いします。
835デフォルトの名無しさん:04/12/09 21:20:57
5つになりました。申し訳ありません
836816:04/12/09 21:25:25
>>829
ヒントどころか解答までして貰ってホントにありがとうございます。
自分は見当違いの事やってたし…。
このままじゃ試験危ないから勉強しないとなぁ。
837デフォルトの名無しさん:04/12/09 21:41:12
>>830-835
>>問題文と提出期限を添えて>>724のロダを借りてみれ(彼に礼を述べよ)。
今ならきっと1番乗りw

>724 デフォルトの名無しさん sage 04/12/08 22:06:06

>  レス形式のロダを用意してみました。
>  見やすいかどうかわからないけど、必要なときがあったら使ってみてください。
>  http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
838デフォルトの名無しさん:04/12/09 22:04:07
誰か826の説明お願いします・・・。
839デフォルトの名無しさん:04/12/09 22:07:07
い・や・♪
840デフォルトの名無しさん:04/12/09 22:09:50
テンプレにこれ追加しろよ
・自分の宿題に解答がつかない時はあきらめて下さい
841デフォルトの名無しさん:04/12/09 22:10:29
昨日
2が1番小さい素数、3が2番目に小さい素数・・・・・、
i番目に小さい素数を返す関数nthprime(i)をつくり、500番目に
小さい素数を求めよ。
ただし関数nthprimeは再帰呼び出しを用いて作成すること。
を作っていただいたのですが誰か下のプログラムを見て
アルゴリズム書けるひといませんか?
よろしくお願いします
842デフォルトの名無しさん:04/12/09 22:11:22
こうしてテンプレはどんどん肥大化していくのであった。
843デフォルトの名無しさん:04/12/09 22:11:38
int primep(int) ;
int nthprime(int) ;
void main()
{
int i = 500;
printf("%d",nthprime(i));
}
int primep(int i)
{
int k;
for(k = 2 ;k < i ;k++){
if(i % k == 0){
return 0;
}
}
return 1;
}
int j=1;
int nthprime(int i)
{
if(i == 0)
return j;
j++;
if(primep(j))
return nthprime(i - 1);
else
return nthprime(i);
}

お願いします。
844 ◆zKht1y/vIY :04/12/09 22:15:33
>>824
>[初期化]文字列をポインタで、整数値:n、文字
日本語意味不明。意図に合うように適当に直してくれ。

#include <string>
#include <iostream>

void replace(std::string& str, int n, char ch);

void replace(std::string& str, int n, char ch){
 str.replace(n, 1, 1, ch);
}

int main(){
 std::string str;
 int n;
 char ch;

 std::cin >> str;
 std::cin >> n;
 std::cin >> ch;

 replace(str, n, ch);

 std::cout << str;
}
845デフォルトの名無しさん:04/12/09 22:18:27
I2luY2x1ZGUgPHN0ZGlvLmg+DQoNCnN0YXRpYyBpbnQgaiA9IDE7DQoNCmludCBwcmltZXAoaW50
IGkpDQp7DQoJaW50IGs7DQoJZm9yKGsgPSAyOyBrICogayA8PSBpOyBrKyspDQoJCWlmKCEoaSAl
IGspKSByZXR1cm4gMDsNCglyZXR1cm4gMTsNCn0NCg0KaW50IG50aHByaW1lKGludCBpKQ0Kew0K
CWlmKCFpKSByZXR1cm4gajsNCglqKys7DQoJaWYocHJpbWVwKGopKSByZXR1cm4gbnRocHJpbWUo
aSAtIDEpOw0KCWVsc2UgcmV0dXJuIG50aHByaW1lKGkpOw0KfQ0KDQppbnQgbWFpbih2b2lkKQ0K
ew0KCXByaW50ZigiNTAwdGggcHJpbWUgPSAlZFxuIiwgbnRocHJpbWUoNTAwKSk7DQoJcmV0dXJu
IDA7DQp9DQo=
846デフォルトの名無しさん:04/12/09 22:34:59
uue?
847デフォルトの名無しさん:04/12/09 22:46:47
課題それであってんのか?
最低search_nで探して置換って話じゃないのか?
>>824だとreplaceどころか検索するまでもなく配列の書き換えで終わるし、
いくらなんでもそんな課題ないっしょ
848デフォルトの名無しさん:04/12/09 22:51:49
このスレのレベルから言って妥当な課題と思うけど
849デフォルトの名無しさん:04/12/09 22:55:42
嬲ったね!?
親父にも嬲られたことないのに!!
850 ◆zKht1y/vIY :04/12/09 22:58:10
>>847
オレもそう思ったけど
>文字列のn番目の文字を、初期化した文字で置換して
>mainで置換された文字列を出力するプログラムを誰かお願いします
>関数はパラメータ3個使って作成する問題です
なるべくこれに沿ってみた
851830:04/12/09 23:47:57
>>724のロダお借りしました。
ありがとうございました。
うpしました。お願いします。
852デフォルトの名無しさん:04/12/10 00:45:11
>>851
> #define SIZE 32/*素数であること*/
激しくワロタ
853デフォルトの名無しさん:04/12/10 02:57:51
双方向リストに対して、次の3つのソート方法を用いた辞書順ソートプログラムを作れ。
1.バブルソート
2.クイックソート
3.マージソート
本当によろしくお願いします
854デフォルトの名無しさん:04/12/10 08:09:17
>>853
やめいっちゅうに
855824:04/12/10 08:29:56
すいません、課題の問題が自分がかいたやつとほとんど同じで
文字列を入力してその文字のn番目の文字を、1文字置換するって問題です
日本語変ですいません・・
856デフォルトの名無しさん:04/12/10 08:57:52
#include <stdio.h>

#define n 10

int main(void)
{
char mojiretsu[n];

mojiretsu[n] = mojiretsu[n];
printf(mojiretsu);

return 0;
}
857818:04/12/10 09:07:48
[4] 期限:2004年12月13日20:00まで
と書きましたができれば明日の12時までにお願いします!
858デフォルトの名無しさん:04/12/10 09:26:23
test
859デフォルトの名無しさん:04/12/10 09:31:15
>>818
system("type hドライブの○○フォルダ配下の××.dat");
三つほどお願いします!問題自体はつながっていますので

(-1)^nを計算する関数を作ってください.入力は整数n


{(-1)^(n-1)・x^(2n-1)}/(2n-1)!を計算する関数を
作ってください. 入力は整数nと実数xとします


sinのテイラー展開は •Sin x=x- x^3/3! +x^5/5!+ …+ {(-1)^(n-1)・x^(2n-1)}/(2n-1)!+…ですが、
sin xを計算する関数をお願いします.


861デフォルトの名無しさん:04/12/10 09:42:02
お願いします


関数int rand()を用いて0から9までの間でランダムな
整数を返す関数randm10をつくってください.10回繰り返して結果を出力してください.


また、繰り返し実行して、各値になる頻度をしらべてください.100回後と
10000回後の結果を画面に出力してください.




862860.861:04/12/10 09:52:33
すみませんテンプレの下のほう読んでいませんでした・・・

[1] 授業単元:プログラミング言語
[2] 問題文(含コード&リンク):
[3] 環境
 [3.1] OS:xp
 [3.2] コンパイラ(バージョン):NET2002

 [3.3] 言語:C
[4] 期限:なるべく早めにお願いします。午後から講義なので・・・
     間に合わなければ来週の月曜でも大丈夫ですのでどうかよろしくお願いします
[5] その他の制限:なし
863デフォルトの名無しさん:04/12/10 10:11:06
>>859
int型のバイナリって書いてあるから
system("od -l hドライブの○○フォルダ配下の××.dat");
864デフォルトの名無しさん:04/12/10 10:14:00
>>860

>(-1)^nを計算する関数を作ってください.入力は整数n

printf("%d", n & 1 ? -1 : 1);
865デフォルトの名無しさん:04/12/10 10:19:40
>>860
>{(-1)^(n-1)・x^(2n-1)}/(2n-1)!を計算する関数を
>作ってください. 入力は整数nと実数xとします
>sinのテイラー展開は •Sin x=x- x^3/3! +x^5/5!+ …+ {(-1)^(n-1)・x^(2n-1)}/(2n-1)!+…ですが、
>sin xを計算する関数をお願いします.

精度(有効桁数)は?
sin(x) を計算するときの n は?
866デフォルトの名無しさん:04/12/10 10:24:18
>>865
それは定数にして置いてその変更で変えられるように作るべきでは
867デフォルトの名無しさん:04/12/10 10:33:46
まじめに毎回 {(-1)^(n-1)・x^(2n-1)}/(2n-1)! を計算するんじゃなくて、

x^3/3! = (x)*x*x/2/3
x^5/5! = (x^3/3!)*x*x/4/5
x^7/7! = (x^5/5!)*x*x/6/7
・・・

を逐次足す方が良いです。
868860.861.862:04/12/10 12:20:15
>>864
早速ありがとうございます!

>>865
問題文に与えられているのはそれだけでしたので
>>866、867さんの仰られる通りでおねがいします
869デフォルトの名無しさん:04/12/10 12:48:01
1 2
3 4
5 6
という中身のファイルがあったとして
一列目をa[]、二列目をb[]というようにするにはどうすればいいのでしょうか?
870869:04/12/10 12:51:51
すいません、書いている途中に書き込んでしまいました。
ファイルを開くのはできるのですが、それをどのように利用すればいいのかわかりません。
言語はCでお願いします。
871デフォルトの名無しさん:04/12/10 13:08:08
>>861
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int randm10(void)
{
    return (int)(rand()/(RAND_MAX+1.0) * 10.0);
}
void f(int ntimes)
{
    int i;
    int a[10] = {0};

    for (i = 0; i < ntimes; i++)
        a[randm10()]++;

    for (i = 0; i < 10; i++)
        printf("%d: %d\n", i, a[i]);
}
int main(void)
{
    int i;
    srand(time(NULL));
    for (i = 0; i < 10; i++)
        printf("%d: %d\n", i+1, randm10());
    f(100);
    f(10000);
    return 0;
}
872デフォルトの名無しさん:04/12/10 13:42:34
0から100未満のランダムな数を10000個生成して、それぞれの数の出現回数を求めよ。
ただし、0から100までの乱数は以下の様にして求める。

(int)((double)100 * rand() / (RAND_MAX + 1.0))


C言語で宜しくお願い申し上げ候。
873デフォルトの名無しさん:04/12/10 13:48:03
>>872
( ゚д゚)

(つд⊂)ゴシゴシ

(;゚д゚)

(つд⊂)ゴシゴシ
  _, ._
(;゚ Д゚)
874デフォルトの名無しさん:04/12/10 13:51:38
>>872
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10000
int main()
{
  int i, ntable[100]={0};
  srand((unsigned int)time(0));

  for (i=0; i<N; i++) {
    ntable[(int)((double)100 * rand() / (RAND_MAX + 1.0))]++;
  }
  for (i=0; i<100; i++) {
    printf("[%2d] : %d\n", i, ntable[i]);
  }
  return 0;
}

( ゚д゚)

(つд⊂)ゴシゴシ

(;゚д゚)

(つд⊂)ゴシゴシ
  _, ._
(;゚ Д゚)
875 ◆zKht1y/vIY :04/12/10 13:56:05
>>872
>(int)((double)100 * rand() / (RAND_MAX + 1.0))
rand() % 100でいいぞ

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void){
 int i;
 int randNums[100] = {0};

 srand((unsigned int)time(0));

 for(i = 0; i < 10000; ++i)
  ++randNums[rand() % 100];

 for(i = 0; i < 100; ++i)
  printf("%d ", randNums[i]);

 return 0;
}
876 ◆zKht1y/vIY :04/12/10 13:58:12
>>874
スペースとか修正してる間にorz
877デフォルトの名無しさん:04/12/10 14:01:36
rand() % 100は精度が悪いからじゃないの?
878 ◆zKht1y/vIY :04/12/10 14:07:35
>>877
ああ、なるほろ。
879デフォルトの名無しさん:04/12/10 14:11:30
>>874では
ntable[(int)((double)100 * rand() / (RAND_MAX + 1.0))]++;
>>875では
++randNums[rand() % 100];

演算子(++)の位置が違いますけど
このプログラムの場合どっちでもOKですか?
880デフォルトの名無しさん:04/12/10 14:12:44
>>879
この場合はどっちでもOK
881 ◆zKht1y/vIY :04/12/10 14:13:51
>>879
式の値を何にも使ってないし、後置き/前置きの++よりも[]の方が優先順位高いから大丈夫
882デフォルトの名無しさん:04/12/10 14:15:17
>>880
>>881
どもありがとうございます
883デフォルトの名無しさん:04/12/10 14:48:44
[1] 授業単元:計算機
[2] 問題文(含コード&リンク):
>>869
[3] 環境
 [3.1] OS:xp
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:一週間以内くらいなら
[5] その他の制限:なし
884デフォルトの名無しさん:04/12/10 14:49:44
>>883
答えられるが、お前の態度が気に入らない。
885デフォルトの名無しさん:04/12/10 15:03:07
>>884
ごめんなさい…
886デフォルトの名無しさん:04/12/10 15:17:33
>>869
開くところまでできているなら、
unsigned ic = 0;
while (fgets(buf, sizeof(buf), fp)) {
char buf[100];
sscanf(buf, "%d%d", a[ic], b[ic]);
++ic;
}
のような感じ。
課題の説明が中途半端なので回答も中途半端にならざるを得ない。
887872:04/12/10 15:20:36
>>874
>>875

おぉ!既に解答が!
早レス恩に着ます!
888デフォルトの名無しさん:04/12/10 15:23:41
>>885
#include <stdio.h>
#include <stdlib.h>
#define MAXN 10

int main(void)
{
int a[MAXN], b[MAXN], i, count;
char buf[128];
FILE *fi;

if ((fi = fopen("data.txt", "r")) == NULL)
exit(1);

for (i = 0; i < MAXN; i++)
if (fgets(buf, 128, fi) == NULL)
break;
else {
sscanf(buf, "%d %d", &a[i], &b[i]);
}
fclose(fi);
count = i;

for (i = 0; i < count; i++)
printf("%d %d\n", a[i], b[i]);

return 0;
}
889デフォルトの名無しさん:04/12/10 15:25:02
>>886
>sscanf(buf, "%d%d", a[ic], b[ic]);
これ間違ってるぞ。a[]やb[]がポインタ配列ならまだしも。
890デフォルトの名無しさん:04/12/10 15:25:23
>>886
中途半端な課題に答えてくれてありがとうございます。
その回答で充分です。
sscanfを使えば良かったんですね。
891デフォルトの名無しさん:04/12/10 17:21:06
[1] 授業単元:プログラミングT
[2] 問題文(含コード&リンク):
-----------------------------------
//file1.txt

12 123 1234
23 234 2345
34 345 3456
-------------------
のようなファイルの中身を、
-------------------
123 1234
234 2345
345 3456
-------------------
のように、左端の要素だけを取り除いて表示するようなプログラムを作りたいです。

[3] 環境
 [3.1] OS:xp
 [3.2] コンパイラ(バージョン):
 [3.3] 言語:C
[4] 期限:1〜2日でお願いします!すんません。
[5] その他の制限:UNIXで動作できるようにしてください
892デフォルトの名無しさん:04/12/10 17:50:27
>>891
スペースは全角ですか
893デフォルトの名無しさん:04/12/10 18:00:20
間違えてC言語板に書き込んでしまいました。
改めてポインタについて教えてください。

struct test{
string aaa;
};


test *pstr[10];
pstr[10]->aaa = "ABC";

ポインタ配列pstrのメンバaaaに"ABC"を代入するには
どう書けばいいですか?
894デフォルトの名無しさん:04/12/10 18:40:23
>>893
・ポインタは何か指す物が無いとと使えない。pstrを宣言しただけでは
 testのインスタンスは生成されない。
・配列の添え字は0から(要素数-1)まで。

test *pstr[10];
for(int i = 0; i < 10; i++) pstr[i] = new test;
pstr[8]->aaa = "ABC";
pstr[7]->aaa = "CDE";
895デフォルトの名無しさん:04/12/10 18:41:38
>>893
ここは宿題スレだ。よって残念ながらここもスレ違い。
896デフォルトの名無しさん:04/12/10 19:14:35
>>891のプログラムを知りたいのでできたらそのスレを教えてください。
897デフォルトの名無しさん:04/12/10 19:21:09
>>895 非常に申し訳ないっす

文法的には下のような感じでいいのでしょうか?
スレ違いっぽくて申し訳ないですが添削よろしくお願いします。

#include <iostream.h>

struct test{
  char *aaa;
};

int main(){
  int i;
  struct test *test_ptr[10];

  for (i = 0; i < 10; i++){
    test_ptr[i] = new test;
  }

  test_ptr[0]->aaa = "ABC";
  test_ptr[9]->aaa = "DEF";

  printf("%s\n", test_ptr[0]->aaa);
  printf("%s\n", test_ptr[9]->aaa);

  for (i = 0; i < 10; i++){
    delete test_ptr[i];
  }
  return 0;
}
898デフォルトの名無しさん:04/12/10 19:22:25
>>897はできる!!!
899デフォルトの名無しさん:04/12/10 19:26:08
>>898
問題ないということしょうか
ありがとうございました
900893:04/12/10 19:42:24
うーん・・なんと言ったらいいのでしょうか。

まずは>>894さんありがとうございました。
教えて頂いたとおりに書いたらできました。

>>897さんは私ではないですね・・・
でも分かりやすい見本でした。
delete()もすべきなんですね。勉強になりました。

あと、質問して教えて頂いた後には
出来上がったソースをそえてお礼した方がマナーがいいんですね。

いろいろありがとうございます。頑張ります。
901デフォルトの名無しさん:04/12/10 19:59:50
場合によりけりだけどこうで十分な気がする。
test *pstr;
pstr = new pstr[10];
pstr[0] = "ABC";
delete[] pstr; // delete pstr;だと駄目
902デフォルトの名無しさん:04/12/10 20:08:34
>>889
うい、typo。ヒントにはなるだろうから訂正しなかった。

>>901
newしてるものが……
903デフォルトの名無しさん:04/12/10 21:04:35
904デフォルトの名無しさん:04/12/10 21:21:43
>>851
差分だけ置いてきた。
905デフォルトの名無しさん:04/12/10 23:47:28
[1] 授業単元:C言語
[2] 問題文(含コード&リンク):
hドライブの○○フォルダのint型の複数データが格納されたバイナリファイルを使って

 |給 与|一万円|五千円|千 円|五百円|百 円|五十円|十 円|五 円|一 円|
--+------+------+------+------+------+------+------+------+------+------|
1|423251| 42| | 3| | 2| 1| | | 1|
2|498225| 49| 1| 3| | 2| | 2| 1| |
3|316482| 31| 1| 1| 1| 4| 1| 3| | 2|
--+------+------+------+------+------+------+------+------+------+------|
 合 計 | 122| 2| 7| 1| 8| 2| 5| 1| 3|

という表を作らなければならないみたいです。
[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ(バージョン):.NET2002
 [3.3] 言語:C++
[4] 期限:2004年12月11日12:30まで
[5] その他の制限:無し

どなたかよろしくお願いします!!
906デフォルトの名無しさん:04/12/10 23:49:17
>>905
明日の朝の900頃でもよければupするわ。
907デフォルトの名無しさん:04/12/10 23:51:53
>>906
お願いしますm(__)m
908デフォルトの名無しさん:04/12/11 00:11:36
[1] 授業単元:C言語演習

[2] 問題文(含コード&リンク):

以下の式において、項数nを入力して、
tの範囲を0〜1とし、それを100等分して
f(t)の値を計算し列挙せよ。

n
f(t)=(4/π)* Σ{(1/(2k+1))*sin(2k+1)t}
n=0

フーリエの問題だと思うのですが、
プログラムが作れません><

よろしくお願いします。

[3] 環境
 [3.1] OS:XP
 [3.2] コンパイラ(バージョン):VC++ 6.0
 [3.3] 言語:C言語

[4] 期限:2004年12月11日17:30まで

[5] その他の制限:特になし
909デフォルトの名無しさん:04/12/11 00:24:48
>>908
#include <stdio.h>
#include <math.h>

#define Pi 3.141592653589793

double f(double t, unsigned int n) {
unsigned int k;
double ret = 0.0;

for (k = 0; k < n; ++k) {
ret += 1.0 / (2.0*k + 1) * sin(2.0*k + 1.0) * t;
}

return ret;
}

int main() {
unsigned int i;

for(i = 0; i < 100; ++i) {
printf("%lf\n",f((double)i / 100.0, 20));
}

return 0;
}
910デフォルトの名無しさん:04/12/11 00:59:04
>>909
早速の回答ありがとうございます。


         n
f(t)=(4/π)* Σ{(1/(2k+1))*sin(2k+1)t}
         n=0

この式でΣのn=0からnまでの
nの値はscanf使って任意に入力したい
場合はどうしたらいいんでしょうか。。。
911デフォルトの名無しさん:04/12/11 01:00:53
>>891

データの区切りは 1バイト スペースとみなした
int ch,flg=0;
while((ch=getchar())!=EOF){
if(flg) putchar(ch);
if(ch=='\n') flg=0;
if(ch==' ') flg=1;
}
912デフォルトの名無しさん:04/12/11 01:18:16
>>910
意図から判断すると
n
Σ
k=0
だろ。
scanfで入力するにはmain関数を
int main() {
unsigned int i;
unsigned int n;
scanf("%d", &n);
for(i = 0; i < 100; ++i) {
printf("%lf\n",f((double)i / 100.0, n));
}
とする。
ところで、scanfはテストにしか使ってはいけないよ。
学校の課題くらいなら使っても大丈夫だろうけれど。
913デフォルトの名無しさん:04/12/11 01:30:14
1 鈴木 16 49
2 渡辺 4 68
3 斉藤 51 49
4 安藤 85 46
5 亘理 25 15

上のデータをファイルから読み込み、下のような構造体に格納し
3番と4番の間に 佐藤 67 34 を追加しファイルに書き出しなさい。

struct seiseki{
int no;
char name[10];
int tensuu[2];
}

こんな問題出されたんですがサッパリわかりません・・・(´Д⊂
一つ次のデータのアドレスを使うやつ(線形リスト構造?)を使わずに作りたいのですが
どなたか回答いただけないでしょうか
914デフォルトの名無しさん:04/12/11 01:34:03
>>912
たびたびありがとうございます。

ところでscanfは何故テストにしか使ってはいけないんでしょーか?
問題があるんですか??初心者ですいません><
915デフォルトの名無しさん:04/12/11 01:35:17
913補足です
[1] 授業単元:情報処理実習
[2] 上記のとおり
[3] 環境
 [3.1] OS:winxp
 [3.2] コンパイラ(バージョン):VC++6.0
 [3.3] 言語:C
[4] 期限:月曜テストなんで日曜の夜くらいまでにいただけると助かります。


916デフォルトの名無しさん:04/12/11 01:37:03
917デフォルトの名無しさん:04/12/11 01:40:19
>>916
なるほど、配列を超えた入力の抑制が出来ないのですね、、、
ありがとうございます
918デフォルトの名無しさん:04/12/11 01:45:35
OpenGLはスレ違いですかね?
919デフォルトの名無しさん:04/12/11 01:49:12
>>918
OpenGLのスレがあるのにわざわざここで?
920デフォルトの名無しさん:04/12/11 01:57:13
言ったら雑談スレだった('A`)
921デフォルトの名無しさん:04/12/11 01:59:48
>>916
おいおい、そのリンク見てみたけど、
fflush(stdin);
って平気で書いてるぞ。VCだけが処理系だと思っている痛い香具師が
書いたな。
922デフォルトの名無しさん:04/12/11 02:06:54
>>921
scanf問題の説明が載っていればどこでもよかった。
今では後悔している。
923デフォルトの名無しさん:04/12/11 02:58:24
パーティクルを飛ばすためのソースが浮かばない
誰か教えてください
924デフォルトの名無しさん:04/12/11 03:02:40
>>923
パーティクルって何?飛ばすって?まずそれがわからないことには。
925デフォルトの名無しさん:04/12/11 03:06:57
>>923
氏ねよマルチ野郎
926デフォルトの名無しさん:04/12/11 03:42:57
うまく行くときと行かないときがあります。
どこを直せばいいしょうか?


/*単語を数え、各単語の先頭だけを大文字にする。*/

#include <stdio.h>
#define N 100

int word (char *, int);

int main (void)
{
char str[N], *error="ERROR!!";
int ret;

printf("文字列を入力して最後にReturnキーを押して下さい.\n");
gets(str);

ret = word(str, N);
if (ret == -1) printf(error);
else
{
printf("%s\n", str);
printf("%d語\n", ret);
}
return 0 ;
}
927デフォルトの名無しさん:04/12/11 03:43:48



//単語の先頭だけを大文字にし、単語数を返す関数
int word (char *p, int n)
{
int word = 0;
char *p_0 = p;

while (*p)
{
//アルファベットが見つかったら
if ((0x41 <= *p && *p <= 0x5a) || (0x61 <= *p && *p <= 0x7a))
{
word++;

//先頭の1文字
if (0x61 <= *p && *p <= 0x7a) //小文字なら大文字に
*p-=32;
p++;
if ((int)(p-p_0) > n) return -1;

//その単語の残りの文字
while ((0x41 <= *p && *p <= 0x5a) || (0x61 <= *p && *p <= 0x7a))
{
if (0x41 <= *p && *p <= 0x5a) //大文字なら小文字に
*p+=32;
p++;
if ((int)(p-p_0) > n) return -1;
}//アルファベットの間ループ
}
928デフォルトの名無しさん:04/12/11 03:44:09


p++;
if ((int)(p-p_0) > n) //型キャストはなくてもいいんですか?
return -1; //もしかしてnじゃなくてn-1!?
}
return word;
}
929デフォルトの名無しさん:04/12/11 04:36:14
>>928
「うまくいかない」とはどう「うまくいかない」のか書け。
930デフォルトの名無しさん:04/12/11 04:56:09
なんか文字列長がN以上のときに悩んでるみたいだが、
自作関数のほうでなんぼチェックしても、getsの地点ですでに壊れてるから意味ないわな

fgets使っとき
931デフォルトの名無しさん:04/12/11 04:58:45
もしかしたら単語と単語の間にスペースを2個以上入れるとそれが単語の数
としてカウントされてしまうという不具合か?それはアルゴリズムが間違って
いるから。
932デフォルトの名無しさん:04/12/11 05:00:24
あと、0x41とか32とか、ASCII文字体系でしか動かないハードコーディングを
していて好ましくないから、isalphaとかtoupper、tolowerを使うべき。

文字列の終端はポインタの減算でチェックするより、'\0'が現れる事によって
判断した方が楽。
933926-928:04/12/11 08:43:11
>>929
>>930
N以下の文字列でもERRORになることがある・・・

>>931
えっ!そうなんすか?
どこがまずいんですか?

>>932
ヌル文字でってどうやってやるんですか?
str[N]以降にアクセスしたくないんですけど、
例えばヌル文字が出るまでk++するとかだと
str[N]より前に'\0'がなかったら
str[N]を超えて調べちゃいますよね?
オレにはそんなやり方しか思いつかない、、、
934デフォルトの名無しさん:04/12/11 09:00:26
あそっか、kがN以上になったらそこで止めればいいだけか…
オレはバカ……
935デフォルトの名無しさん:04/12/11 09:00:52
>>933
Cの文字列は'\0'で終わるもんだ。
p[n]より手前までに'\0'がないときは、そんな引数を渡す奴が悪い。
936デフォルトの名無しさん:04/12/11 09:17:20
/*単語を数え、各単語の先頭だけを大文字にする。*/

#include <stdio.h>
#include <ctype.h>
#define N 100

int word(char *p);

int main(void)
{
char str[N], *error = "ERROR!!";
int ret;

printf("文字列を入力して最後にReturnキーを押して下さい.\n");
gets(str);

ret = word(str);
if (ret == -1)
puts(error);
else {
printf("%s\n", str);
printf("%d語\n", ret);
}
return 0 ;
}
937デフォルトの名無しさん:04/12/11 09:17:40
//単語の先頭だけを大文字にし、単語数を返す関数
int word(char *p)
{
int word = 0;

while (*p) {
//アルファベットが見つかったら
if (isalpha(*p)) {
word++;
//先頭の1文字は大文字に
*p = (char)toupper(*p);
p++;
while (*p && isalpha(*p)) { // 残りの文字は小文字に
*p = (char)tolower(*p);
p++;
}
}
while (*p && !isalpha(*p)) // アルファベットまたはターミネート文字が出るまで p を進める
p++;
}
return word;
}
938デフォルトの名無しさん:04/12/11 09:18:35
gets()をfgets()に直すのは宿題として取っておく。
939デフォルトの名無しさん:04/12/11 10:11:13
誰か>>905をお願いします。
940デフォルトの名無しさん:04/12/11 10:17:53
>>939
そのファイルにはどのようにデータが入っているんだ?
941939:04/12/11 10:24:54
>>940
なんかfopen("h:\\○○\\kyuu-yo.dat")みたいなのを使うみたいです。
942デフォルトの名無しさん:04/12/11 10:26:39
>>941
そのバイナリ・ファイルがない事にはプログラムが作れません。
どこかにうpして下さい。
943939:04/12/11 10:30:50
>>942
ファイル学校行かないとないんです…。形だけでもどうにかなりませんか?
944デフォルトの名無しさん:04/12/11 10:36:09
>>943
いつまでもフザケた事言ってんじゃねえよ
945デフォルトの名無しさん:04/12/11 11:44:38
ファイル学校ってどんな学校や
…とか一瞬考えたのは秘密
946906:04/12/11 12:21:30
あわれ905楽しようとしたばっかりに
寝坊した漏れに笑いのネタを提供してくれた。

いや、7時には起きたんだけどね。
>>905のレスを見ても仕様がよく分からんから
二度寝したんだよね。

別に学校の宿題くらい納期過ぎたって問題ないっしょ
自分でガン( ゚д゚)ガレ
947デフォルトの名無しさん:04/12/11 13:55:31
#include <stdio.h>
int main(void)
{
int n,i;
int flag;

printf("n=");
scanf("%d",&n);
flag=0;
for(i=2;i<=n-1;i++){
if(N%i==0){
flag=1;
break;
}
}
if(flag==1){
printf("Sosuu de nai|n");
}
else{
printf("Sosuu de aru\n");
}
}
これを関数を使用したプログラムに直してくれませんか。
判定対象の整数を引数とし、判定結果(素数である場合を0,素数でない場合を1)
を辺値とする。
また数値の入力と結果の表示はmainで行う
948926-928:04/12/11 14:17:52
>>936-938
ありがとうございます。かなり参考になるっす。
949 ◆zKht1y/vIY :04/12/11 14:27:46
>>947
#include <stdio.h>

int isPrime(int num){
 int i;
 for(i = 2; i <= num - 1; ++i)
  if(num % i == 0)
   return 1;
 return 0;
}

int main(void){
 int n;

 printf("n=");
 scanf("%d",&n);

 if(isPrime(n))
  printf("Sosuu de nai|n");
 else
  printf("Sosuu de aru\n");
}
950 ◆zKht1y/vIY :04/12/11 14:30:11
>判定結果(素数である場合を0,素数でない場合を1)
!!
isPrimeの戻り値と結果表示逆にしてくれ
951デフォルトの名無しさん:04/12/11 14:57:19
>>950
結果表示はそのままでよかったんじゃないんですか?
952 ◆zKht1y/vIY :04/12/11 15:27:12
>>950
ホントだ。俺の最初のが間違ってた。
953 ◆zKht1y/vIY :04/12/11 15:28:02
>>951
だ。自分のそそっかしさが嫌になってきたorz
954デフォルトの名無しさん:04/12/11 15:28:36
>辺値
955デフォルトの名無しさん:04/12/11 15:28:40
どうもありがとうございました
956デフォルトの名無しさん:04/12/11 15:38:52
>>944
なんだ、できないのか。糞の役にもたたねえな。
957デフォルトの名無しさん:04/12/11 15:41:00
>>954
じゃあまちがってる?
週末に2ちゃんで人の宿題するのも(・∀・)イイ!!
どうしようもない質問者に翻弄されるのも(・∀・)イイ!!
959デフォルトの名無しさん:04/12/11 16:35:46
>>956
お前が糞。
960デフォルトの名無しさん:04/12/11 17:16:10
次スレ立てちゃっていい?
961デフォルトの名無しさん:04/12/11 17:28:39
962デフォルトの名無しさん:04/12/11 17:55:36
ところでターミネート文字って'\0'のことで、ヌル文字とおなじことだよねえ?
963デフォルトの名無しさん:04/12/11 18:10:15
1000ゲットニダ ━━<ヽ`∀´>@∀@)`ハ´)´Д`>━━!!!!
964デフォルトの名無しさん:04/12/11 18:12:32
>>937
最後のほうの

while (*p && !isalpha(*p)) // アルファベットまたはターミネート文字が出るまで p を進める
p++;

って、単にp++;だけでもたぶんできますよね?
こうしたのは何か意図があるんですか?
こっちのほうが速いとか?
965デフォルトの名無しさん:04/12/11 18:45:38
>>959
m9(^Д^)プギャー
小学生みたいな返しだな。そんな低脳じゃできるわけないなwww
966デフォルトの名無しさん:04/12/11 19:22:14
>>965
自分が低脳である事を棚にあげて、よくそこまで開き直れるもんだ。
でも開き直ってもプログラムはできないぞ。低脳。
967デフォルトの名無しさん:04/12/11 22:20:25
>>966
それがどうした無能野郎
低脳でも無能よりマシだクソッタレ
968デフォルトの名無しさん:04/12/11 22:29:41
喧嘩はイイクナイ
969デフォルトの名無しさん:04/12/11 23:20:28
どうせ一人でやってるんだろ。
970デフォルトの名無しさん:04/12/12 01:02:31
>>964
レス遅くなってスマソ。
単にp++;だけだと、文字列の最後を越えていつまででもpをインクリメントし続け、
そのうちアクセス違反を出すと思います。
971デフォルトの名無しさん:04/12/12 02:18:13
>>967
氏ね。答えを書いてもらえなかったのは、お前の質問の仕方が糞だったからだ。
まず日本語勉強ちまちょーね。あ?日本人じゃねーのか?祖国に帰った方が
ええんとちゃうか?
972デフォルトの名無しさん:04/12/12 02:22:42
>>967,971
梅ご苦労様です
973デフォルトの名無しさん:04/12/12 12:10:02
>>970
でも一番外側のwhile(*p)があるからだいじょぶなんじゃないんですか?
974デフォルトの名無しさん
>>973
だめです。最後にホワイトスペース文字が入っている場合を
考えてみて下さい。