トップページ⇒tech
1001コメント293KB

C/C++の宿題やらせてください。9代目

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさんNGNG
私はC++房。
今まで1年*ヶ月、ほとんど毎日休まず一生懸命C++を勉強してきた。
わからない宿題若しくは処理があったら私にやらせてくださいm(_ _)m

8代目(前スレ): http://pc2.2ch.net/test/read.cgi/tech/1055056940/l50

7代目: http://pc2.2ch.net/test/read.cgi/tech/1053963794/l50
6代目: http://pc2.2ch.net/test/read.cgi/tech/1053045530/l50
5代目: http://pc2.2ch.net/tech/kako/1051/10515/1051594046.html
4代目: http://pc2.2ch.net/tech/kako/1045/10450/1045074808.html
3代目: http://pc2.2ch.net/tech/kako/1041/10419/1041992392.html
2代目: http://pc3.2ch.net/tech/kako/1039/10397/1039772622.html
宿題手伝いますYO!!: http://pc3.2ch.net/tech/kako/1038/10380/1038024989.html

ラウンジ:質問が長い時はココを使うと便利
http://do.sakura.ne.jp/%7Ejunkroom/cgi-bin/megabbs/lounge/index.html
0002デフォルトの名無しさんNGNG
乙
0003デフォルトの名無しさんNGNG
いつのまにか1000だった
>>乙
0004964NGNG
((ab)c) と (c(ab)) も同じとみなします。
>> 997
http://pc2.2ch.net/test/read.cgi/tech/1055864305/49
これ↑も私なんですよ。
だけど、うまくできない気がするのです。
0005デフォルトの名無しさんNGNG
>>4
その方法でできる。
0006964NGNG
というのも
list={a, b, c, d, e} として、一番下の葉を(ab) として考えると、
list={(ab), c, d, e} として4要素の木について再帰的に行うことに
なると思うのですが、
この木の作り直しをどうすればよいのか分からないのです。
list[0]=(list[0] と list[1] をくっつけたやつ)
list[1]=list[2]
list[2]=list[3]
list[3]=list[4]
て、効率悪いですよね?
0007デフォルトの名無しさんNGNG
全スレのやつはマトリックスといいたかったのか?
0008デフォルトの名無しさんNGNG
>>4
具体的に何がしたいんだ?
0009964NGNG
>>7
最終的に作りたいのは、根無し木なので、
((((ab)c)d)e) と (((ab)c)(de)) は同じとみなさなくてはいけないのですよ。
そのことを言っているのかと早とちりしてしまいました。
でも、これに対する対処は後から考えますので、その前に木の作り直しを、
・(list[0] と list[1]をくっつけたもの) を list に追加
・list[0] と list[1] を list から消去
だけでできるようにしたいのです。
list 構造を使うか、インデクスを使うことになると思うのですが、
よく分かりません。
0010デフォルトの名無しさんNGNG
>>6
とりあえずそれでやってみたら?
動くものをつくってから、効率云々考えてもいいんじゃない?
叩き台があったほうがアドバイスも出やすいと思うよ。
0011デフォルトの名無しさんNGNG
>>6
よくわからんが、

list[0]=(list[0] と list[1] をくっつけたやつ)
list[1]=list[4]

でどーよ。
0012デフォルトの名無しさんNGNG
何方か、以下のプログラムの修正部分等わかる方いましたらお願いします。

二つの正の整数を入力して、その整数と整数の間にある
素数を求めるというプログラムなのですが、以下で実行してみたところ
ふたつめの整数がひとつめの整数よりも大きい場合には正しく動作したのですが
ひとつめの整数がふたつめの整数より大きい場合に正しく動作してくれません。
0013デフォルトの名無しさんNGNG
#include<stdio.h>

int main(void)
{

int i, a, b;

do {
printf("1つめの正の整数を入力してください:");
scanf("%d", &a);

if (a < 0);
{
puts("正の整数を入力してください");
}
} while (a < 0);

do {
printf("1つめの正の整数を入力してください:");
scanf("%d", &b);

if (b < 0);
{
puts("正の整数を入力してください");
}
} while(b < 0);

printf("%dと%dの間にある素数を表示します。\n", a, b);
0014デフォルトの名無しさんNGNG



if (a < b)
{
for (a; a <= b; a++)
{
for (i = 2; i < b; i++)
{
if (a % i == 0)
{
break;
}
}
if (a == i)
{
printf("%d\n", a);
}
}
}

0015デフォルトの名無しさんNGNG
else if (a > b)
{
for (b; b <= a; b++)
{
for (i = 2; i < a; i++)
{
if (b % i == 0)
{
break;
}
}
if (b == i)
{
printf("%d\n", b);
}
}
}

return(0);
}
0016デフォルトの名無しさんNGNG
>>9
よくわらんが、それを一緒くたにしたら括弧関係なくならないか?
0017デフォルトの名無しさんNGNG
>>12
printf("%dと%dの間にある素数を表示します。\n", a, b);
if(a>b){i=a;a=b;b=i} // 取り敢えず、この1行を入れなはれ
0018964NGNG
>>10
とりあえず、ものはできました。
>>11
そうすると、対象性がぐちゃぐちゃになりますよね。
(c(ab)) が生成されることになる。これは ((ab)c) と一緒だから
作りたくないんですよ。
0019964NGNG
とりあえず、現状のものを見てもらうと、
void tree(struct ArraySeq array[], int Num){
 char tmp[100];
 char left[100]="(";
 char right[100]=")";
 char comma[100]=",";
 int i=0;
 int j=0;
 int k=0;
 struct ArraySeq newarray[MaxNumLeaves];
 if (Num == 1){
  printf("%s\n", array[0].Seq);
 }else{
  for (i=0; i < Num-1; i++){
   for (j=i+1; j < Num; j++){
    strcpy(tmp, left);
    strcat(tmp, array[i].Seq);
    strcat(tmp, comma);
    strcat(tmp, array[j].Seq);
    strcat(tmp, right);
    strcpy(newarray[i].Seq, tmp);
0020964NGNG
    for (k=0; k < i; k++){
     strcpy(newarray[k].Seq, array[k].Seq);
    }
    for (k=i+1; k < j; k++){
     strcpy(newarray[k].Seq, array[k].Seq);
    }
    for (k=j; k < Num-1; k++){
     strcpy(newarray[k].Seq, array[k+1].Seq);
    }
   }
  }
 }
}
0021964NGNG
後半部分の k に関するループが新しい配列を作っている部分になります。
もう少し効率を上げたいので、この部分を何とかしたいのですが。
ちなみに最初の array が {A,B,C,E} とかだと、
(((A,B),C),D)
(((A,B),D),C)
((A,B),(C,D))
(((A,C),B),D)
(((A,C),D),B)
((A,C),(B,D))
(((A,D),B),C)
(((A,D),C),B)
((A,D),(B,C))
((A,(B,C)),D)
((A,D),(B,C))
(A,((B,C),D))
((A,(B,D)),C)
((A,C),(B,D))
(A,((B,D),C))
((A,B),(C,D))
((A,(C,D)),B)
(A,(B,(C,D)))
とちゃんとできます。
0022964NGNG
あれ、よく見たら((A,B),(C,D)) とか2回出てきてますね。
これってどうやって除外しよう・・・。
0023デフォルトの名無しさんNGNG
なぜ2分木で作らない?
0024デフォルトの名無しさんNGNG
1.seisekiという構造体枠を宣言し、構造体配列gakusei[10]を定義して、
10名の学生の名前、得点、偏差値(数値は適当でよい)を入力し、出力しなさい。
ここで、構造体のメンバーの参照は、構造体ポインタ変数を用いた間接参照とする。

2.1.を改良し、最も得点の高い学生を選ぶプログラムにしなさい。
最大値を求める部分は関数にしなさい。
0025デフォルトの名無しさんNGNG
↓ここまでやってみたんですが・・・
#include "stdio.h"

struct seiseki{
char name[10];
int tensu;
float hensachi;
};

main()
{
struct seiseki gakusei[10];
struct seiseki *p;
int i;

p=gakusei;
printf("名前 点数 偏差値 を入力\n");
for(i = 0; i < 10; i++){
scanf("%s %d %f", p->name, &p->tensu, &p->hensachi);
p++;
}

p=gakusei;
putchar('\n');
for(i = 0; i < 10; i++){
printf("名前:%s \n点数:%d \n偏差値:%f \n\n", p->name, &p->tensu, &p->hensachi);
p++;
}
return 0;
}
0026デフォルトの名無しさんNGNG
>>25
で?
0027デフォルトの名無しさんNGNG
>>26
点数と偏差値がうまく表示できないです。
0028デフォルトの名無しさんNGNG
>>25
-#include "stdio.h"
+#include <stdio.h>

-main()
+int main()

- printf("名前:%s \n点数:%d \n偏差値:%f \n\n", p->name, &p->tensu, &p->hensachi);
+ printf("名前:%s \n点数:%d \n偏差値:%f \n\n", p->name, p->tensu, p->hensachi);
0029デフォルトの名無しさんNGNG
木とはなにか.また,2分木とはなにか.説明せよ.
0030デフォルトの名無しさんNGNG
ポインターを使う課題なんですがおながいします。
1.円筒の表面積A及び体積Vを計算するプログラムを作りなさい
なお以下のような構成にすること
#include <stdio.h>
#define PAI 3.14159

main()
{
GetInputs(&r,&h); /*scanfでr,hを読み込む関数*/
ComputeAandV(r,h,&A,&V); /*表面積及び体積を計算する関数*/
 DisplayAnswers(A,V); /*解をファイルに書き出す関数*/

 }
003130NGNG
こんな感じに書きましたが動きません・・・
#include <stdio.h>
#define PAI 3.14159
void GetInputs(double *rp, double *hp);
void ComputeAandV(double r,double h, double *Ap,double *Vp);
void DisplayAnswers(double A,double V);

int main()

{

double r1,h1,A1,V1;

GetInputs(r1,h1);

ComputeAandV(r1,h1,&A1,&V1);

DisplayAnswers(A1,V1);

return(0);

}
003231のつづきNGNG
void GetInputs(double r,double h)

{
printf("半径rと高さhを入力してください。\n");

printf("r:"); scanf("%lf",&r);

printf("h:"); scanf("%lf",&h);

}

void ComputeAandV(double r,double h,double *Ap,double *Vp)

{

*Ap=2*PAI*r*h;

*Vp=PAI*r*r*h;

}
003332のつづきNGNG
void DisplayAnswers(double A,double V)

{

printf("表面積は%lfで体積は%lfです。\n",A,V);

}
0034デフォルトの名無しさんNGNG
「動きません」じゃ分かりません
0035デフォルトの名無しさんNGNG
>>32
これじゃ、呼び出し元にr,hは渡らない。
0036デフォルトの名無しさんNGNG
>>31
GetInputs(r1,h1)とComputeAandV(r1,h1,&A1,&V1)の引数の使い方を比べてみよう
あともう少しだな
0037デフォルトの名無しさんNGNG
というかバグか
void GetInputs(double *rp, double *hp)で宣言しておいて
void GetInputs(double r,double h)と定義してる
003830NGNG
>>34
すいません言い方が悪かったです

Null Reference なんとかというのが出てくるんです。

>>35
void GetInputs(double *r,double *h)
にすればいいんですか?

>>37
間違えました・・・

先ほどから頑張ってるんですが本見てもよく分かりません・・・
0039デフォルトの名無しさんNGNG
>>38
直接の答ではないけど、関数で変数を設定するにはこんな感じ。

#include <stdio.h>

void
substitute1(double *x)
{
        *x = 0.1;
}

int main(){
        double a;
        substitute1(&a);
        printf("%f\n", a);
        return 0;
}
004030NGNG
とうとうできました。
ありがとうございました。
0041デフォルトの名無しさんNGNG
void wait(int sec){
clock_t StartTime = clock();
while((int)((clock() - StartTime) / CLOCKS_PER_SEC) < sec)
}
上の関数を利用して1秒毎にコンマ’.’を表示させたいんですが、
どうすればいよいでしょうか?
004241NGNG
コンマじゃなくてピリオドでした・・・
004341NGNG
void waitProt(int sec){
    int i = 0;
    while(i++ < sec){
        while(1){
            clock_t StartTime = clock();
            while((int)((clock() - StartTime) / CLOCKS_PER_SEC) < 1);
            break;
        }
        putchar('.');
    }
}
これで一応成功したんですが、もっといい方法ってありますよね?
0044デフォルトの名無しさんNGNG
☆頑張ってまーす!!☆
http://yahooo.s2.x-beat.com/linkvp/linkvp.html
004541NGNG
while(1)の部分がいらないですね、これ・・・
0046デフォルトの名無しさんNGNG
>>43
利用してってそういうことなのか?
004741NGNG
void wait(int sec){
    int i = 0;

    while(i++ < sec){
        clock_t StartTime = clock();
        while((int)((clock() - StartTime) / CLOCKS_PER_SEC) < 1);
        putchar('.');
    }
}
ここまで短くなりましたが、もっとスマートな方法ってありますかね?
0048デフォルトの名無しさんNGNG
main(){
while(1){
wait(1);
printf(".");
}
}
004941NGNG
>>46
はい、
>clock_t StartTime = clock();
>while((int)((clock() - StartTime) / CLOCKS_PER_SEC) < sec);
上の部分をうまく利用して、という意味です。
いや、別に利用しなくてもいいんですが、
思いつくのがこれしかなくて・・・。
0050デフォルトの名無しさんNGNG
#include <stdio.h>
#include <time.h>

void wait(int sec)
{
clock_t StartTime = clock();
while((int)((clock() - StartTime) / CLOCKS_PER_SEC) < sec);
}

int main()
{
for (;;) {
putchar('.');
fflush(stdout);
wait(1);
}
return 0;
}
005141NGNG
>>48
ありがとうございます!
おかげで思いつきました。
>while(i++ < sec)
はwhile(sec--)にできますね。
0052デフォルトの名無しさんNGNG
>>29
木とは階層をもつデータ構造で、親(要素)は複数の子(要素)を持つが、
子は1つの親しか持たない。
親がたかだか2つの子しか持たないような木を2分木という。
0053デフォルトの名無しさんNGNG
>>52もっと詳しいとありがたいのですが…
0054デフォルトの名無しさんNGNG
前スレからの粘着か?
0055デフォルトの名無しさんNGNG
>>53
君にはここがお似合い
http://jbbs.shitaraba.com/computer/6765/
0056デフォルトの名無しさんNGNG
>>54粘着ではありません
0057デフォルトの名無しさんNGNG
他のmainから呼び出す関数内でmallocなどで領域を割り当てた時、mainの最後でその領域を開放するにはどのようにしたらいいのでしょうか?

void *hoge(){
char *aho;
aho = (char *)malloc(100);
}

void main(){
/*
  プログラム
*/
/*ahoを開放*/
}
0058ランランランNGNG
たくさんあるので1つづつ書かせて頂きます。
6個とも何を計算するプログラムかを教えてください
�@void main()
{
int a,b,x,y,s=0;
scanf("%d",&x),scanf("%d",&y);
for(a=0;a<x;a++) {
for(b=0;b<y;b++)
s+=b;
}
printf("%d\n",s);
}
0059ランランランNGNG
�Avoid main()
{
int a,b,x,s=0;
scanf("%d",&x);
for(a=0;a<x;a++) {
for(b=0;b<y;b++)
s+=b;
}
printf("%d\n",s);
}
0060ランランランNGNG
�Bvoid main()
{
int a,x,s=0;
scanf("%d",&x);
while (x--) {
s+=x;
}
printf("%d %d\n",x,s);
}
0061デフォルトの名無しさんNGNG
>>57
それじゃ、解放できなくなる。普通は
------------------------------
char *create_hoge(void){
return malloc(100);
}

void delete_hoge(char *a){
free a;
}

main(){
char *aho;
aho = create_hoge();

//処理

delete_hoge(aho);
}
------------------------------
みたいにする。
0062ランランランNGNG
�Cvoid main()
{
int x,y=0;
x=0;
while (y<=200) {
x++;y+=x;
}
printf("%d\n",x);
}
0063ランランランNGNG
�Dvoid main()
{
int x,y=0,a;
x=0;
scanf("%d",&a);
while (y<=a) {
x++;y+=x;
}
printf("%d\n",x);
}
0064デフォルトの名無しさんNGNG
>>57
再利用しないなら開放する必要は無い
0065>>57NGNG
プロセス終了時に開放されるのを期待して何もしないのもひとつ。
あるいは、free(aho); と書いてもよい。実害はない。益もないが。
0066デフォルトの名無しさんNGNG
>>65
freeできないよ
0067デフォルトの名無しさんNGNG
解放
0068デフォルトの名無しさんNGNG
マージソートのプログラムなんですけど再帰を使ってこれを完成させて下さいませんか?

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

main()
{
int i, j, k;
int a[8] = {3, 13, 45, 55, 30, 46, 74, 87};
int b[8];


printf("整列前\t");
for ( i = 0; i < 8; i++ ) {
printf("%2d ", a[i]);
}
printf("\n");

printf("整列後\t");
for ( i = 0; i < 8; i++ ) {
printf("%2d ", a[i]);
}
}
0069ランランランNGNG
�Evoid main()
{
int x,y=0,a,w;
x=0;
scanf("%d",&a);
while (y<=a) {
x++;
for(w=1;w<=x;w++)
y+=w;
}
printf("%d\n",x);
}
以上です。お手数ですがお願いします
007057NGNG
レスありがとうございます。本当は開放しなくてもいいものなんですか・・・
>>61さんのも試してみたいと思います。

それから、もうひとつ似たようなもので質問よろしいでしょうか?
free()の引数にはアドレスが入ってそのアドレスのメモリを開放するんですよね?
ってことは

char *hoge(){
char *aho;
aho = (char *)malloc(100);
return aho;
}
void main(){
char *ahooo;
ahooo = hoge()
/*
  プログラム
*/
/*ahoを開放*/
}

としたら、mainにfree(ahooo);としてもahoは開放されるってことなんでしょうか?
0071デフォルトの名無しさんNGNG
>>70
されるよ
007257NGNG
>>71
即答ありがとうございます!
これで何とかできそうです
ありがとうございました
0073デフォルトの名無しさんNGNG
でも、malloc-freeで対にしたほうがわかりやすいよ。
領域確保を関数内でするなら、それと対になった開放用の関数をつくった方がいい。
007452NGNG
>>53
どういうことを付け足せばいいの?
というか詳しくないという判断がつく程度の知識があるなら、
自分で満足するものを書けばいいと思うが。

字数を増やして欲しいというのなら、
テキトーに足しますが…
0075デフォルトの名無しさんNGNG
#include <stdio.h>
char mojic(char a[],char b[])
{
char *pa,*pb,*ps,s[80];
pa=a;pb=b;ps=s;
while((*ps=*pa)!='\0'){
ps++;
pa++;
}
ps++;
while((*ps=*pb)!='\0'){
ps++;
pb++;
}
return(s);
}
main(void)
{
char a[80],b[80];
printf("Input strings 1?");
scanf("%s",a);
printf("\nInput strings 2?");
scanf("%s",b);
printf("\nOutput :%s",mojic(a,b));
return 0;}

Cで文字列コピーの関数を作ったのですが
'return' : 'char [80]' から 'char' に変換することはできません。
この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。
というエラーがでてコンパイルできません。
どこを直せばいいのか検討がつかないのでご教授お願い致します。
0076デフォルトの名無しさんNGNG
>>75
char *mojic(char a[],char b[], char s[]){
//処理
return s;
}

main()
char a[80],b[80],s[80];
//a,bデータセット
printf("%s",mojo(a,b,s));
}
007776NGNG
a,bが80ならs[160]だな。
0078デフォルトの名無しさんNGNG
関数を自作するってどういうことですか?
atoiを作る〜とか。
0079デフォルトの名無しさんNGNG
>>78
参考書の「関数」の章を見れ。
0080デフォルトの名無しさんNGNG
>>74
本当は、図で示せば分かりやすいんだけどね。
0081デフォルトの名無しさんNGNG
>>76
ありがとうございました!!
008282NGNG
標準出力関数fputcを用い、キーボードから入力した文字を1文字づつ
ファイルfdataに書き込むプログラムを作成しなさい。ただし、入力の
終了は記号'/'の入力で判定を行うこと。
0083デフォルトの名無しさんNGNG
#include <stdio.h>
int main()
{
int c;
FILE *fp;

fp=fopen("fdata","w"); // 失敗しない。絶対に失敗しない。しないったらしない。
while((c=getchar())!='/')
fputc(c,fp);
fclose(fp);
return 0;
}
008482NGNG
すいません間違いました
標準入力関数fgetcを用い、コマンドラインからファイル名を指定した
ときに、その次から1文字ずつ読み込み、ディスプレイに表示する
プログラムを作りなさい。
ヒント:コマンドラインからファイル名を指定する方法に関しては、
以下を利用のこと。
int main(int argc, char *argc[])
{
FILE *fp_r, *fp_w;

if(argc == 1){
fp_r = stdin;
fp_w = stdout;
}
else
fp_r = fopen(argc[1],"r");
fp_w = stdout;
}
if(fp_r = NULL || fp_w == NULL) exit(-1);

fclose(fp_r);
fclose(fp_w);
return 0;
}

お願いします
0085デフォルトの名無しさんNGNG
>>84が何を言ってるのか分かる香具師はいますか
0086デフォルトの名無しさんNGNG
こんな中途半端な釣りがいる訳ないだろう
008782NGNG
訂正します
その次から→そのファイルから 
です。ごめんなさい
0088デフォルトの名無しさんNGNG
>>86
そうだよね。ひどいよね。
0089デフォルトの名無しさんNGNG
2ちゃんねら〜が考えたオンラインマネーゲームを紹介します。
13万円だけ儲けました
さあ マネーゲームの始まりです。メール1通送るだけで1000円ゲッツ
この情報で月30万円ぐらい稼ぐ勢いだよ みんな真似して転売しよう
http://user.auctions.yahoo.co.jp/jp/user/yaekaoricom?
http://user.auctions.yahoo.co.jp/jp/user/「       」?
まず落札して情報を仕入れます。
「       」 に自分のIDを貼り付けて2CHに貼ります。
それから自分もよく似た文章でヤフオクに出品する ウマー
0090デフォルトの名無しさんNGNG
>>89 これで破産した人を知っています。
0091デフォルトの名無しさんNGNG
>>84
while((c = fgetc(fp_r)) != EOF)
{
fprintf(fp_w, "%c\n", c);
}
0092デフォルトの名無しさんNGNG
そりゃぁお得な情報だ>>90
0093アルジャーノンNGNG
文字通りの初心者なんですが、fgetsがよくわかりません・・・
キーボードから文字を入力し、memo.txtの中を一行ずつ検索して
符合するかどうかを出力するプログラムなのですが改行コードを削ると
どうしてもうまくいきません。コメント内の**で示してある個所をコメントアウト
すると動くのですが、都合上改行コードは削っておきたいのです。
どうすればよいのでしょうか・・・(投稿時改行多すぎるといわれたので無理矢理行数削ったので見辛いですごめんなさい。)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main(){char word[256];char hikaku[256];int flag=0;FILE *fp;fp=fopen("memo.txt","r");
if(fp==NULL){printf("コマンドファイルが見つかりません。");exit(1);}
printf("キーワードを検索します:");
fgets(word,256,stdin);word[strlen(word)-1]='\0';//ここと
while(fgets(hikaku,256,fp)!=NULL)hikaku[strlen(hikaku)-1]='\0';//ここ
   if(strcmp(hikaku,word)==0)flag=1;
if (flag==1)printf("見つかりました\n");else printf("見つかりませんでした\n");
printf("お疲れ様。\n");fclose(fp);
}
/*
---memo.txtの中身---
mona
(´∀` )
*/
0094デフォルトの名無しさんNGNG
>>93
改行コードを削ることが問題なのではありません
再度よーくコードを眺めてみてください
0095デフォルトの名無しさんNGNG
すいません、ややこしくなりましたが
改行コードを削りたいのは変数に改行を入れておきたくない、
ということです。(後の処理が面倒なので・・・)

ここにソースを貼り付けてカキコしようとしたら、改行が多すぎると怒られたので
無理矢理ソースの改行を削った、という意味です。
「別の意味でいってんだバカ!('A`)」
だったらごめんなさい・・・
0096デフォルトの名無しさんNGNG
>>95
strcmp(hikaku,word) は何回評価されるのかな、という話かと
0097デフォルトの名無しさんNGNG
「別の意味でいってんだバカ!('A`)」
ほんとによーく眺めた?
hikaku[strlen(hikaku)-1]='\0'をputs("bug")で置き換えてみ。
結果はどうなる?それともコピペミスかい?
0098アルジャーノンNGNG
('∀`)デキター
解決熟女しましたー。{}をつけていませんでした。ありがとうございます。やっと寝れる・・・。
じゃ彼女とぬっぽり寝てきます('∀`)マダキンヨウダヨー
0099ΩアルジャーノンNGNG
>>95>>96
ありがとうございました。プログラミングの知識も正しい日本語の使い方も
リロードの習慣さえも身についていないアルジャーノンをよろしく!('A`)
0100ΩアルジャーノンNGNG
そのうえレス番までずらして自分にレスしまう知障のアルジャーノンをさらによろしく!('A`;)
0101ΩアルジャーノンNGNG
おまけにくだらないレスで100ゲットしてしまったアルジャーノンをひたすらよろしく!(('A`;))ガクガク
0102デフォルトの名無しさんNGNG









アルジャーノンをよろしく







0103デフォルトの名無しさんNGNG
アルジャーノンに鼻糞を
0104デフォルトの名無しさんNGNG
木とはなにか.また,2分木とはなにか.説明せよ.
0105デフォルトの名無しさんNGNG
テキストファイルは名簿である.各行のデータを,ID,姓名,読み(ローマ字)
の三つの要素をもつ構造体に格納するプログラムを書け
0106デフォルトの名無しさんNGNG
朝からネタ満載ですね
0107デフォルトの名無しさんNGNG
木とは分化した根・茎・葉を持つ大型の植物で茎が硬化して幹になったものである。
2分木とは近い距離で発芽した木の根元付近がつながり、二股に分かれているように見える木のことである。
0108デフォルトの名無しさんNGNG
通報しますた。
0109デフォルトの名無しさんNGNG
>>105
>>316
0110デフォルトの名無しさんNGNG
顔文字を生成するプログラムを作成せよ
0111デフォルトの名無しさんNGNG
#include <stdio.h>
main(){
char *a = "(^^";
char *b = ")";
printf("%s,%s",aa,b);
}
011252NGNG
>>104
「木とはなにか」という問いだと、
「木とは〜である」という一文に収まる程度の答えをするのが普通で、
詳しい説明を期待していない問いだと思う。
それだから、>>107 は「とは〜である」というように書いている。
残念ながら >>52 は「とは〜である」というようには書いていないが、
それでも短くまとめた。

>>105
前スレの316はその三要素を構造体を格納するプログラムでもある。

レスを無視したりせず、レスに不満があるならその旨を書いてくれ。
そうしてくれないと対応し辛い。
0113デフォルトの名無しさんNGNG
>>110
#pragma warning(disable : 4305 4309)
#include <stdio.h>
int main(void)
{
  char str[256] = {
    0x20, 0x20, 0x81, 0xc8, 0x81, 0x51,
    0x81, 0xc8, 0x0a, 0x20, 0x28, 0x20,
    0x81, 0x4c, 0x81, 0xCD, 0x81, 0x4d,
    0x29, 0x81, 0x83, 0x20, 0x20, 0x82,
    0xca, 0x82, 0xe9, 0x82, 0xdb, 0x0a
  };
  printf("%s\n", str);
  return(0);
}
0114デフォルトの名無しさんNGNG
>>113
突っ込みどころ満載だな。
0115デフォルトの名無しさんNGNG
http://jbbs.shitaraba.com/computer/6765/
0116デフォルトの名無しさんNGNG
>>113
nbspのあとにセミコロンをつけろと何度言えば分かるんだこの馬鹿!!!
0117デフォルトの名無しさんNGNG
二分法を使って区間[0,1]における2*x*x*x+x*x-1=0の解を求めよ
という問題がでて作ってみたんですがどうでしょうか?

0118デフォルトの名無しさんNGNG
#include <stdio.h>

int main()
{
float l,h; //区間の設定
float y_l,y_h,y_m; //x=l,x=hのときのyの値
float x; //答えを代入
float p; //ループに使用する
float m; //中点

printf("2*x*x*x+x*x-1=0の解を求める\n");
printf("区間を指定して下さい\n");
printf("l=");scanf("%f",&l);
printf("h=");scanf("%f",&h);

y_l=2*l*l*l+l*l-1; //f(l)を計算

y_h=2*h*h*h+h*h-1; //f(h)を計算

p=1;
0119デフォルトの名無しさんNGNG
while(p>0.00005)
{
if(y_l*y_h<0) //二分法を使える条件を満たしているとき
{
y_l=2*l*l*l+l*l-1; //f(l)を計算

y_h=2*h*h*h+h*h-1; //f(h)を計算

m=(l+h)/2; //区間lとhの中点を求める

y_m=2*m*m*m+m*m-1; //f(m)を計算

if((y_m>0&&y_l>0)||(y_m<0&&y_l<0)) //f(m)とf(l)が同符号の時
{
l=m;
h=h;
}
else //f(m)とf(l)が異符号の時
{
l=l;
h=m;
}

p=p-0.00001; //カウンタ変数を少しずつ減らしていく
}
0120デフォルトの名無しさんNGNG
else //二分法が使えないとき
{
printf("区間[%f,%f]において解が存在しません\n",l,h);
break;
}
}

x=(l+m)/2; //解となる区間の中点を求める

printf("x=%f\n",x);

return 0;
}
0121デフォルトの名無しさんNGNG
>>117
何が?
0122デフォルトの名無しさんNGNG
>>117
・なぜfloatを使う
・pの使い方が?
0123デフォルトの名無しさんNGNG
やっぱだめですか。自分でもよく分からない状態で作ったので
なにかアドバイスあったらお願いします
0124デフォルトの名無しさんNGNG
floatイラネ
言語仕様からはずしちゃえ。
0125デフォルトの名無しさんNGNG
float使うのがダメなんですか?
0126デフォルトの名無しさんNGNG
floatは、SIMDとか、GPUとかでひょっこり顔を出すからなー
0127デフォルトの名無しさんNGNG
WindowsでC言語のプログラムをやりたいのですがどうしたらいいですか?
教えてください
0128デフォルトの名無しさんNGNG
タダで使えるBorland C++ Part3
http://pc2.2ch.net/test/read.cgi/tech/1054390397/
タダで最強!フリーC/C++コンパイラ
http://pc2.2ch.net/test/read.cgi/tech/1035882599/
0129デフォルトの名無しさんNGNG
>>127
マルチ死ね
0130デフォルトの名無しさんNGNG
>>126
SIMD, GPUで顔出すから何で使うのがダメなの?
0131デフォルトの名無しさんNGNG
>>126は>>124へのレスだと思われ
0132デフォルトの名無しさんNGNG
�@4行4列の行列に値を代入(各自適当な値でいい)
�ALU分解する [L][U]
�BA=LUとなることを確認する。(掛け算)
�C右辺bを与え、LとUをもちいて、AX=bの解であるxを求める[x]
�DAX=bが正しく計算できているか確認。


以上のようなプログラムを作成せよ。

どなたかおねがいします。

0133デフォルトの名無しさんNGNG
オレニマカセロ!
0134デフォルトの名無しさんNGNG
オマエニマカセタ!
0135デフォルトの名無しさんNGNG
>>1000ニマカサセタ!
つーわけで、>>132は、がんばってスレを延ばしてね
0136デフォルトの名無しさんNGNG
>>133
おい。ちんたらやってんじゃねえぞ
0137デフォルトの名無しさんNGNG
(´ ▽`).。o○マッタリいこうよ・・・
0138デフォルトの名無しさんNGNG
誰か>>132の質問に答えてやれよ!
ちなみに、俺は分からないから。
0139デフォルトの名無しさんNGNG
>>138
俺だってわかるもんか!
0140デフォルトの名無しさんNGNG
|
| ∧
|∀`) / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|⊂ ) < まったくバカばっかりだな!
| |   \_________________
|_)
|


|
|  サッ
|) 彡
|
|
|
0141デフォルトの名無しさんNGNG
「行列」
この時点でアウト
0142デフォルトの名無しさんNGNG
俺は
「LU分解」
この時点でアウト
0143デフォルトの名無しさんNGNG
オイラは
「132 :デフォルトの名無しさん :03/06/20 22:19」
この時点でアウト
0144デフォルトの名無しさんNGNG
おまいら数値解析習わなかったのか?
有限要素法とかやれば使いまくるだろう。

でも忘れたんだよね(´・ω・`)
0145デフォルトの名無しさんNGNG
私は、
「Internet Explorer起動」
この時点でアウト
0146デフォルトの名無しさんNGNG
高卒だし、高校では3年の時は数学とらなかったし
0147デフォルトの名無しさんNGNG
我輩は
「WINDOWSを起動しています・・・」
この時点でアウト
0148デフォルトの名無しさんNGNG
自分は
「夜遅くに家に帰り、妻に遅かったのねってにらまれた」
この時点でアウト
0149デフォルトの名無しさんNGNG
ぼくは
オギャー
この時点でログアウト
0150デフォルトの名無しさんNGNG
拙者は
「ドピュッ」
この時点で・・・もういいって!!
0151デフォルトの名無しさんNGNG
LU分解なんてその辺のホームページにでも
わんさか出ているからわざわざやる気がしない
0152デフォルトの名無しさんNGNG
>>132
LU分解はここに貼るような長さじゃないので例えば
ttp://www.library.cornell.edu/nr/bookcpdf/c2-3.pdf を参照。
46頁のludcmpがLU分解を行なう関数。コンパイルには
ttp://www.library.cornell.edu/nr/bookcpdf/c21-1.pdf にあるファイルが必要だが
必要な定義だけコピペすれば済む。
目次は ttp://www.library.cornell.edu/nr/bookcpdf.html にある。
0153デフォルトの名無しさんNGNG
scanfに代わる安全な標準入力読み込み関数を作成せよ。
(麻布第一小学校 入試問題)
0154デフォルトの名無しさんNGNG
>>153
小学校でプログラミングか。時代が変わったな。
0155デフォルトの名無しさんNGNG
>>153
違う。入試問題と言う事は小学校に入る前だから幼稚園でってことか。
0156デフォルトの名無しさんNGNG
C言語の知識は日本人の常識だろ。
0157デフォルトの名無しさんNGNG
小学入試にしては漢字が難しいな。
0158デフォルトの名無しさんNGNG
creatのスペルの誤りを正せ。
(麻布第一小学校 追試問題)
0159デフォルトの名無しさんNGNG
kreat
0160デフォルトの名無しさんNGNG
スペルならcastでしょう。
0161デフォルトの名無しさんNGNG
制限説とtypo説のどっちが正しいかは不明

Ken Thompson was once asked what he would do differently if he were
redesigning the UNIX System. His reply: "I'd spell creat with an e."

- Brian Kernighan and Rob Pike
0162デフォルトの名無しさんNGNG
2分木を全て書き出すプログラムを作れ。

これどーなった?
0163デフォルトの名無しさんNGNG
>>162
名前とIDのやつだっけ?
以前C++のコードをラウンジにはっつけといたよ。
その後もう少しきれいに表示するコードも作ったけどUPしないでおわった。
0164デフォルトの名無しさんNGNG
>>162
あれは「プログラムを作れ」なんて依頼じゃなくて、
大まかな方針が知りたいだけだったんだから、
本人が何も言ってこない限りもう終了でしょう。
0165デフォルトの名無しさんNGNG
キーボードから文字列を与え、その文字列を逆から出力するプログラムを
ポインタを使って作成せよ。
例 与えた文字列→ABCDE 出力結果→EDCBA

C言語です。よろしくお願いします。
0166デフォルトの名無しさんNGNG
今までにも「キーボードから」っていう宿題が何度も出てるけど、
本当に問題にそう書いてあるんだろうか?
0167デフォルトの名無しさんNGNG
>>166
そう書いていないと「どうやって文字列を与えるんだ?」と聞きまくる香具師が
以前大発生した為と思われ
0168デフォルトの名無しさんNGNG
当然書いてあるだろ
BIOSシステムコールくらい基本中の基本だ
0169964NGNG
二分木の書き出しで書き込んでいた者です。
まだできていなく、再度お伺いしたく思います。

結局、
tree(配列Array){
 配列Arrayを2つの配列array1とarray2に分けて、全ての分け方に対して、{
  tree1=tree(array1);
  tree2=tree(array2);
  全てのtree1の要素t1とtree2の要素t2に対して{
   配列Treeに"(t1, t2)"を加える
  }
 }
 return Tree;
}
と考えているのですが、関数の配列の受け渡しがうまくいきません。
まだちゃんと書いていませんが、これだと、
再帰で呼び出した関数内部で呼び出しもとのTreeを書き換えてしまうようです。
どなたか、こんな感じで(でなくてもいいので)
書いていただけたら助かります。

よろしくお願いします。
0170デフォルトの名無しさんNGNG
学校の課題なら「標準入力から〜」とか「標準出力へ〜」などと書かれているものこそ少ないだろう
0171デフォルトの名無しさんNGNG
>>165
#include <stdio.h>

int reverseline(FILE* fp)
{
 char buf[BUFSIZ], *p;
 int ret = 0;
 if (fgets(buf, sizeof buf, fp) != NULL) {
  for (p = buf; *p && *p != '\n'; ++p);
  if (!(ret = *p == '\n'))
   ret = reverseline(fp);
  for (--p; p >= buf; --p)
   putchar(*p);
 }
 return ret;
}

int main(void)
{
 while (reverseline(stdin))
  putchar('\n');
 return 0;
}
0172デフォルトの名無しさんNGNG
>>169
全然やり方違うけど
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=94

>>9のこれは実現してない(ていうか、これは意味がわからん)
> ((((ab)c)d)e) と (((ab)c)(de)) は同じとみなさなくてはいけないのですよ。
0173デフォルトの名無しさんNGNG
8王妃問題です。
下記のプログラムを改良して、盤面を文字を用いて表示させてください。

たとえば、1行目と2行目を描くと・・・
- - - - Q - - -
- - - - - - Q -
このような感じです。

よろしくお願いします。
0174デフォルトの名無しさんNGNG
#include <stdio.h>
int flag_a[8];/* 各行に王妃が配置済みか */
int flag_b[15];/* /対角線に王妃が配置済みか */
int flag_c[15];/* \対角線に王妃が配置済みか */
int pos[8];/* 各列の王妃の位置 */

/*--- 盤面(各列の王妃の位置)を出力 ---*/
void print(void)
{
int i;
for (i = 0; i < 8; i++)
printf("%2d", pos[i]);
putchar('\n');
}

0175173NGNG
/*--- i列目の適当な位置に王妃を配置 ---*/
void set(int i)
{
int j;
for (j = 0; j < 8; j++) {
if (!flag_a[j] && !flag_b[i + j] && !flag_c[i - j + 7]) {
pos[i] = j;
if (i == 7)/* 全列に配置終了 */
print();
else {
flag_a[j] = flag_b[i + j] = flag_c[i - j + 7] = 1;
set(i + 1);
flag_a[j] = flag_b[i + j] = flag_c[i - j + 7] = 0;
}
}
}
}

int main(void)
{
int i;
for (i = 0; i < 8; i++)
flag_a[i] = 0;
for (i = 0; i < 15; i++)
flag_b[i] = flag_c[i] = 0;
set(0);
return (0);
}

0176デフォルトの名無しさんNGNG
>>173
void print(void)
{
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
putchar(pos[row] == col ? 'Q' : '-');
}
putchar('\n');
}
}
0177173NGNG
>176さま、お返事ありがとうございます。

さっそく print関数を入れ替えてコンパイルしてみました。
ですが、
エラー E2188 5-7.c 15: 式の構文エラー(関数 print )
エラー E2451 5-7.c 15: 未定義のシンボル row(関数 print )
エラー E2379 5-7.c 15: ステートメントにセミコロン(;)がない(関数 print )
とエラーがでてしまいます。
15行目は
for (int row = 0; row < 8; row++) {
この行です。解決方法をよろしくお願いします。
0178デフォルトの名無しさんNGNG
Cなら変数の初期化をforの外に出せばOK
0179173NGNG
書き直してみました。
それらしい結果は出力されますが、
8行目で区切りが無く、正しいのか分かりません。
さらなる改良をよろしくお願いします。

void print(void)
{
int row,col;
for (row=0; row < 8; row++) {
for (col=0; col < 8; col++) {
putchar(pos[row] == col ? 'Q' : '-');
}
putchar('\n');
}
}
0180173NGNG
すいません、できました。


void print(void)

{
int row,col;

for (row=0; row < 8; row++) {
for (col=0; col < 8; col++) {
putchar(pos[row] == col ? 'Q' : '-');
}
putchar('\n');
}
putchar('\n');

}
0181デフォルトの名無しさんNGNG
bubble関数を修正してください。ほぼ正しいはずです。

#include <stdio.h>
#define swap(type, x, y)do {type t = x; x = y; y = t; } while (0)
/*--- 単純交換ソート ---*/
void bubble(int a[], int n)
{
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = n - 1; j > i; j--)
if (a[j - 1] > a[j])
swap(int, a[j - 1], a[j]);
}
}

int main(void)
{
int i;
int x[7];
int nx = sizeof(x) / sizeof(x[0]);
printf("%d個の整数を入力せよ。\n", nx);
for (i = 0; i < nx; i++) {
printf("x[%d] : ", i);
scanf("%d", &x[i]);
}
bubble(x, nx);/* 配列xを単純交換ソート */
puts("昇順にソートしました。");
for (i = 0; i < nx; i++)
printf("x[%d] = %d\n", i, x[i]);
return (0);
}
0182181NGNG
こちらが修正して欲しいバージョンです。
比較、交換を先頭側から行いたいです。最大要素が、末尾側に移動するようにします。

void bubble(int a[], int n)
{
int i, j;

for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++)
if (a[j] > a[j++])
swap(int, a[j], a[j + 1]);
}
}
0183デフォルトの名無しさんNGNG
>>181
整数の場合に限り
#define swap(a,b) a^=b^=a^=b
が使える。
0184181NGNG
>>183
他の方法はございませんか?
182の改良をして欲しいです。煮詰まってしまいました。
0185183NGNG
#define swap(a,b) a^=b^=a^=b
void bubble(int a[], int n)
{
    int i,j;
    for(i=0;i<n;i++){
        for(j=i+1;j<n;j++){
            if(a[i] > a[j]) swap(a[i],a[j]);
        }
    }
}
0186デフォルトの名無しさんNGNG
って、途中で書き込んでしまったが、、、
普通バブルソートって↑みたいにやるんでない?
0187181NGNG
すばやいレスありがとうございます。

ですが、
#define swap(a,b) a^=b^=a^=b
は使わない方法が知りたいです。講義で習っていないので。
説明が足りなくて、お手数を掛けてしまいすいません。
よろしくお願いします。
0188181NGNG
練習問題なので普通じゃないのかもしれません。
異なった方法で求めさせる問題が多いのです。
0189デフォルトの名無しさんNGNG
>>181
応用汁!
0190デフォルトの名無しさんNGNG
#define swap(a,b) a^=b^=a^=b

未定義
0191デフォルトの名無しさんNGNG
誰か行列式を求めるアルゴリズムを教えて下さい。
0192デフォルトの名無しさんNGNG
>>190
どこら辺が未定義なのか
サンプルのコード出して解説きぼん。
0193デフォルトの名無しさんNGNG
>講義で習っていないので

俺もこんな言い訳したいよ。
0194_NGNG
http://homepage.mac.com/hiroyuki44/
0195デフォルトの名無しさんNGNG
STL使い出したら自前でソートの関数書くなんてことは
ないんだがなー。
0196デフォルトの名無しさんNGNG
>>192
副作用完了点は不定
ビット演算の結果は常に処理系依存
一つの評価単位で変数が二度以上変更されると未定義

不定、処理系依存、未定義。トリプル役満
0197デフォルトの名無しさんNGNG
#define int_swap(a, b) {int tmp = (a); (a) = (b); (b) = tmp;}
0198デフォルトの名無しさんNGNG
>>196
define の後に()が付いてないのは頂けないし
swap(a,b++)とかしたら、どうすんだ?とも思うし
前の副作用完了点から次の副作用完了点までの間に
同一の変数が二度以上変更されると未定義だが
ビット演算の結果は常に処理系依存って言うのは、この場合関係ないだろ
0199デフォルトの名無しさんNGNG
処理が軽くなるわけでも読みやすくなるわけでも無いのに
0200デフォルトの名無しさんNGNG
使えるか使えないかは別として、
#define swap(a,b) a^=b^=a^=b
こういうのって、なかなか思いつかないんだよな〜。
0201デフォルトの名無しさんNGNG
>>196
どうも。

>ビット演算の結果は常に処理系依存
>> or << のことと混同してない?
XOR演算が処理系依存なわけがないと思われ。

>一つの評価単位で変数が二度以上変更されると未定義
^= は右結合性だから、まともな処理系・コンパイラなら
(a^=(b^=(a^=b)))
と解釈されて大丈夫なはず。

とりあえず、ググって調べてみます。
0202デフォルトの名無しさんNGNG
>>200
だから、↓みたいにしないと駄目だって
#define swap(a,b) (a^=b^=a^=b)

>>201
まともであろうと、なかろうと、規格で未定義のものは使ったらアカンて
0203デフォルトの名無しさんNGNG
>>201
ビット演算の結果は常に処理系依存って言うのは
-1&1, -1|1, -1^1 …のように、
数値をビット演算した結果の数値が処理系依存って事だと思う
(ビット演算なんだから、当然な訳で…)
まぁ、この場合、全く関係ない事ですけどね
0204デフォルトの名無しさんNGNG
<<201
>> or <<のことと・・・
orも処理系依存?とか思ってしまった俺ってバカ?
0205デフォルトの名無しさんNGNG
>>201
>>> or << のことと混同してない?
>>や<<は2^nの乗除と同等と定められている
&,|,^などの動作は処理系依存として何も規定されていない。
(数値的にだけでなく、ビット列についても全く何も規定していない)
我々が数学的に想像する結果はISO規格としては保証しないということ。

>^= は右結合性だから、まともな処理系・コンパイラなら(a^=(b^=(a^=b)))
ISOの規格上で未定義。もちろん動作する処理系があっても何もおかしくない
不定は三回の代入の順番を決められないところ。最後のa^=のときにまだ
最初のa^=bの代入が終わっていないかもしれない。


必ずISO準拠な訳でもないし、処理系で保証しているならそれもいいんだが
そんなわけでa-=b,b+=a,a=b-aに一票
0206デフォルトの名無しさんNGNG
足し算です。"tasizan"が実行ファイル
・2つを足した場合
./tasizan 10 20
30

・3つ足した場合
./tasizan 10 20 30
2つにしてください

(2行目は出力結果)
と表示させるにはどうしたらいいですか?
0207デフォルトの名無しさんNGNG
>>205
負の>>は処理系依存。

> そんなわけでa-=b,b+=a,a=b-aに一票
オーバーフローはどうする?
0208デフォルトの名無しさんNGNG
>>205
>ビット列についても全く何も規定していない
それは、聞いた事が無いけど、普通ビット演算と言ったら
0&0 -> 0, 0&1 -> 0, 1&0 ->0, 1&1 -> 1
0|0 -> 0, 0|1 -> 1, 1|0 ->1, 1|1 -> 1
0^0 -> 0, 0^1 -> 1, 1^0 ->1, 1^1 -> 0
なのだから、
1+0 -> 1, 1-1 -> 0, 1*1 ->1
規定するまでもなく、ビットの列は保証されてるんじゃないの?
0209208NGNG
言葉が抜けてたので訂正

1+0 -> 1, 1-1 -> 0, 1*1 ->1
等と同様に、規定するまでもなく、ビットの列は保証されてるんじゃないの?
0210デフォルトの名無しさんNGNG
>>207
>負の>>は処理系依存。
ついでに負数回およびbit幅以上のシフトは未定義

>オーバーフローはどうする?
自分で気をつける。まあ遊びだよ

>>208
ちょっと混同していた。Cではそうなってるね
何も書かれていないのはC++のほうだった。見落としかもしれないけど
0211デフォルトの名無しさんNGNG
え、そうなの? 例えば Standard C で 0&1 == 0 って保証されている?
0212デフォルトの名無しさんNGNG
特殊な処理系はほっといて、結論は
inline void swap(int &a, int &b){ a^=b^=a^=b;}
がマクロの罠回避で最強ということでよろしいか?
0213デフォルトの名無しさんNGNG
>>211
0は全てのビットが0である事が保証されている
また、0&1のビット演算に使用される型と==0の比較に使用される型は
等しいはすなので、その結果は0になると思われるけど…間違ってたらスマソ
0214デフォルトの名無しさんNGNG
>>211
いやそれは処理系依存だろうと思う。単に
each bit in the result is set if and only if each of the corresponding bits
in the converted operands is set
となっているだけだから。


ていうかお前らISO+IEC+9899-1999.pdf持ってないのか?
俺が超絶探査能力で見つけてやったぞ。有り難く思え
honors.tntech.edu/~will/iso_9899:1999.pdf
いいのかなあ?しーらないっと。


>>212
だから未定義だといっとるだろうが!!!!

>>213
探すの疲れたから代わりにやってくれ
0215デフォルトの名無しさんNGNG
>>214
Standard C ttp://www-ccs.ucsd.edu/c/ では
Each bit of the result is set if the corresponding bits in both X and Y are set.
となってるわけだが、

>>213
> 0は全てのビットが0である事が保証されている

こっちを見つけることが出来なかった。
もちろん普段はプラットフォームが分かってるから仮定して書いてるけど、
仕様がどうなってるかは知っておきたいなあ。
0216デフォルトの名無しさんNGNG
>>215
単純にソースレベルでの整数の'0'は保証されてたはず…
ただ、-0が存在する処理系で例えば
((a-a)&1==0)
が、どうなるのかは分からない…
0217デフォルトの名無しさんNGNG
>>206
#include<stdio.h>

int main(int argc, char **argv){
int i,j;

if(!(argc==3)){
printf("二つにしてください\n");
return 0 ;
}
sscanf(argv[1],"%d",&i);
sscanf(argv[2],"%d",&j);
printf("%d\n",i+j);
return 0;
}
0218デフォルトの名無しさんNGNG
>217
ありがとうございます
0219デフォルトの名無しさんNGNG
パイを10000桁表示するプログラムお願いしますm(__)m
0220デフォルトの名無しさんNGNG
10000桁分文字として持つか、
多倍長計算でマチンの公式あたりで。
0221デフォルトの名無しさんNGNG
>>219
電気通信大学の方ですか?
0222デフォルトの名無しさんNGNG
>>221
ちゃうで
なんとなく多倍長のやりかた知りたかったんで
0223デフォルトの名無しさんNGNG
宿題じゃないなら自分でやれ
0224デフォルトの名無しさんNGNG
誰かラウンジの宿題のソースの95の問いに答えてくれませんか?
0225デフォルトの名無しさんNGNG
オレニマカセロ!
0226デフォルトの名無しさんNGNG
>>225
そのネタ飽きた
0227206NGNG
う、制限書くの忘れてた
変数使用不可、標準ライブラリー関数3種類(4箇所で使う)でした
217さんごめんなさい
0228デフォルトの名無しさんNGNG
ラウンジの宿題のソースの95って何ぞや?
0229デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=95
0230デフォルトの名無しさんNGNG
>>227
>変数使用不可
無理!!
以上
0231デフォルトの名無しさんNGNG
文字で足して'0'引くとか。
0232デフォルトの名無しさんNGNG
atoi
0233デフォルトの名無しさんNGNG
>>231
"文字列"も変数やて
それに、>>206はコマンドラインから入力を受け取ると思うのだが
argc と argv が使えないから、俺の頭では不可能
0234デフォルトの名無しさんNGNG
最近の若い者は標準入力も知らんのか…

./a.out < input.txt
0235デフォルトの名無しさんNGNG
>>224
面倒やね…
0236デフォルトの名無しさんNGNG
argc, argvは使わないと出来ないだろう。
0237デフォルトの名無しさんNGNG
./tasizan 10 20
30
0238デフォルトの名無しさんNGNG
>>234
>>206には、こう書いてあるのだが
>./tasizan 10 20
>./tasizan 10 20 30
確かに、>>227に入力方法を変えてはいけないと言う条件は無いな…
0239デフォルトの名無しさんNGNG
int main(const int argc, const char **argv)
変数じゃなくて定数・・・
ダメ?
0240デフォルトの名無しさんNGNG
>>239
グッジョブ
そのネタ、今日一番おもろかった
0241206NGNG
自分も考えたのですが
…できませんTT
皆さんありがとうございました
0242デフォルトの名無しさんNGNG
>>206
ちょっと待て、
変数使用不可と言う条件が不可能なだけで
恐らく、この課題を出された時に、
無条件に全ての変数の使用不可とは言われてないはずだ
つーわけで、もう少し詳しい条件は無いのか?
0243デフォルトの名無しさんNGNG
>>229
http://www.ccg.leeds.ac.uk/james/aStar/
0244206NGNG
あ、、
引数以外に変数を使わないこと。
って書いてあります。
0245デフォルトの名無しさんNGNG
int main(int argc, char **argv){
if(!(argc==3)){
printf("二つにしてください\n");
return 0 ;
}
printf("%d\n",atoi(argv[1])+atoi(argv[2]));
return 0;
}
0246デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char** argv)
{
if (argc != 3) {
fputs("2つにしてください\n", stderr);
return 1;
}
printf("%d\n", atoi(argv[1]) + atoi(argv[2]));
return 0;
}
0247デフォルトの名無しさんNGNG
>>246
stderrは微妙に変数のような…
0248デフォルトの名無しさんNGNG
じゃあ
puts("2つにしてください");
0249デフォルトの名無しさんNGNG
>>247
マクロかもしれない
0250206NGNG
みなさんありがとうございます
だんだん分かってきました
自分まだまだ勉強不足です。もっと勉強します
0251デフォルトの名無しさんNGNG
>>249
stdinもstdoutもstderrも
全部freopen()出来なかったっけ?
0252デフォルトの名無しさんNGNG
なあみんな、よく問題の条件について不毛なやり取りがあるが、次スレから>>1に

「問題文は出されたそのままを書きやがれ。
 てめえの足りねえ頭で解釈した内容を書くんじゃねえぞゴルァ」

ってかいといたほうがよくない? ま、それでも不毛なやり取りはなくならんだろうけど。
0253デフォルトの名無しさんNGNG
>>252
全文が長すぎる場合に、そのまま全て書かせるのもどうかと…
0254デフォルトの名無しさんNGNG
英文テキストファイルを読み込んで、
読み込んだ文章と、その文中にある、
単語数、行数、段落数を出力するプログラムの宿題ですが、
途中までやって行き詰まっています。
誰か助けてください。
条件は、文頭にあるvoidの5種類の関数と、whileを使うことです。
自分で途中まで書いた分へのリンクを貼っておきます。↓

http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=96
0255デフォルトの名無しさんNGNG
>>251
スマン
話の流れは読んでいないんだ。>>247しか見ていない。
0256デフォルトの名無しさんNGNG
>>229
問題の意味がわからん。ファイアーエムブレムなどで移動できる位置が明青化する
けど、あれの事?
0257デフォルトの名無しさんNGNG
>>217
> if(!(argc==3))

なぜif(argc!=3)と書かないの?
0258デフォルトの名無しさんNGNG
>>256
A*アルゴリズムを使って、最短距離探索プログラムを
組んでくれって言ってるんじゃない?
0259デフォルトの名無しさんNGNG
正直、A*アゴリズムが分からないんです。グーグルだと、*が文字と識別
されないみたいだから、調べられないし。ファイアーエムブレムだと、
スタート:0,0 ゴール:4,0 コスト 草:1 森:2 山:4
\01234
0草草草草草
1山山山山草
2山草山森森
3山山森森草
4草草草草草
最短の道順は 0,1 1,1 2,1 3,1 4,1 4,0==12見たいにやるのですが。
惜しいのは、真下に行く==13、大きく回りこむ==13。
0260デフォルトの名無しさんNGNG
標準入力からEOFになるまでいくつか数字のデータを入力して、
そのデータを配列に格納したいのですが、
データがいくつ入力されるのか分からないので、
配列をどのくらいの大きさで宣言すればよいのか分かりません。
そこでmallocでまずメモリを動的に確保して、
データが入力されるたびにreallocでメモリを増やすことを考えたのですが、
1回1回データが入力されるたびにreallocを呼び出すので、
なんだか効率が悪そうで気分が良くありません。
これを解決する何かよいアルゴリズムはありませんでしょうか。
それとも諦めて、多少メモリの無駄遣いにはなりますが、
最初から大きめに配列の大きさを宣言しておくのが良いのでしょうか。
C言語でお願いします。
0261デフォルトの名無しさんNGNG
>>260
256バイトずつ確保する
0262261NGNG
配列でなくてもいいならリストにするとか。
0263デフォルトの名無しさんNGNG
>>259
「エースター」で検索。
0264デフォルトの名無しさんNGNG
>>260
よく使われるのは足りなくなった時に現在の2倍reallocする方法
128,256,512,1024,...などなど
0265217NGNG
>>257
最初argc==3の時の処理を書こうと思ってすぐ思い直したら
自然にそうなってた。そういうことない?
0266デフォルトの名無しさんNGNG
>>259
a-star で google
0267デフォルトの名無しさんNGNG
>>263>>266
ありがとうございます。ありました。
http://izariuo.s12.xrea.com/developing/findpath/
あらゆるパターンを調べていくという事だったので、ゲームで使っているのと
同じだった。遅くなるというのも同じだった。ただ、斜め移動とかどうなって
いるのかよく分からないのですが。
0268デフォルトの名無しさんNGNG
質問させてください。

問題自体はよくある西暦・月・日を入力し、
その日の曜日を出力しなさいというプログラムなのですが、
配列や関数などは使わずにif・for・swich-case(breakを使って抜けてはいけない)
と、言う制限がついています。

宜しければ、どなたかヒントをご教授いただけないでしょうか。
ちなみに言語はCです。
宜しくお願いします。
0269132のクラスメート(おそらく)NGNG
俺もわかりません。

関連ホームページみてもさっぱりです。

どなたか ば〜〜〜ん と答えお願いします。


0270デフォルトの名無しさんNGNG
> (breakを使って抜けてはいけない)
すごいな
0271デフォルトの名無しさんNGNG
>配列や関数などは使わず

文字列定数はarray of charだがどうするんだ。
printfもscanfも使えないぞ。あっそれ以前に関数が使えないんだった
0272デフォルトの名無しさんNGNG
>>271
関数が使えないのだからprintfは最初っからつかえないのでokとか。
入出力どーすんだろね。
0273デフォルトの名無しさんNGNG
はっ、しまった…関数はOKです…_| ̄|○
0274デフォルトの名無しさんNGNG
switch-caseでbreak使うなというのもすごいな
0275デフォルトの名無しさんNGNG
制限が厳しすぎて俺には難しい
オマエニマカセタ
0276デフォルトの名無しさんNGNG
break使うなとなると・・・・returnやgotoか?
0277デフォルトの名無しさんNGNG
関数の集まりのCで関数使うなってのは・・・
0278デフォルトの名無しさんNGNG
習ったif・for・swich-case-break文のみで出来るといわれたので…。
gotoは聞いた事がないので使ってはダメだと思います(^^;
0279デフォルトの名無しさんNGNG
>>278
ならswitchは使うな。
0280デフォルトの名無しさんNGNG
オレニマカセルナ!
0281デフォルトの名無しさんNGNG
>>268

#include<stdio.h>
#include<ctype.h>
#include<locale.h>
#include<wchar.h>

int main(){
int c,y=0,m=0,d=0,day;
wchar_t wc=0;

setlocale(LC_ALL, "japanese");/*ここだけは駄目だった*/
for(;c=getchar(),isdigit(c);y*=10,y+=c-'0');
for(;c=getchar(),isdigit(c);m*=10,m+=c-'0');
for(;c=getchar(),isdigit(c);d*=10,d+=c-'0');
if(m<3) m+=12,y--;
day=(y+y/4-y/100+y/400+(13*m+8)/5+d)%7;

switch(day){
case 0: wc+=L'日'-L'月';
case 1: wc+=L'月'-L'火';
case 2: wc+=L'火'-L'水';
case 3: wc+=L'水'-L'木';
case 4: wc+=L'木'-L'金';
case 5: wc+=L'金'-L'土';
case 6: wc+=L'土';
}
putwchar(wc);
return 0;
}
0282デフォルトの名無しさんNGNG
ワイド文字まで持ち出してきたか・・・・
0283デフォルトの名無しさんNGNG
>>281さん

おぉ…ありがとうございますm(_ _)m
しかし、最初の#include部分はstidio.hまでしか使ったことがないのですが大丈夫でしょうか(汗

ちなみに教科書は
ttp://www.amazon.co.jp/exec/obidos/ASIN/4407023058/qid=1056272941/sr=1-11/ref=sr_1_0_11/250-3896315-5368237
を使っており、ここの3章までの内容で作れとの事でした…。
やはりこれだけで作るのはかなり面倒なんでしょうか?
0284デフォルトの名無しさんNGNG
変な条件つけてやる宿題がはやってんのか?
そんなことやったって意味無いだろうに。ご愁傷様。
0285デフォルトの名無しさんNGNG
>>268
main関数を「使って」いることにはならんのかな。
呼び出さなければ定義するのは問題ないのか?
0286デフォルトの名無しさんNGNG
>>285さん

今までやってきた問題では、最初は
#include<stdio.h>

int main (void)
{

}
return 0;
と、言った感じでした。
って、これが質問の答えになっているかどうかわからないですが(汗
0287デフォルトの名無しさんNGNG
なんでそんなところにreturnが
0288デフォルトの名無しさんNGNG
>>281
曜日を表示したあとにreturnじゃだめなの?
0289デフォルトの名無しさんNGNG
「学校の宿題」って色々だな
0290デフォルトの名無しさんNGNG
曜日は英語でもいいんだからsetlocaleやワイド文字は必要ないと思う。
0291デフォルトの名無しさんNGNG
#include<stdio.h>
#include<ctype.h>

int main(){
int c,y=0,m=0,d=0,day;

for(;c=getchar(),isdigit(c);y*=10,y+=c-'0');
for(;c=getchar(),isdigit(c);m*=10,m+=c-'0');
for(;c=getchar(),isdigit(c);d*=10,d+=c-'0');
if(m<3) m+=12,y--;
day=(y+y/4-y/100+y/400+(13*m+8)/5+d)%7;

switch(day){
case 0: putchar('S');putchar('U');putchar('N');return 0;
case 1: putchar('M');putchar('O');putchar('N');return 0;
case 2: putchar('T');putchar('U');putchar('E');return 0;
case 3: putchar('W');putchar('E');putchar('D');return 0;
case 4: putchar('T');putchar('H');putchar('U');return 0;
case 5: putchar('F');putchar('R');putchar('I');return 0;
case 6: putchar('S');putchar('A');putchar('T');return 0;
}
return 0;
}
0292デフォルトの名無しさんNGNG
puts、printfを使っちゃダメなのか?
swich-case-breakはOKなんだから、returnしなくてもいいし。
0293デフォルトの名無しさんNGNG
配列禁止
0294デフォルトの名無しさんNGNG
>>292
>>268 breakで抜けてはならない。

文字列定数は配列だから使用不可ということで。
0295デフォルトの名無しさんNGNG
あ、printfとscanfは勿論OKですー(汗
0296デフォルトの名無しさんNGNG
breakを使うなというのが、そもそもおかしな話だな。
0297デフォルトの名無しさんNGNG
>>296
同意。いくらなんでも〜の感が、おそらく釣りでしょう。
0298デフォルトの名無しさんNGNG
>>294>>296
>>278でswich-case-breakはOKと書いてある。
0299デフォルトの名無しさんNGNG
あ、すみません。
「絶対使うな」ではなく出来れば使うなでした…。

話をややこしくしてしまったすみませんでした(汗
0300デフォルトの名無しさんNGNG
むー…。
やはり無理でしょうか…。
0301デフォルトの名無しさんNGNG
だから問題は全文きちんと写せとあれほど・・・
0302デフォルトの名無しさんNGNG
>>300
おまいには >>281 や >>291 は見えないのか?
0303デフォルトの名無しさんNGNG
見えますが…でも、上記のプログラムはstidio.h以外を使っているので…。
スレ汚しすみませんでした。
0304デフォルトの名無しさんNGNG
>>303
アッタマワルイデスネー
0305デフォルトの名無しさんNGNG
問題は
「西暦・月・日を入力し、
その日の曜日を出力しなさいというプログラムを
配列を使わずに、組め。」
だろ?違うのか?だったら>291でいいじゃん。

気に入らなきゃ、さっさと問題を直せ。
0306デフォルトの名無しさんNGNG
まあまあ
#include <stdio.h>

int main(){
int y,m,d,day;
printf("year/month/date>");
scanf("%d/%d/%d",&y,&m,&d);
day=(y+y/4-y/100+y/400+(13*m+8)/5+d)%7;
switch(day){
case 0:printf("日曜日\n");
break;
case 1:printf("月曜日\n");
break;
case 2:printf("火曜日\n");
break;
case 3:printf("水曜日\n");
break;
case 4:printf("木曜日\n");
break;
case 5:printf("金曜日\n");
break;
case 6:printf("土曜日\n");
break;
}
return 0;
}
0307デフォルトの名無しさんNGNG
swichが嫌ならテーブル使えよ
0308デフォルトの名無しさんNGNG
>>307
がんばって、配列を使わずにテーブルを作ってね
0309デフォルトの名無しさんNGNG
前スレの316が見たいけどもう見れない。
名前とIDのやつね。
だれか教えてくれ。
0310デフォルトの名無しさんNGNG
typedef struct {
char* sun;
char* mon;
char* tue;
char* wed;
char* th;
char* fri;
char* sat;
}TABLE;

TABLE t = {"月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"};
/* dayに0-6が入ってる */

char* p;
p = (char*)&t + (day*sizeof(char*))
printf("%s"p);
0311310NGNG
日曜日入ってなかった
0312デフォルトの名無しさんNGNG
>>309
316 名前:デフォルトの名無しさん[sage] 投稿日:03/06/11 03:15
>>238
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=87
0313309NGNG
>>312
ありがとう!
0314デフォルトの名無しさんNGNG
>>310
アライメントの関係で動作は処理系依存
0315デフォルトの名無しさんNGNG
>>314
どこが?
0316デフォルトの名無しさんNGNG
アラインメント以前に間違っている。
0317デフォルトの名無しさんNGNG
>>268
使ってくれ
#include <stdio.h>

int main(void)
{
    int y,m,day,d;
    scanf("%d/%d/%d",&y,&m,&day);
    if (m == 1 || m == 2) {
        y--;
        m += 12;
    }
    d = (y + y/4 - y/100 + y/400 + (13*m+8)/5 + day) % 7;
    switch(d){
    case 0:
        puts("日");
    case 1:
        if(d) puts("月"); d = 0;
    case 2:
        if(d) puts("火"); d = 0;
    case 3:
        if(d) puts("水"); d = 0;
    case 4:
        if(d) puts("木"); d = 0;
    case 5:
        if(d) puts("金"); d = 0;
    case 6:
        if(d) puts("土"); d = 0;
    }
    return 0;
}
0318デフォルトの名無しさんNGNG
関数使いたいプログラムの典型です。
0319デフォルトの名無しさんNGNG
>>318
関数使いたいプログラムって何?
0320デフォルトの名無しさんNGNG
switch意味無いところにワラタ
0321デフォルトの名無しさんNGNG
「関数使いたいプログラム」って何だろう
0322デフォルトの名無しさんNGNG
文字列は文字配列でつよ
0323デフォルトの名無しさんNGNG
性格悪いな
0324デフォルトの名無しさんNGNG
問題が悪いんだよ
0325デフォルトの名無しさんNGNG
>>291,306,317さん

ありがとうございます。
とても助かりましたー。
これで課題1はなんとかなりそうです。
0326デフォルトの名無しさんNGNG
bmp画像を読み込む関数を作っているのですがうまく動きません。
↓なんですけど教えていただけませんか?

ttp://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=97
0327デフォルトの名無しさんNGNG
それよりなんで低レベル関数を使うの?
0328デフォルトの名無しさんNGNG
与えられた文字列をコマンドラインを使って読み込み、
出力する宿題が出たのですが途中で改行が入っていて、うまく読み込むことができません。
どうすればいいのでしょうか?
どなたか教えてください。
0329デフォルトの名無しさんNGNG
>>328
>>252
0330デフォルトの名無しさんNGNG
コマンドラインから
0331デフォルトの名無しさんNGNG
>>328
「コマンドラインから与えられた文字列を読み込み」ならわかるんだが・・・
与えられた文字列ってどこから与えられた文字列?標準入力でいいの?
0332デフォルトの名無しさんNGNG
>>328
文字列の長さに制限はないの?
0333デフォルトの名無しさんNGNG
>>331
はい、標準出力です。

>>328
ありません。
0334デフォルトの名無しさんNGNG
途中で改行が入っていて上手く読み込めないって、どういう状況が良く分からないんだけど。
0335デフォルトの名無しさんNGNG
>>333
?
0336デフォルトの名無しさんNGNG
>>335
パイプから与えられるという意味では…
# 多分曲解
0337328NGNG
すいませんせ。
説明が悪かったです。

12345 67890
absde fghij
klmno pqrst
uvwxy z
 
↑をコマンドラインで読み込ませたいのですが、
うまくいきません。
どうしたらいいのでしょうか?
0338デフォルトの名無しさんNGNG
あなたはどういうプログラムを書いて、
どういう結果になったの?
0339デフォルトの名無しさんNGNG
あと、プログラムはどうやって実行させるのか。
0340デフォルトの名無しさんNGNG
何をやって、何を期待して、どう期待と違っていたのか君にはわかるのだろう。
しかし君だけわかっていてもわしらにわかるわけないぞ。
0341デフォルトの名無しさんNGNG
>>337
4回実行する
0342328NGNG
>>338

#include<stdio.h>

int main(int argc,char *argv[])
{
int i;

for(i=0;i<argc;i++)

printf("%s\n",argv[i]);
return 0;
}

実行結果は
% comandline 12345 67890
comandline
12345
67890
% absde fghij
absde: Command not found.
% klmno pqrst
klmno: Command not found.
% uvwxy z

と、なりました。
0343デフォルトの名無しさんNGNG
とりあえず

12345 67890
absde fghij
klmno pqrst
uvwxy z

を

data.txt

っていうテキストファイルにして
プログラムと同じディレクトリに置いて

%commandline < data.txt

と実行して味噌
0344343NGNG
あごめん、そのプログラムじゃ無理だった。
どーも、問題の理解の仕方がおかしいよ。

宿題の問題を全文書いて味噌。
0345デフォルトの名無しさんNGNG
>>342
% ./commandline '12345 67890
absde fghij
klmno pqrst
uvwxy z'
commandline
12345 67890
absde fghij
klmno pqrst
uvwxy z
%
0346328NGNG
>>343

% comandline < data.txt
commandline
%

と、なりました。
0347デフォルトの名無しさんNGNG
俺の中のエスパーによるとargvを全て表示しているようだ
0348デフォルトの名無しさんNGNG
コマンドライン引数 http://www9.plala.or.jp/sgwr-t/c/sec11-4.html
0349デフォルトの名無しさんNGNG
結局、宿題じゃなかったということだな
0350デフォルトの名無しさんNGNG
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#pragma pack(push,1)
typedef struct BITMAPFILEHEADE{
unsigned shortFileHeader;
unsigned intFileSize;
unsigned shortReserved1;
unsigned shortReserved2;
unsigned intOffset;
}BITMAPFILEHEADER;
typedef struct BITMAPINFOHEADER{
unsigned intStructureSize;
signed intImageWidth;
signed intImageHeight;
unsigned shortPlaneCount;
unsigned shortBitPerPixel;
unsigned intCompression;
unsigned intImageSize;
signed intXPixelPerMeter;
signed intYPixelPerMeter;
unsigned intColorTable;
unsigned intImportantColor;
}BITMAPINFOHEADER;
0351デフォルトの名無しさんNGNG
typedef struct RGBQUAD{
unsigned charBlue;
unsigned charGreen;
unsigned charRed;
unsigned charReserved;
}RGBQUAD;
typedef struct BITMAP{
BITMAPFILEHEADERBitmapFileHeader;
BITMAPINFOHEADERBitmapInfoHeader;
RGBQUAD*RGBQuad;
}BITMAP;
#pragma pack(pop)
0352デフォルトの名無しさんNGNG
うっぜーな。
先ず何がしたいのか書けよ。
0353デフォルトの名無しさんNGNG
boolLoadBitmapFile(
BITMAP*Bitmap,
char*FileName)
{intFileHandle,X,Y,Index;
RGBQUAD*Pallete;
FileHandle= open(FileName,O_BINARY | O_RDONLY);
read(FileHandle,&Bitmap->BitmapFileHeader,sizeof(BITMAPFILEHEADER));
read(FileHandle,&Bitmap->BitmapInfoHeader,sizeof(BITMAPINFOHEADER));
Bitmap->RGBQuad= (RGBQUAD*)malloc(sizeof(RGBQUAD) * Bitmap->BitmapInfoHeader.ImageWidth * Bitmap->BitmapInfoHeader.ImageHeight);
switch (Bitmap->BitmapInfoHeader.BitPerPixel) {
case 32:
for (Y = 0; Y < Bitmap->BitmapInfoHeader.ImageHeight; Y ++)
for (X = 0; X < Bitmap->BitmapInfoHeader.ImageWidth; X ++)
read(FileHandle,&Bitmap->RGBQuad[Bitmap->BitmapInfoHeader.ImageWidth * Y + X],sizeof(RGBQUAD));
break;
case 24:
for (Y = 0; Y < Bitmap->BitmapInfoHeader.ImageHeight; Y ++)
for (X = 0; X < Bitmap->BitmapInfoHeader.ImageWidth; X ++) {
read(FileHandle,&Bitmap->RGBQuad[Bitmap->BitmapInfoHeader.ImageWidth * Y + X].Blue,sizeof(unsigned char));
read(FileHandle,&Bitmap->RGBQuad[Bitmap->BitmapInfoHeader.ImageWidth * Y + X].Green,sizeof(unsigned char));
read(FileHandle,&Bitmap->RGBQuad[Bitmap->BitmapInfoHeader.ImageWidth * Y + X].Red,sizeof(unsigned char));
Bitmap->RGBQuad[Bitmap->BitmapInfoHeader.ImageWidth * Y + X].Reserved= 0;
if (X == Bitmap->BitmapInfoHeader.ImageWidth - 1 && Bitmap->BitmapInfoHeader.ImageWidth % 4) {
switch (Bitmap->BitmapInfoHeader.ImageWidth % 4) {
case 3: lseek(FileHandle,1,SEEK_CUR);
case 2: lseek(FileHandle,1,SEEK_CUR);
case 1: lseek(FileHandle,1,SEEK_CUR);}}}
break;}
close(FileHandle);
free(Pallete);
return true;
}
0354デフォルトの名無しさんNGNG
新手の荒らしか?
0355デフォルトの名無しさんNGNG
intmain
intArgCount,
char*Argument[])
{
BITMAPBitmap;
if (ArgCount != 2) return 0;
LoadBitmapFile(&Bitmap,Argument[1]);
return 0;
}

やっぱりこっちに貼っておきます。
BMP画像を読み込もうとしていますが、動きません。
コンパイルはできるのですが・・・。
できるだけこれに近い状態で作りたいです。
>>327
ハイレベルでもC言語なら問題ないです。
>>352
申し訳ないです。
0356デフォルトの名無しさんNGNG
326への回答か?
0357デフォルトの名無しさんNGNG
>>356
いえ、質問のほうです。
すいません。
0358デフォルトの名無しさんNGNG
>>357
このプログラムの実行結果はどうなるの?
0359デフォルトの名無しさんNGNG
>>358
問題が発生したためTest.exeを終了します。って出ます。
0360デフォルトの名無しさんNGNG
>>326
読み込むだけなら、いろいろ計算せずに、こんな感じでいけると思うんだけど。

BITMAPFILEHEADER fileHeader;
char *buff;
int bodySize;
BITMAPINFO* bitmapInfo;
RGBQUAD*rgbuad;
char* data;

// とりあえずヘッダーだけ読む
read(fh, &fileHeader, sizeof(fileHeader));

// 残りを読み込むバッファを確保
bodySize = fileHeader.FileSize - sizeof(BITMAPFILEHEADER);
buff = (char*) malloc(bodySize);

// 残りを一気に読み込む
read(fh, buff, bodySize);


// BITMAPINFO の開始位置を計算
bitmapInfo = (BITMAPINFO*) buff;

// RGBQUAD の開始位置は計算
rgpQuad = (RGBQUAD*) (buff + sizeof(BITMAPINFOHEADER));

// ビットマップデータの開始位置を計算
data = buff + fileHeader.Offset - sizeof(BITMAPFILEHEADER);


// あとは、bitmapInfo, rgbQuad, data を利用して好きに料理する
0361デフォルトの名無しさんNGNG
>>326=353
Palleteを何も使ってないのにfree()に渡しているのが異常終了の原因。

#ふっ、出勤前の貴重な仮眠時間を消費しちまったぜ。
0362デフォルトの名無しさんNGNG
>>360
はい。 でも、読み込んで一次元のポインタで二次元配列みたいに使えるようにして
BitmapFileHeader+BitmapInfoHeader+RGBQuad*というメイン関数で宣言されている
構造体に格納したいんです。
ポインタではなく配列を使ってなら読み込めるのですが、
配列では必要なだけメモリを確保ということができないので・・・
(できる処理系が有ると聞いたことがあるのですが・・・本当かな?)
あと、このようにした場合確保したメモリはどこで開放すればよいのでしょうか?

>>361
本当だ。 ありがとうございます。
以上終了はしなくなりました。 でも・・・うまく読み込めてないです・・・。

全文↓
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=98
0363デフォルトの名無しさんNGNG
任意の3元連立1次方程式を与えPivot選択を考慮した
Gaussの消去法を用いて解くCの宿題を教えてくれないか
tu-ka自力じゃ全くワカンネ
0364デフォルトの名無しさんNGNG
>>362
>うまく読み込めてないです
とはどういう状態だ?
小さ目の画像でテストするとして、例えばLoadBitmapFile()内の
YとXのループがちゃんと必要な回数回っているか、
ループから抜けた時点でファイルポジションが予想通り進んでいるか、
などなど自分でチェックできることは山ほどあるだろ?
0365デフォルトの名無しさんNGNG
>>363みたいな奴って、すごくムカツクんだけど・・・
0366デフォルトの名無しさんNGNG
全くとかさっぱりとか言ってる奴を相手する時は、
何一つ文句の付けようのない完璧な答を出しましょう。
さもないと粘着される恐れがあります。
皆さん気をつけましょう。
0367デフォルトの名無しさんNGNG
>>365-366
くだらねえことで雰囲気悪くしてんじゃね('`)
0368デフォルトの名無しさんNGNG
>>363
http://216.239.39.100/search?q=cache:oS3E95qSqeMJ:fukunm12.nucl.kyushu-u.ac.jp/~akasaka/memo/c/simuleq.html+Pivot%E9%81%B8%E6%8A%9E+Gauss%E3%81%AE%E6%B6%88%E5%8E%BB%E6%B3%95

これ以上の要望には答える気はないので、粘着しないでねw
0369デフォルトの名無しさんNGNG
>>367
キミもね。
0370デフォルトの名無しさんNGNG
>>369
君もね
0371デフォルトの名無しさんNGNG
てか、回答を求めているのではなく「宿題を教えて」というのだから、
363に該当する例題文を教えてあげれば( ̄ー ̄)
0372デフォルトの名無しさんNGNG
>>371

---
次のような宿題が出されたのですが、どうしてもやりかたが解りません。
もし良かったら、助けてもらえませんか?

・任意の3x3(X)と1x3(Y)の実数行列を与える。
・これを、Pivot選択を考慮して、Gaussの消去法による連立方程式のプログラムを作成せよ。
・なお使用する言語は、C言語(Machine C除く)とする。

よろしくおねがいします。

---
これでいいでしょーか?
0373デフォルトの名無しさんNGNG
ダメ :-P
0374デフォルトの名無しさんNGNG
>>372
ttp://fukunm12.nucl.kyushu-u.ac.jp/~akasaka/memo/download/gauss.pdf
0375デフォルトの名無しさんNGNG
実数値のデータの配列(a)と、それに含まれるデータ(実数値)の個数n(10以下の自然数)
を受け取り、そのデータの平均値を返す関数average(a, n)を作れ。
また、average()を用い、データの分散を返す関数variance(a, n)を作れ。
更にvariance()を用い、データの標準偏差(standard deviation)を計算する関数SD(a, n)を作り、
まず
1. データの個数(10以下)
次に
2. 各データの値(実数値)
を入力すると、そのデータの平均値、分散、標準偏差を表示するprogramを作りなさい。

Cでお願いします。
0376デフォルトの名無しさんNGNG
double average(a, n) {
 double s = 0;
 int i;
 for (i = 0; i < n; i++) {
  s += a[i];
 }
 s /= n;
 return s;
}
めんどくせ
0377デフォルトの名無しさんNGNG
>>375
#include <stdio.h>
#include <math.h>
double average(double *a, int n)
{
double sum; int i;
for(sum=0,i=0;i<n;i++) sum+=a[i];
return sum/n;
}
double variance(double *a, int n)
{
double ave,sum; int i;
ave = average(a,n);
for(sum=0,i=0;i<n;i++) sum+=(a[i]-ave)*(a[i]-ave);
return sum/(n-1);
}
double SD(double *a, int n) { return sqrt(variance(a,n)); }
int main()
{
int n,i;
double *a;
printf("データの個数(10以下)>");
scanf("%d",&n);
a=malloc(n*sizeof(double));
for(i=0;i<n;i++){
printf("各データの値(実数値) [%d]>",i+1);
scanf("%lf",a+i);
}
printf("平均値:%f 分散:%f 標準偏差:%f\n",average(a, n),variance(a, n),SD(a, n));
return 0;
}
0378デフォルトの名無しさんNGNG
データは、ID,姓名,読み(ローマ字)である
データの例
001,太郎,tarou/xxxx(xxxx)\n
002,次郎,jirou/xxxx(xxxx)\n
003,一郎,ichirou/xxxx(xxxx)\n
004,三郎,saburou/xxxx(xxxx)[EOF]
データを格納した構造体を節点とする2分木を作成するプログラムをかけ.新しいデータを
一行ずつ構造体に読み込んで,木に追加していくこと.必ずポインタを使って木を実現し,
データが増えても対処できるようにすること.
また,すべての節点をなぞりながら,データ(ID,姓名,読み)を出力できるようにもせよ.
その際できるだけ見やすい形に表示するよう工夫すること.
0379デフォルトの名無しさんNGNG
二つの変数の和と積を比較して、大きい値を表示させるプログラム
を教えてください。
0380デフォルトの名無しさんNGNG
>>379
int test(int x,int y)
{
    int t = x+y , j = x*y;
    return t<j ? j : t;
}
0381デフォルトの名無しさんNGNG
rand()を使わずに、
乱数を返す関数を作るには時間を利用するしか手はないのでしょうか?
0382デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void){
int hensuu1,hensuu2,i,j;
printf("整数を入力しやがれ\n");
scanf("%d",&hensuu1);
scanf("%d",&hensuu2);
i=hensuu1+hensuu2;
j=hensuu1*hensuu2;
if(i<j){
printf("%d",j);
}
else if(j<i){
printf("%d",i);
}
else{
printf("和も積も同じ値です");
}
}
0383383NGNG
文字列として読み込まれた16進数を整数値に変換する関数int conv16(char str[])を作成しなさい。
例えば、main関数内で16進数字をscanfの形式で標準入力させ(A5と入力したとする)、
conv16(char str[])を実行するとその戻り値が165となる。

お願いします
0384デフォルトの名無しさんNGNG
3025を9で割ったあまりを表示するプログラム
をお願いします。
0385デフォルトの名無しさんNGNG
>>384
死ね
0386デフォルトの名無しさんNGNG
>>383
#include <stdlib.h>
int conv16(char str[])
{
return strtol(str, NULL, 16);
}
0387デフォルトの名無しさんNGNG
>381
seedをどう決めるかという話なら、時間なり好きなものを使えばいい。
randの代替物がほしいなら、自分で線形合同法なりMTなりを
実装すればよろし。
0388226NGNG
>>384
#include <stdio.h>
int main(void)
{
int a;
a=3025%9;
printf("%d",a);
}
0389デフォルトの名無しさんNGNG
>>384
#include <stdio.h>
main(){printf("%d\n", 3025 % 9);}
0390デフォルトの名無しさんNGNG
>>384
#include <stdio.h>
main(){return printf("%d\n", 3025 % 9);}
0391デフォルトの名無しさんNGNG
データ3コa,b,cをキーボードより入力し
もっとも大きい値を出力するプログラムを作れ。ただしif文を使うこと。

お願いします。
0392デフォルトの名無しさんNGNG
>>384
main(){}
0393デフォルトの名無しさんNGNG
データはなんなのか・・・教えてエスパー
0394391NGNG
適当な整数です。すんません。
0395デフォルトの名無しさんNGNG
#define maxof(a,b) ((a)>(b)?(a):(b))
printf("%d", maxof(maxof(a,b),c)); // (・∀・)イイ!!
0396デフォルトの名無しさんNGNG
    /:::::::::::::::::::::/ \:::::::::::::::::::::::::
   /::::::::::::::::::::/    \:::::::::::::::::::::::
   /:::::::::::::::::::/        \::::::::::::::::::::
  /::::::::::::::::::/    ,,,,-―''`\::::::::::::::::::
  |:::::::::::::::::/,,,,,,  ''    _ ヽ:::::::::::::::::
.  |::::::::::::::::/   ヽ    ∠'-' `   \:::::::::::::
  |:::::::::::::::/ ,-、-、 l   ヽ         |:::::::::::::::
.  |::::::::::::::| `´   |           |::::::::::::::::
  ヽ,-―_|    |  __,- )        |:::::::::::_/
  // ̄ヽ    /⌒ リ    \    |:::::::/ ̄\
 / /:::糸工::\    _ _   )   /::::::/   /
 >'つ:::::::イ::::::::ヽ ヽ/,ー―-ヽ    /::::/ /
( < \:::モ::/~~\(::::::::::_/  / ̄ /
 ) ̄ ̄ヽ:::/:::::::::::::::\⌒    /   /
 \ ̄ ̄\   if文使いなさいよ♥
0397デフォルトの名無しさんNGNG
#define maxof(a,b) ((a)>(b)?(a):(b))
if (1) printf("%d", maxof(maxof(a,b),c));
0398デフォルトの名無しさんNGNG
入力された式を
入力された積分範囲で積分してその値を
返すプログラムを作れとのことです。

エキスパートの皆様お願いします。
提出が明日なので、なるべくはやいとうれしいのですが。
0399デフォルトの名無しさんNGNG
>>398
sine
0400デフォルトの名無しさんNGNG
>>398
mathematica使え
0401デフォルトの名無しさんNGNG
欲しがりません勝つまでは。
0402デフォルトの名無しさんNGNG
>>398
入力された式を解析して、関数として呼び出せるようにするプログラムを用意してくれたら作ってやる。
0403デフォルトの名無しさんNGNG
何だか今日は阿呆が多いですな
0404391デフォルトの名無しさんNGNG
とかいいながら誰もわからないという罠w
0405375NGNG
遅くなりましたが、ありがとうございました。
0406デフォルトの名無しさんNGNG
>>398
実行時に式を入力するなら難。
そうでなければ

#include <iostream>
#include <math.h>
using namespace std;
double func(double x)
{
return x; // y = x
}

int main()
{
double sum = 0.0;
double a, b, dx; cin >> a >> b >> dx; // 入力のチェックはご自分でどうぞ。
for(double i = a;i<b;i+=dx)
sum += dx * func(i);

cout << "integral=" << sum << endl;
return 0;
}
0407デフォルトの名無しさんNGNG
>>406
それは数値積分
0408132NGNG
�@4行4列の行列に値を代入(各自適当な値でいい)
�ALU分解する [L][U]
�BA=LUとなることを確認する。(掛け算)
�C右辺bを与え、LとUをもちいて、AX=bの解であるxを求める[x]
�DAX=bが正しく計算できているか確認。


以上のようなプログラムを作成せよ。

どなたかおねがいします。

0409デフォルトの名無しさんNGNG
>>407
式のまんまふつーに積分できるプログラムが
出来たら特許が取れると思われ。
0410デフォルトの名無しさんNGNG
>>409
公式にはめればできるよ。
0411デフォルトの名無しさんNGNG
>>409
mathematica知らんの?
0412デフォルトの名無しさんNGNG
以下のデータを年号順にソートするのはどうやるのでしょうか・・・

和暦,年,正・散,役職,正・従,位, ,公家名,家格,元家,名前,年齢,天皇,備考
天正,18,散,前権大納言,正,2, ,庭田,羽林家,源,重保,66,後陽成,按察使。
慶長,2,正,権中納言,正,2, ,水無瀬,羽林家,藤原,兼成,84,後陽成,
文禄,5,正,参議,従,3, ,高倉,半家,藤原,永孝,37,後陽成,
文禄,3,散,前左大臣,従,1, ,二条,摂家,藤原,昭実,39,後陽成,前関白。
文禄,3,正,権中納言,従,2, ,広橋,名家,藤原,兼勝,37,後陽成,
天正,15,正,権大納言,正,3, ,徳川,武家,源,家康,0,正親町,八月八日任同日従二位。
天正,15,散,非参議,従,3, ,大中,分類外,大中,時宣,84,正親町,春日社神主。
慶長,12,正,参議,正,3, ,六条,羽林家,源,有広,44,後陽成,
慶長,14,正,権大納言,正,2, ,花山院,清華,藤原,家熈,52,後陽成,
0413デフォルトの名無しさんNGNG
俺の姫達
http://www.k-514.com/html/erolink.html
0414デフォルトの名無しさんNGNG
>>412
和暦を西暦に変換するテーブルをつくる
んで西暦をキーにしてソート
0415デフォルトの名無しさんNGNG
>>410
三角関数(sin, cos, tan)とか、指数・対数関数(log, ln, exp)が出てきても公式に当てはめるだけで
できるわけだな。

>>411
調べてみる。
0416デフォルトの名無しさんNGNG
誰か378お願いします
0417デフォルトの名無しさんNGNG
うんざり
0418デフォルトの名無しさんNGNG
過去ログで勘弁してくれ
0419デフォルトの名無しさんNGNG
>>132
#include <memory.h>
// LU分解のみを行う 結果を am に統合して出力
void LU44(double * am/* 4*4 */, double * m/* 4*4 */)
{
inti,j,k;
memcpy(m, am, sizeof(double)*16);
for(i=0; i<r-1; i++) for(j=i+1; j<4; j++){
am[j*4+i]=am[j*4+i]/am[i*4+i];
for(k=i+1; k<4; k++){
am[j*4+k]=am[j*4+k]-am[j*4+i]*am[i*4+k];
}
}
}
//LU分解され統合された行列 m と右辺列ベクトルである cm から連立一次方程式を解く
void mLUse(double * am/* 1*4 */, double * bm/* 4*4 */, double * cm/* 1*4 */)
{
inti, j;
memcpy(am, cm, sizeof(double)*4);// L*y=b: calc y
for(i=1; i<r; i++) for(j=0; j<i; j++){
am[i]=am[i]-m[i*4+j]*am[j];
}
for(i=r-1; i>=0; i--){
              for(j=4-1; j>i; j--){
am[i]=am[i]-m[i*4+j]*am[j];
}
am[i]=am[i]/m[i*4+j];
}
}
0420前スレ316NGNG
>>378
前スレにも同じ問題があった。
ただそれには少しバグがあったんで修正したのと、少し手直しした。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=99
0421419NGNG
ありゃ、中途半端な状態ではっちゃったわ。
また張りなおす。
じゃ、また。
0422デフォルトの名無しさんNGNG
>>418>>420ちゃんと表示できないのですが…もしよければ実行結果を書き込んでくださいませんか?
0423デフォルトの名無しさんNGNG
>>422
二週間前から同じ問題書きつづけて420まであるのに分からないとは
もうだめぽ
0424419NGNG
#include <memory.h>
// LU分解のみを行う 結果を am に統合して出力
void LU44split(double * am/* 4*4 */, double * m/* 4*4 */)
{
 int i,j,k;
 memcpy(m, am, sizeof(double)*16);
 for(i=0; i<4-1; i++) for(j=i+1; j<4; j++){
  am[j*4+i]=am[j*4+i]/am[i*4+i];
  for(k=i+1; k<4; k++) am[j*4+k]=am[j*4+k]-am[j*4+i]*am[i*4+k];
 }
}
//LU分解され統合された行列 bm と右辺列ベクトルである cm から連立一次方程式を解く
void LU44solve(double * am/* 1*4 */, double * bm/* 4*4 */, double * cm/* 1*4 */)
{
 int i, j;
 memcpy(am, cm, sizeof(double)*4);
 for(i=1; i<4; i++) for(j=0; j<i; j++){// L*y=b: calc y
  am[i]=am[i]-bm[i*4+j]*am[j];
 }
 for(i=r-1; i>=0; i--){ // U*x=y: calc x
  for(j=4-1; j>i; j--) am[i]=am[i]-bm[i*4+j]*am[j];
  am[i]=am[i]/bm[i*4+j];
 }
}
多分これでいい(確認はしてない)。まえ〜に作った任意の行列用のものを適当に4*4にしたから
間違ってる可能性も高い。そこは何とかしてくれ。ちなみに上位三角行列と
下位三角行列(対角要素が1になるようにしている)で後者の対角要素が1なもんで
これを一つにして am に出力している。ってことでL*U=Aの確認とかは適当にやってね。
0425419NGNG
LU44splitのほう memcpy(am, m, sizeof(double)*16); ね

あと行列は行を1行目から4行目まで連ねてdoubleの配列にしているからね。
なんか俺、ちょろっと書いて済まそうと思ったのにずいぶん必死だよ〜
0426420NGNG
>>422
どう表示されない?
確かに%sの精度指定にバグがあった。
でも修正してからは、期待した通りに表示できてるぞ。
こちらが実行結果を書き込んだからといって、解決する問題じゃないと思うが…
それともソースを書き込んであるサイトが表示できんのか?


--R--とかいうのは横にのびすぎて見やすくないと思うからやらんぞ。
0427デフォルトの名無しさんNGNG
>>420
はやさしいな
アルゴリズムの本買えば例題として載ってるような問題なのに
0428謎の男(汗NGNG
>>424

for(i=r-1; i>=0; i--){ // U*x=y: calc x

ここのr は4だな
0429デフォルトの名無しさんNGNG
データファイルが以下のように与えられている。
--------------------------------
1 sapporo
2 tokyo
3 osaka
4 fukuoka
-1 
1 2 894
1 3 1161
2 3 514
2 4 1041
-1 -1 0
-----------------------
このとき出力が
sapporo→tokyo : 894
sapporo→osaka : 1161
tokyo→osaka : 514
tokyo→fukuoka : 1041
となるようなプログラムを作れ。
この問題が分かりません。誰か教えて下さい。
0430デフォルトの名無しさんNGNG
隣接リストつくってそこに蓄えろ
0431デフォルトの名無しさんNGNG
>>429
-1 
と
-1 -1 0
の意味が分かりません。>>429教えて下さい
0432デフォルトの名無しさんNGNG
-1を目印にしてひたすら読め
0433デフォルトの名無しさんNGNG
問題くらいはちゃんと理解して提示してくれなけりゃ、
どうしようもないな。
0434デフォルトの名無しさんNGNG
1 サブ関数にポインタを使う
2 サブ関数に配列を使う
3 サブサブ関数を使う。
この3つに対してべつべつに組むか、一つにまとめるかは任意。
関数の中身は自由。
よろしくおねがいします
0435デフォルトの名無しさんNGNG
>>427じゃあその例題のせてください
0436デフォルトの名無しさんNGNG
>>434
サブ関数とサブサブ(?)関数を1つにまとめたら
サブ関数の1つしか無くなるから、明らかに>3に反するだろ
0437デフォルトの名無しさんNGNG
サブ関数てのは関数内関数のことか?
0438デフォルトの名無しさんNGNG
>>437
サブ関数と言うのは関数名や変数名が
なにやら妖しげな単語に…コレ以上恐ろしいので勘弁
0439434NGNG
>>436
では、別々に組むしかないというわけですね。
>>437
おそらくそうだと思います。
講義中にはmain以外に、int subとか void subという文章が出現していたので。

では、別々に1つずつお願いします。
0440デフォルトの名無しさんNGNG
int やらないか?(char* str);


やらないか?("ウホッ!いい男");
0441デフォルトの名無しさんNGNG
>>438
標準C/C++じゃ無理な課題だな。
0442434NGNG
#include<stdio.h>

int sub ( )
{
return 1;
}

int main ( )
{
printf("sub()= %d\n",sub());
return 0;
}

自分なりにやってみました、これは434の1をみたしてますか?
これを基準に他の二つを作れないでしょうか…?
0443441NGNG
>>439だった
0444デフォルトの名無しさんNGNG
>>441
ええ、それは、もう、標準なC等では無いです
何しろ、相手は…
0445441NGNG
訂正したんだから流してくれよ>>444
0446434NGNG
>>442
こっちでした #include<stdio.h>
int sub (int *x)
{
*x=10;
return *x;
}
int main ( )
{
int a=5;
printf("a=%d,sub(a)=%d \n",a,sub(&a));
return 0;
}

0447デフォルトの名無しさんNGNG
>>446
何か人間不信に陥りそうなソースやね
0448デフォルトの名無しさんNGNG
subのアニキは何がしたいんだと
0449434NGNG
>>447 448
忠告ありがとうございます。
では、どのようにすればよいのでしょう?
0450お願い厨NGNG
Visual studio.net で、画像を表示させるプログラムをオリジナルで作らなきゃいけないんですが。
作っていただけますか?

あと、参考プログラムの説明をするために、一行一行説明文を入れなきゃいけないんですよ。
で、それって、どこでお願いすればやっていただけるでしょうか?
昼までなんですけど。。。
0451デフォルトの名無しさんNGNG
>>450
どこかは知らないが、ここじゃないのは確か。
0452お願い厨NGNG
>>451
両方ともですか?
0453デフォルトの名無しさんNGNG
両方とも
0454お願い厨NGNG
えっと、他の所で聞いてみます。
マルチじゃないですよ。ではありがとうございました。
0455デフォルトの名無しさんNGNG
.NETスレで聞いたほうがいいかも
ていうか画像を読んで表示なんて今時のクラスライブラリなら一発でできるかと
0456お願い厨NGNG
>>455
えっと、本当はVisual studioのCだったらなんでもいいです。
なんか手製で作れとのことですので・・・
0457デフォルトの名無しさんNGNG
「本当は」とか言ってあとからいろいろ条件を追加変更する奴は嫌いです。
0458デフォルトの名無しさんNGNG
正整数を第1引数として受け取り、その数の10の位と1の位の数を
それぞれ第2、第3引数(アドレス渡し)に返す関数を作成せよ。
この関数を用い、いくつかの整数を入力し、それぞれの10と1の位の数を表示する。
入力データの終わりは0または負の数が現れたことで判定する。
0459デフォルトの名無しさんNGNG
>>458
Cには値渡ししかありませんが
#include <stdio.h>
void f(int n,int *a,int *b)
{
*a=n%100/10;
*b=n%10;
}
int main()
{
int n,a,b;

for(;;){
printf("正数を入力しる>");
scanf("%d",&n);
if(n<=0) break;
f(n,&a,&b);
printf("%d=[%d %d]\n",n,a,b);
}
return 0;
}
0460デフォルトの名無しさんNGNG
でも入門書にはよくかいてあるね
ポインタのコピーが渡るだけなんだが
0461デフォルトの名無しさんNGNG
それをアドレス渡しって言うんじゃないの?
0462デフォルトの名無しさんNGNG
>461
Cでは「データのあるアドレス」の「値渡し」だ。
0463デフォルトの名無しさんNGNG
C以外ではそれとは違った「アドレス渡し」があるの?
0464デフォルトの名無しさんNGNG
>>459をアドレス渡しと言う。これは渡したいものを主眼とした表現だ。
459,460,462は頓珍漢
0465デフォルトの名無しさんNGNG
FORTRANだと副関数への引数はアドレス渡しだったと思う。
記憶違いだったらスマソ。
0466デフォルトの名無しさんNGNG
>>463
fortranとかだと常にアドレス渡し。逆に値渡しはできない。
コンピュータ言語の歴史をしらないと >>464 みたいになる。
0467436NGNG
>>466
FORTRANしらんのでどーもよく分からんのですが。
Cではポインタ引数にアドレスをコピーする。
FORTRANではどうやって渡すの?

「FORTRANではアドレス渡しだった」といわれても、C言語のような渡しかたしか思い浮かばないんだけど。
0468デフォルトの名無しさんNGNG
FORTRANでは「アドレス渡し」とは言わない。
コンピュータ言語を知らないと>>466みたいになる。
0469436NGNG
言葉の上での違いではなく、引数を渡すメカニズムの違いが知りたいのだが。
Cのポインタ渡しと、FORTRANの引数渡しは、どう違うの?
0470デフォルトの名無しさんNGNG
そもそも「アドレス渡し」ってのはマトモな教科書に載ってる言葉じゃない。
普通は call by value, call by reference, call by name だろう。
call by name ってのはあんまり見ないけどね。
ISO/IEC 9899:1999 には call by value しかのってない。
ま、元凶は >>458 に問題を出したやつってことで。釣りだったのかもしれん。

ちなみにFORTRAN77に call by reference しかないというのは本当。
当然ながら実引数の値が変化しないことは期待できない。例をあげると

      x=2
      y=f(x)
      write(6,*) x,y
      end

      function f(x)
      f=x*x
      x=3
      return
      end

これの実行結果は
  3.  4.
つまり2行目で f(x) を読んだあと x は 3.0 に、 y は 4.0 になっている。
0471436NGNG
C++の参照渡しみたいなもんと思えばいいのかな?
それなら分かる。
0472デフォルトの名無しさんNGNG
>>459がアドレス渡しなのは正しいんだよ
他に整数渡し、浮動小数点渡し、構造体渡しなどがある
0473デフォルトの名無しさんNGNG
>>471
まあそうかも。上の function f だけコンパイルしてCから呼ぶ場合はこうなる。

float x,y;
extern float f_(float*);

x = 2;
y = f_(&x);

なお参照呼びといっても C++ の dereferene operator & のように
参照そのものを扱う方法はFORTRAN77には一切ない。
参照という概念はFORTRAN77ユーザーから隠されている。
またFORTRAN77ではメインルーチンが領域確保に関する一切の責任を持つ。

>>472
ちなみにその言葉はどの教科書に載っているの?なかなか興味深いのだが。
0474デフォルトの名無しさんNGNG
アドレス渡し、ポインタ渡しは慣用表現
十分通じる。実際459にも通じている
0475デフォルトの名無しさんNGNG
なるほど、正しい慣用表現ね。正しい慣用表現それ自体も興味深い概念だ。
0476デフォルトの名無しさんNGNG
まとめると

参照渡:伝統的にPascalの世界のVar渡という用語も良く使われている。
参照渡の引数には変数しか使用出来ない。定数は不可である。
関数・手続き内部で引数変数に与えた処理はすべて呼び出し側で引数と
して与えた変数に施される。
一定以上の大きさを持った変数は、通常参照渡でしか渡せないことが普通。

値渡:それほど大きな変数でないプリミティブ型の変数・定数は関数の
引数に値渡で渡すことが出来る。
引数変数を引数で与えた定数・変数の値複製で初期化して関数を実行する
ことになる。Pascalのようにstring型のように「大きな」変数も値渡が
出来るような例もある。値渡は、引数として与えるダミー変数の作成を
呼び出し側に義務付けることを強要させることの多い参照渡に較べ
呼び出し側の記述をコンパクトにすることが出来る。

C:引数へのポインタ渡=参照渡と意図的に混同して使われているが
あくまでもポインタの値渡なので、取り扱いには通常の意味での参照渡に
加えて留意しなければならない点が増える。(初心者はポインタの演算と、
ポインタが指している内容の演算を混同し正常に動作しないプログラムを
作りがちである。)

C++:参照渡(&渡)が存在し利用されている。この場合ポインタ渡と
区別されなければならない。通常の言語の参照渡とほぼ同じ意味になる。
しかしポインタ渡と参照渡では、結果的に生成コードは殆ど違いが無い。
0477デフォルトの名無しさんNGNG
だから〜
アドレス渡し(ポインタ渡し)は引数受け渡し方式の事ではなくて
文字通りの意味なんだってば
0478デフォルトの名無しさんNGNG
釣りじゃなければ、中途半端なつっこみは遠慮してほしい。
0479デフォルトの名無しさんNGNG
誰か378お願いします
0480デフォルトの名無しさんNGNG
>>472
アドレス渡し・構造体渡しは通じるが整数渡し・浮動小数点数渡しは微妙。

アドレスや構造体は特定の型に制限する名前じゃなくて引数に渡すときの方法を現してるが、
整数渡しと浮動小数点数渡しは引数の型に着目してるだけだからなぁ。
整数にキャストしたポインタを受け取る関数があったらポインタの整数渡しみたいな表現は出来るかも知れんが。
稀中の稀だし、前二つとは本質的に意味が異なる。

>>477同意
日本語として、引数にアドレスを渡すからアドレス渡しと呼んで何が悪いって感じだな、
無理に専門用語として解釈する必要もあるまい。
0481デフォルトの名無しさんNGNG
>>476
> 参照渡の引数には変数しか使用出来ない。定数は不可である。

C++は定数でも渡せる場合があるけどね。
0482482NGNG
関数getchar()を用いて、標準入力からの入力に現れた数字文字
をカウントするプログラムを作成しなさい。
ただし、入力の終了はCtrl+Dによる。
0483デフォルトの名無しさんNGNG
カウントしたらどうすんの?
その数だけ、BEEP音でも鳴らすんかな
0484デフォルトの名無しさんNGNG
最後の1行が余計だなぁ・・・
0485デフォルトの名無しさんNGNG
>>482
口の利き方がえらそうだから教えない。
0486デフォルトの名無しさんNGNG
>>485
問題文丸写しだと思われ
0487482NGNG
出力してください
'0'=1,'1'=2,・・・・こういう風にです。
0488デフォルトの名無しさんNGNG
うわ、回数を出力するだろうとは思ったけど、
文字毎の回数を出力するとは思わんかったぞ(w
0489482NGNG
>3.141592
>'0':0,'1':2,'2':1.....こうですね
0490デフォルトの名無しさんNGNG
そうですね
0491デフォルトの名無しさんNGNG
ということにしt(ry
0492デフォルトの名無しさんNGNG
>>487

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

int main()
{
int a[10]={0},s;
char d[2]={0};
int f;

while((s=getchar())!=EOF){
switch(s){
case '0': case '1':
case '2': case '3':
case '4': case '5':
case '6': case '7':
case '8': case '9':
d[0]=s;
a[atoi(d)]++;
}
}

for(f=0;f<10;f++)
printf("\'%d\'=%d,",f,a[f]);
putchar('\n');
}
0493492NGNG
テストしていないのであしからず
0494492NGNG
あ、return 0;を最後の行の前に加えて。
0495デフォルトの名無しさんNGNG
>>492
Ctrl+Dで終了してください
0496デフォルトの名無しさんNGNG
#include <stdio.h>
int main()
{
  int c;
  size_t count[10]={0};
  while( ( c = getchar() ) != EOF ) if( '0' <= c && c <= '9' ) ++count[ c - '0' ];
  for( c = '0' ; c <= '9' ; ++c ) printf( "'%c':%u " , c , count[ c - '0' ] );
  printf( "\n" );
  return 0;
}

'0'から'9'までの並びって保証されてなかったっけ?
あと、size_tをprintfで出すのは%uで大丈夫だっけ?
0497デフォルトの名無しさんNGNG
>>496
なんでまたsize_tを選んだの?
0498496NGNG
>>497
数えるから、普通にsize_tにした。
printf使うときになって気になった。
おとなしくunsignedにしといたらいいのかな。
0499デフォルトの名無しさんNGNG
>>498
size_tは配列の大きさなんかを表すときに使うんじゃないか?
(unsigned long) intでいいと思う。
0500デフォルトの名無しさんNGNG
>>496
> '0'から'9'までの並びって保証されてなかったっけ?

文字セットに依存する。が、プログラミング言語C第2版によると、
「幸いこれは通常の文字セットすべてに当てはまる。」
そうだ。
0501デフォルトの名無しさんNGNG
http://www.4japan.tv/~7s_gate/bigagent/index.cgi?ID=kkkk007
http://www.lo-po.com/owner/?3425
http://www.adultshoping.com/addclickport.cgi?pid=1055777477
試しにやってみれば?
0502デフォルトの名無しさんNGNG
>>487
処理系依存でよければ・・・(Ctrl+Dの部分)
#include <stdio.h>

int main(void)
{
int count[10] = {0};
int c;
int i;

do
{
c = getchar();
if((c >= '0') && (c <= '9'))
count[c-'0']++;
}
while(c != 0x00000004);

for(i = 0; i < 10; i++)
printf("'%d':%d,", i, count[i]);

putchar('\n');

return(0);
}
0503 NGNG
文字列として読み込まれた16進数を整数値に変換する
関数int conv16(char str[])を作成しなさい。
例えば、main関数内で16進数字をscanfの形式で標準入力
させ(A5と入力したとする)、conv16(char str[])を実行
するとその戻り値が165となる。

お願いします
0504デフォルトの名無しさんNGNG
>>503
#include <stdlib.h>

int conv16(char str[])
{
return strtol(str,NULL,16);
}
0505496NGNG
sizeofの型がsize_tなのだそうだ。
ってことで、496のプログラムには不適切、と。
0506デフォルトの名無しさんNGNG
回答が気に食わないなら、どこがどう気に入らないか書けばいいのに、
なぜ、こいつ(>>479)とかこいつ(>>503)はそれをしないのだろうか
0507デフォルトの名無しさんNGNG
>>506
>>479はともかく、>>503は>>504が回答してから、
時間が経っていないので見ていない可能性がある。
0508デフォルトの名無しさんNGNG
>>507
>>383>>386
0509デフォルトの名無しさんNGNG

2つ(以上)の jpeg 画像ファイルを入力とし、
横に連結した1つの jpeg 画像ファイルを出力するプログラムを書け。
また、指定した位置に連結できるようにもせよ。
なお、perl で書いてもよい。
0510507NGNG
あ・・・
0511デフォルトの名無しさんNGNG
>>509
どこまでが宿題の範囲だ?
まさかjpegの圧縮展開まで宿題だったら笑うぞ。
0512デフォルトの名無しさんNGNG
てか、C/C++スレで
> なお、perl で書いてもよい。
は無いだろ禿(w
0513デフォルトの名無しさんNGNG
jpegのCライブラリってフリーでソースなかったっけ?
0514デフォルトの名無しさんNGNG
宿題を投げる時の決まり

(1)問題文を全て丸写ししてアップせよ。問題が長い時は>>1のラウンジを使う。どれが自分の考えや解釈で、どれが提示された文章なのかハッキリさせろ。
(2)自分の程度を示せ。バカと利口では教え方もかえなきゃならない。てっとりばやいのは自分の書いたソースをアップすることだ。
(3)何をどうしたいのか明確に。入力や出力のイメージをハッキリさせろ。
(4)データがあるならそれを書け。テキストファイルから読み込んで、とかいう曖昧なことを言わずに、そのテキストファイルの内容を晒せ。
(5)制限事項は明確にしろ。(1)を守れば問題ないはずだ。プログラムを書いてもらってからあーだこーだとリテイクさせるな。
0515デフォルトの名無しさんNGNG
(6)コメントをつけてくれという要望は却下。ソースを理解したければ勉強しろ。
0516デフォルトの名無しさんNGNG
3x^3-2x^2+x-11=0
この方程式を、ニュートン法を用いて解け。
精度は0.001より小さくなるまででよい。
初期値は10とする。

Cです。お願いします。
0517デフォルトの名無しさんNGNG
>>516 ずいぶんいやらしい程式だな
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
double
newton(double (*f)(double), double (*df)(double), double x, double h, int imax)
{
  int c;
  while (fabs(f(x))>h && c<imax){x -= f(x)/df(x); c++;}
  return c>=imax ? 0.0/0.0 : x;
}

#define IMAX 1000000000
double f(double x){return 3*x*x*x - 2*x*x + x - 11;}
double df(double x){return 9*x*x - 4*x + 1;}
int
main(int argc, char **argv)
{
  double x,y,h;
  int i;
  x = argc>1 ? atof(argv[1]) : 10;
  h = argc>2 ? atof(argv[2]) : 0.001;
  i = argc>3 ? atoi(argv[3]) : IMAX;
  printf("x0 = %g; delta = %g; iter_max = %d;\n", x,h,i);
  y = newton(f, df, x, h, i);
  if (y == y) printf("%.10e\n", y); else printf("failed\n");
  return 0;
}
0518509NGNG
>>511
任意のライブラリを用いてよいそうです。
>>512
perl でもよい、という課題だったのでそのまま書きました。
perl のプログラム板はないようですし。

よろしくお願いします。
0519デフォルトの名無しさんNGNG
ソースさらすだけ無駄なのに。
>>517お疲れ様です。
0520デフォルトの名無しさんNGNG
>>509
おいおい誰にきいてんの。
0521デフォルトの名無しさんNGNG
☆覗いてみてください☆(閲覧無料)
http://endou.kir.jp/yuminet/link.html
0522デフォルトの名無しさんNGNG
>>519
いやあ、この方程式のいやらしさが分かったので儲けものだとしておこう。
重解にえらく近いから1億回のiterationでは許容誤差に到達できないんだな。
コードはこぴぺだが。
0523デフォルトの名無しさんNGNG
次の文を実行した後の*p、*q、**q の値を示せ
ただし、 *(100)=200  *(200)=300 とする。

int *p, **q;

p = 100;
q = 100;


という問題がありました。問題自体は解けましたが、
「この問題の解答確認プログラムを作れ」
といわれました。
**qの部分や、アドレス値の指定の仕方がよくわからないので、
どなたか御願いします。
0524デフォルトの名無しさんNGNG
無茶苦茶な問題だな
0525ともNGNG
みてね〜♪
http://www1.free-city.net/home/s-rf9/page005.html
0526デフォルトの名無しさんNGNG
>>523
それは何の冗談でつか? (((( ;゚д゚)))アワワワワ
0527デフォルトの名無しさんNGNG
>>523
動作環境は?
0528523NGNG
>>527
MacOSX cc です
0529デフォルトの名無しさんNGNG
ふつーに
int o=300;
int *p = &o;
int **q = &p;
でいいような気もする。
0530デフォルトの名無しさんNGNG
>>523
警告でるけど気にしないで
int ret(int x)
{
    return x + 100;
}
int test()
{
    int x;
    int *p,*q;
    scanf("%d",x);
    p = q = 100;
    printf("%u ",p);
    printf("%u ",ret(p));
    printf("%u ",ret(ret(q)));
}
0531デフォルトの名無しさんNGNG
あ、scanf使うの忘れてた。
0532デフォルトの名無しさんNGNG
しかも使い方間違ってるし
0533デフォルトの名無しさんNGNG
データ3コa,b,cをキーボードより入力し
もっとも大きい値を出力するプログラムを作れ。ただしif文を使うこと。

お願いします。
0534デフォルトの名無しさんNGNG
>>533
外出。

#define maxof(a,b) ((a)>(b)?(a):(b))
if (1) printf("%d", maxof(maxof(a,b),c));
0535デフォルトの名無しさんNGNG
>>533
#include <stdio.h>
int main(void)
{
int a, b, c;
int max;
scanf("%d%d%d", &a, &b, &c);
max = a;
if(b > max) max = b;
if(c > max) max = c;
printf("%d\n", max);
return(0);
}
0536533じゃない人NGNG
>534
…if文の使い方がすばらしいね。
教授に殴られるかもね
0537デフォルトの名無しさんNGNG
>>536
ネタをネタと(略
0538デフォルトの名無しさんNGNG
まったく学習しない人が多いね
0539デフォルトの名無しさんNGNG
>>533
#include<iostream>
main(){
int a,b,c;
std::cin>>a>>b>>c;
if(std::cout<<std::max(std::max(a,b),c));
}
0540デフォルトの名無しさんNGNG
>>534
ワロタ
0541533じゃない人NGNG
>537
いやいや分かってますって
0542533NGNG
>>534
ありがとうございます。
でもまだリターンをならってないのでできればリターンなしの文をお願いします。
0543注意NGNG
この問題を訊いてきたヤシがいても回答を書かずに
  富山大に感謝汁
  ttp://www.math.toyama-u.ac.jp/~yoshiki-o/seki.html
とだけおながいします。

 1   1
∫ _________ dx
0 Xの二乗+1



この近似値を次の3つの方法で求めてください。

(1)長方形公式
(2)台形公式
(3)シンプソンの公式

 きざみ幅 N=60でよろしくおねがいします。
0544534NGNG
>>542
どういたしまして!(・∀・)
return文とかつかってませんよ。
0545デフォルトの名無しさんNGNG
>>543
  富山大に感謝汁
  ttp://www.math.toyama-u.ac.jp/~yoshiki-o/seki.html
0546デフォルトの名無しさんNGNG
> きざみ幅 N=60でよろしくおねがいします。
ここにツッコミ入れるのもダメ?
0547デフォルトの名無しさんNGNG
プログラムはできたのですが以下の比較のことがわかりません。
素数を求めるプログラムを
エラトステネスのふるいを用いて配列を使った時と、
配列を使わないで作成した時との
コンピューターが必要とする変数の数、計算のかかる手間等の
違いはどのようなものですか?
0548デフォルトの名無しさんNGNG
int sei=0;

cin >> sei;

if(sei%4 == 0 && ( sei%100 != 0 || sei %400 == 0 ) )
{
printf("閏年です\n");
}

何か?
0549デフォルトの名無しさんNGNG
約数を求めるアルゴリズムが思いつきません。
どうかお願いします
0550デフォルトの名無しさんNGNG
>>549
1から順にその数まで剰余が0かどうかを調べる
0551デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void){
int a,b,c;
printf("整数を入力して。\n");
scanf("%d",&b);
for(a=1;a<=b;a++){
c=a+c;
}
printf("1から%dまでの和は%dです。",b,c);
}
このソースおかしいっすか?
あと、retorn文の使い道が分かりません
0552551NGNG
以下のプログラムを修正し、numで渡された単精度小数点数を2進数
で表現する関数void bindump(float num)を作りなさい。
ヒント:共用体を使えと言うことです。
お願いします

#include<stdio.h>
#include "bindump.h"

void bindump(float num)
{
int i;
int bits=sizeof(float)*8;
for(i=bits-1;i>=0;i--){
printf("%d",(num & (1<<i))?1:0);
if(i%8==0)printf(" ");
}
printf("\n");
}

0553デフォルトの名無しさんNGNG
寒気が・・・
0554デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void) {
 int n;
 printf("整数を入力して。\n");
 scanf("%d", &n);
 printf("1から%dまでの和は%dです。", n, n * (1 + n) / 2);
 return 0;
}
0555デフォルトの名無しさんNGNG
>>552
523と同じにおいを感じる
0556デフォルトの名無しさんNGNG
>>547
その作ったプログラムとやらを晒さない限り、
誰にも比較は出来ないと思われ
0557デフォルトの名無しさんNGNG
リトーン
0558デフォルトの名無しさんNGNG
>>550
その数の半分(余り切り捨て)まででいいだろう。
0559初心者NGNG
文字列が全て数値で構成されているかを調べる関数ってありませんか?
例えば、char ten[0]="abcde", ten[1]="123abc567", ten[2]="789";
として、それぞれのポインターを放り込むと、ten[1]とten[2]はprintf("数値じゃないです")、
ten[3]はprintf("789")と帰ってくるような。

0560デフォルトの名無しさんNGNG
>>551がんがれ
>>552ざけんな
0561デフォルトの名無しさんNGNG
>>558
?

二乗根ならわかるが。
0562552NGNG
>>560
お前がな。
こんなやつらに聞いた俺がバカだった。
0563デフォルトの名無しさんNGNG
>>559
int isdigit(const char *str){
for(int i=0;str[i]!=0;i++)
{
  if('0' <=str[i] && str[i] <= '9') continue;
  else return 1;
}
return 0;
}
0564初心者NGNG
>>554をfor文に変えたら
どんなソースになるの?
0565初心者NGNG
お願いだよぉ
0566デフォルトの名無しさんNGNG
>>564
うぜ
#include <stdio.h>
int main(void) {
 int n;
 for (n = 0; n;) {
  printf("整数を入力して。\n");
  scanf("%d", &n);
  printf("1から%dまでの和は%dです。", n, n * (1 + n) / 2);
 }
 return 0;
}
0567初心者NGNG
ってか、>>551のソースのどこがダメなのか分からん。
>>551のほうが分かりやすいような・・・。
0568552NGNG
>>562
これは僕じゃないですよ
0569デフォルトの名無しさんNGNG
>>568
ネタならもっとおもしろいのにしろ。
>>567
ハア?
0570デフォルトの名無しさんNGNG
char *a[5] = {"apple", "lemmon", "net", "online", "neap"}

このように宣言されている場合
a[0]のappleのleとa[1],a[2],a[3],a[4]それぞれの頭2文字と比較したいんですが
どうしたらいいですか?
0571デフォルトの名無しさんNGNG
出力した文字列や数値をすべて消すには
どうしたらいいですか?一部分を指定して消すのは可能ですか?
0572デフォルトの名無しさんNGNG
>>570
strncmpを使う
0573デフォルトの名無しさんNGNG
30秒経ったら終了させたいんですが、
どうやって時間を計るんですか?
time.hをインクルードっすか?
詳しい記述方法をお願いします
0574570NGNG
レスどうもです。
appleの後ろ2文字、比較対照の頭2文字をどうやって指定したらいいんでしょ?
0575デフォルトの名無しさんNGNG
>>573
環境依存じゃない?
Winの窓アプリならSetTimer & OnTimerだが
他はしらね。
0576573NGNG
>>575コンソールなんですがね〜。
そうですか。
どうもありがとうございます。
0577デフォルトの名無しさんNGNG
>>574
#include<stdio.h>
#include <string.h>
int main(void)
{
  char *a[5] = {"apple", "lemmon", "net", "online", "neap"};
  int i;
  for(i=1;i<5;i++) {
    if(strncmp(&a[0][3], a[i], 2) == 0) {
      printf("%s\n", a[i]);
    }
  }
  return 0;
}
0578デフォルトの名無しさんNGNG
わーい!
UNIX/Cを10年以上やりつづけて最近プログラミングなんてしてなかったけど、
新しい仕事がWin/C++。これが久しぶりにプログラミングしたら面白いのよ!
自分好みのクラス作って華やかな画面で動かして。感動したね。
カーナビのソフト作ってるんすけど、新しい開発環境に慣れるより、
測量などの算術式とか出てきてわけわからん。文系の俺にはチト辛い。
0579デフォルトの名無しさんNGNG
おっさんスレ違いですよ
0580デフォルトの名無しさんNGNG
失礼しました〜。今年で30っす。
0581デフォルトの名無しさんNGNG
>551今更ながら。ヨーク自分のコードと見比べるように

#include <stdio.h>
int main(void){
  int a,b,c=0;

  printf("整数を入力して。\n");
  scanf("%d",&b);

  for(a=1;a<=b;a++){
    c+=a;
  }
  printf("1から%dまでの和は%dです。",b,c);

  return 0;
}

とりあえずcを初期化しろってこった
0582デフォルトの名無しさんNGNG
(´・∀・`)幸せそうですな〜
0583570NGNG
>577
有難うございます。

申し訳ないですが、もう一つだけお願いします。
すべてに対してapple同様比較をしたいので以下のように考えたんですが
c = strlen(a[i]);のところで強制終了受けるんですが何がまずいんでしょう?

int i, t, c;
for(i = 0; i < 5; i++){
c = strlen(a[i]);
for(t = 0; t < 5; t++){
if(strncmp(&a[i][c - 2], a[t],2) == 0)
}
}
0584571NGNG
どうかお願します。
確か、system....だったような。
よく覚えてないんです
0585デフォルトの名無しさんNGNG
>>584
system("cls");で全部消せるよ
0586デフォルトの名無しさんNGNG
>>584
氏ね
0587デフォルトの名無しさんNGNG
>>583
それであってる訳だが。VCとBCCでやったけど落ちなかったよ
0588571NGNG
>>585
どうもありがとうございます。
よく覚えておきます。
>>586
はぁ、そうですか。
0589デフォルトの名無しさんNGNG
>>586
失礼なやつだなー
0590デフォルトの名無しさんNGNG
連結リストpと整数Xを引数とし、pの要素の中でx以下の要素がxより大きい要素より
すべて前に来るように並び替え、結果のリストを返す関数partitionを書け。mallocなどの
メモリ割り当て関数を使ってはいけない。


typedef
struct node{
int val;
struct node* next;
    }  *list;

よろしくお願いします。
どういう風に並び替えていくのか、考え方も教えてください。
0591デフォルトの名無しさんNGNG
>>552
#include <stdio.h>
#include <limits.h>
#define LITTLEENDIAN 1
#define BIGENDIAN (!LITTLEENDIAN)

void bindump(float num)
{
int i, j = CHAR_BIT, endian = LITTLEENDIAN;
union {unsigned char c[sizeof(float)]; float f;} x;

x.f = num;
if (*(char*)&endian == 0) endian = BIGENDIAN;
for (i = 0; i < sizeof(float); i++, j = CHAR_BIT) {
unsigned char c = x.c[endian == BIGENDIAN ? i : sizeof(float)-i-1];
while (j--) putchar('0' + ((c >> j) & 1));
}
puts("");
}
0592デフォルトの名無しさんNGNG
>>590
連結リストpの型がlistなのか?
0593デフォルトの名無しさんNGNG
>>590
list partition(list p, int x) {
  list head, tail, t;
  if (p == NULL) return NULL;
  head = tail = p;
  p = p->next;
  while (p != NULL) {
    t = p;
    p = p->next;
    if (t->val <= x) {
      t->next = head;
      head = t;
    } else {
      tail->next = t;
      tail = t;
    }
  }
  tail->next = NULL;
  return head;
}
pの頭から要素を取り出し、x以下であれば新しく作るリストの頭へ、
そうでなければ尻尾へ加える。
0594デフォルトの名無しさんNGNG
リストを舐めていき、x以下の要素を発見次第、リストの先頭にもっていく。

node *partition( node *p, int x )
{
node *p_first = p;
if(!p) return 0;
while( p->next )
{
 if( p->next->val <= x ){
  node *move_p = p->next;
  p->next = p->next->next;
  move_p->next = p_first;
  p_first = move_p;
 }else
  p = p->next;
}
}
return p_first;
}
0595590NGNG
>>592
そうです。

>>593,594
わかりました。ありがとうございます!

0596デフォルトの名無しさんNGNG
e(ネピアの定数)を求めるプログラムをC言語で作成してください。
初心者なのでなるべく簡単なわかりやすいプログラムがいいです。
0597デフォルトの名無しさんNGNG
expをマクローリン展開する。
多分いままでにでてきたと思う。
0598デフォルトの名無しさんNGNG
>>596
exp(1);
0599デフォルトの名無しさんNGNG
>>596
宿題じゃないとやらない
0600_NGNG
http://homepage.mac.com/hiroyuki44/
0601667NGNG
いいおっぱいの愛人はただひとり
0602デフォルトの名無しさんNGNG
( ´д)ヒソ(´д`)ヒソ(д` )ヒソ
0603603NGNG
文章を表示する回数を入力し、
その回数だけ文章を次のように表示させるプログラムを作成せよ

回数を入力>3

おはよう
こんにちは
こんばんわ

おはよう
こんにちは
こんばんわ

おはよう
こんにちは
こんばんわ
0604GEX▲&rlo;XEG&rle; ◆GEXGEXdRO6 NGNG
とりあえず
僕のソースです

#include <stdio.h>
void r(int);
void main(void)
{
int val;
printf("回数を入力>") ;scanf("%d",&val) ;
r(val);
}

void r(int val)
{
printf("おはよう\nこんにちわ\nこんばんわ\n\n") * val ;
}
0605603NGNG
Σ(゚Д゚)>>664は僕です
0606603NGNG
また間違えたし・・・
0607デフォルトの名無しさんNGNG
8GEX ◆GEXGEXdRO6
なぜか8をGETすることに固執していた固定。
ギコ、しぃのエビフリャAAを好んで使い、エロゲーの曲を8GETの替え歌にして貼る。
最近はGETしていない模様。同じヲタのシャリバーンと仲がいいようだ。
0608デフォルトの名無しさんNGNG
>>607
貴重な時間をそんなことに使っちゃだめですよ
0609デフォルトの名無しさんNGNG
改行コードの変換関数を作りなさいとい課題です

StrCnvで渡された文字列に含まれている改行コードをIntCRLFで指定された改行コードへ
変換し、変換された文字列を返す

char Cnv_CRLF(StrCnv , IntCRLF)
StrCnv : 変換対象の文字列
IntCRLF : 変換する改行コード
0=CR
1=LF
2=CRLF


という課題です
できればサンプルコードみたいに答えていただくとありがたいです
よろしくお願いします
0610デフォルトの名無しさんNGNG
ビット処理は具体的にどのような用途があるか、考察せよ

という課題が出されたのですが、わからないです(;´Д`)
教えていただけませんか?
0611デフォルトの名無しさんNGNG
マルチ氏ね
0612509NGNG
どなたか、この問題解決してもらえないでしょうか?
0613デフォルトの名無しさんNGNG
perlスレ逝け
0614デフォルトの名無しさんNGNG
>>612
画像をつなげるの?
ファイルをバイナリモードで読んでそれをつなげれば!
0615デフォルトの名無しさんNGNG
libjpegを使って良い、とかじゃないとやる気になりません
0616509NGNG
>>615
そんなもの使ったら再提出確実です
0617デフォルトの名無しさんNGNG
>>616
>>518これは嘘か?
0618509NGNG
>> 612
どうすればいいんでしょうか??全く分からないので。
>>616
616 は私じゃないです。

ライブラリは適宜使ってよいということなので、
それを使って構わないと思います。
できそうですか?よろしくお願いします。
0619デフォルトの名無しさんNGNG
614案は?
0620デフォルトの名無しさんNGNG








            END






0621デフォルトの名無しさんNGNG
>>619
横に連結しないから駄目
0622デフォルトの名無しさんNGNG
画像1の横1列(ピクセル分)を読んで、画像2の横1列を読んでを
繰り返せば。
0623デフォルトの名無しさんNGNG
<img src="img1.jpg" /><img src="img2.jpg" />
これでどうよ
0624デフォルトの名無しさんNGNG
>>614
その案て。結局ヘッダのjpegしか表示できないのでは。
0625デフォルトの名無しさんNGNG
ライブラリ言ってもOSに拠るし。
せめて使うライブラリを指定してくれ。
0626509NGNG
>>614
具体的にどういうふうにするのですか?
バイナリをつなげるだけで、指定した位置にまで
連結できるようになるのでしょうか?
0627デフォルトの名無しさんNGNG
出題者の意図はjpegがどうとかかじゃなくて画像を連結しろってことじゃないの?
0628デフォルトの名無しさんNGNG
バイナリってなんだかわかりますか?
バイナリストリームといってどんなデータでも読み出すことができるのです。
16進数で出てくるのでそれを画像1のピクセル分読んでその後に画像2を足して
と続けるとか・・・
fopenかopen関数のどちらでも使えたと思うが調べて勝手に作ってくれ
0629デフォルトの名無しさんNGNG
bmpじゃないんだから・・・
そんなに素直に配置されてるわけないだろ
0630デフォルトの名無しさんNGNG
catをつかえ
0631デフォルトの名無しさんNGNG
EOIがでるまでマーカーをチェキ
MCUを復号だ
0632デフォルトの名無しさんNGNG
ホントに初心者なんですが、ビット処理は具体的にどのような用途があるんですか??
0633デフォルトの名無しさんNGNG
>>632
しつこくマルチか?
それとも同じ学校なのか?
0634デフォルトの名無しさんNGNG
>>632
マルチじゃないです
この質問したの初めてです
0635デフォルトの名無しさんNGNG
>>509
libjpeg使っていいなら、xvのソースを入手してじっくり検討し給え。
0636デフォルトの名無しさんNGNG
>>632
Huffman圧縮など。
0637632NGNG
いや、上のほうで同じ質問してる人いますね…。
同じ学校と思われます…。ちょっとビックリ(゚д゚)
ホントわからないんですよ…。
0638デフォルトの名無しさんNGNG
http://www.amy.hi-ho.ne.jp/jbaba/jpeg1.htm

これで、jpeg->bmp にして、bmp連結しないか?
0639デフォルトの名無しさんNGNG
>>632
この質問見るの今日で4回目なんだけど相当へたれの集まった学校なんだな・・
Cスレに答えが出てるぜ
0640デフォルトの名無しさんNGNG
大雑把な方針。
・libjpegなどを使って画像イメージをメモリ上に展開する。
・メモリ空間上で連結(合成?)処理を行う。
・然るべきフォーマットでファイルに書き出す。
件の課題は、画像処理が主目的なのかCプログラミングが主目的なのか
はっきりしない辺り課題としての評価は低いと言わざるを得ない。
0641デフォルトの名無しさんNGNG
>>640
Perlでも良い事からCプログラミングが目的で無いことは明らか
目的のために手段は選ばんあたりからより実践向けの講義なのだろう・・・
すでにあるプログラムを拝借していっても評価してくれそうだ
0642632NGNG
>>639
4回ですか!?ちょいとワロタよ…。
へたれ学校っすね…。精進しまふ…。
Cスレどれだろ?探してみまつ…。ありがとうございましたm(__)m
0643デフォルトの名無しさんNGNG
ImageMagickのmontageでも使っとけばいいような
0644603NGNG
助けてください・・・
0645デフォルトの名無しさんNGNG
>>603
void r(int val)
{
while ( val-- ) printf("おはよう\nこんにちわ\nこんばんわ\n\n") ;
}
0646603NGNG
>>645
即レスありがとうございます。
質問ですが、while( val-- )の部分が具体的にどのような処理を行っているのかがわかりません。
ループ条件を( )にいれると習ったのですが、。
理解したいのでよろしければ教えていただけませんか?
0647デフォルトの名無しさんNGNG
>>646
while ( val-- ) は while ( val-- != 0 ) と同じ
while ( ) や if ( ) で使われる条件は 0 以外が真で 0 だけが偽
0648603NGNG
>>647
ということは、ループするごとにvalから1を引き、valが0になったら偽になるので終了
ということですね。
ありがとうございました。
0649デフォルトの名無しさんNGNG
while ( val-- > 0 ) を推奨
0650デフォルトの名無しさんNGNG
コマンドラインから入力した文字列の、アルファベットの大・小文字変換のプログラムを、

replace (char *dest, char *str)

という関数を定義して作成しなければならないんですが、
replaceの中身をどうすればいいのか、なかなか思い付きません。

どなたか御教授お願いします
0651デフォルトの名無しさんNGNG
#include <ctype.h>
char *replace (char *dest, char *str)
{
char *save = dest;
for (; *str; ++str) {
if (islower(*str)) {
*dest++ = toupper(*str);
}
else {
*dest++ = tolower(*str);
}
}
return save;
}
0652デフォルトの名無しさんNGNG
>>650
>>651が答えてくれたみたいだけど、
質問する時は、ageた方が良いですよ。
0653デフォルトの名無しさんNGNG
>>651
'\0'文字が追加されてなかったりして。
0654デフォルトの名無しさんNGNG
あ、ほんまや
0655デフォルトの名無しさんNGNG
>>509
http://pc2.2ch.net/test/read.cgi/tech/1053053082/486
0656デフォルトの名無しさんNGNG
#include <stdio.h>

class B{
public:
int operator=(int n){
c = n;
return 0;
}
private:
int c;
};

class C{
public:
int Set(int n){
c = n;
return 0;
}
private:
int c;
};

class B2 : public B{;};
class C2 : public C{;};
0657デフォルトの名無しさんNGNG

class A{
public:
B Left;
B2 Right;
C Top;
C2 Bottom;
};


int main(int argc, char **argv){

A a;

a.Left = 3;
a.Right = 3; <--ここだけコンパイルとおらない
a.Top.Set(3);
a.Bottom.Set(3);

return 0;

}



なんでですか?誰か教えてえらいひと!
0658デフォルトの名無しさんNGNG
演算子は継承されないん違ったか
0659デフォルトの名無しさんNGNG
宿題じゃないんですけど検証お願いします。
>命中率1%の戦車100台対
>命中率100%の戦車10台で打ち合ったら
>どちらが勝ち残るの?
1ターンごとに同時に撃ち合い、どちらかが全滅するまで続けます。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/lounge/file/1055933323_2/tanksim.lzh
0660デフォルトの名無しさんNGNG
>>659
そりゃおめぇ後者だろ
0661デフォルトの名無しさんNGNG
入力 配列を使って
2
2
2
2

2
2
2
2

2
2
2
2

出力
      合計
2 2 2 6
2 2 2 6
2 2 2 6 
2 2 2 6
6 6 6 24 合計
2 2 2 2 平均
0662デフォルトの名無しさんNGNG
>>661
??
0663デフォルトの名無しさんNGNG
縦の合計は8じゃないのかい
0664デフォルトの名無しさんNGNG
>>660
実行結果は後者の勝率が約59%になったんですけど(引き分けはほとんど無い)
プログラムに間違いがあるかもしれないんで、指摘してもらおうと思ったんです。
0665デフォルトの名無しさんNGNG
>>659

そのソースで動くのか?
無限ループの予感。
0666デフォルトの名無しさんNGNG
>>659
ソース見てないけど普通に考えれば前者だよな。
0667659NGNG
どの辺りが問題ですか?BCCでは警告無しで動きましたけど。
0668デフォルトの名無しさんNGNG
>>659
人工知能プログラムでも作らないとその問題を
プログラム化するのは無理
0669デフォルトの名無しさんNGNG
>>659
濡れのPCがしょぼ過ぎて100000回ループに時間がかかっただけだった
スマソ
回線切っ(ry
0670659NGNG
>>668
この場合最長でも91ターンで戦闘が終わるので
パターン数はそれほど多くないと思います。
0671デフォルトの名無しさんNGNG
Cで現在時間(もちろんその地域の時刻)を取得し、
それを下のような形式で出力するプログラムをお願いします。

ただ今の時刻はa時b分c秒です
0672デフォルトの名無しさんNGNG
int GetTimeStr(void)
{
char *str_org = "ただいま%2d年%d月%2d日の%2d時%2d分%2d秒です";

time_t long_time;
struct tm *now_time;
time(&long_time);
now_time = localtime(&long_time);
sprintf(time_str, str_org,
now_time->tm_year, now_time->tm_mon + 1,
now_time->tm_mday, now_time->tm_hour,
now_time->tm_min, now_time->tm_sec);
return 0;
}
0673デフォルトの名無しさんNGNG
>>659
ランダムでなくて確実に100回目に命中とかにしたら

int judge_hit_a(int num_attack) //命中判定
{
 static int g_hit_a = 0 ;
 int hit=0;

 while(num_attack--){
  g_hit_a ++ ;
  if(g_hit_a >= 100){
   hit ++ ;
   g_hit_a -= 100 ;
  }
 }
 return hit;
}
こんな感じ
0674デフォルトの名無しさんNGNG
>>671
#include <stdio.h>
#include <time.h>

int main(void)
{
struct tm *newtime;
time_t long_time;

time(&long_time);
newtime = localtime(&long_time);

printf("ただ今の時刻は%d時%d分%d秒です\n",
newtime->tm_hour, newtime->tm_min, newtime->tm_sec);

return(0);
}
0675デフォルトの名無しさんNGNG
>672,>674
ありがとうございます
0676デフォルトの名無しさんNGNG
>>659
いつも同時に打ち合うとしてBの打ち方は同じになるけど
Aは打つたびに打ち方に戦略を持ち込むことができるのに
このプログラムにそれがはない。
0677デフォルトの名無しさんNGNG
>>659
> if(rand() < percent_hit * (RAND_MAX+1))
ここの1を足しているところがまずそうだが…
0678677NGNG
なんかはずしているみたい…
0679デフォルトの名無しさんNGNG
>>678
いや、確実にまずい。
RAND_MAXがINT_MAXな場合オーバーフローする。
オーバーフローした時の動作は未定義だけど、負になる処理系だと
hitすることがないから、永久に外し続ける。
0680659NGNG
if(rand() < percent_hit * ((double)RAND_MAX+1)
ならいいですか?
>>676
敵全体に均等に攻撃して、出来るだけ命中のダブりを避けるという戦略なんですけど
一応自分ではこれが一番いいやり方だと思ってます。
0681デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void){
double a,b;

printf("データを入れてちょうだいな");
scanf("%lf%lf",&a,&b);

printf("和は%lf\n",a+b);
printf("差は%lf\n",a-b);
printf("積は%lf\n",a*b);
printf("商は%lf\n",a/b);

retorn 0;
}
0682デフォルトの名無しさんNGNG
宿題で、とあるサイトの演習問題をコンパイルしろといわれたのですが、
全く同じにやってもエラーになります。
どこが違いますか?
0683681@682NGNG

0684デフォルトの名無しさんNGNG
>>682
http://pc2.2ch.net/test/read.cgi/tech/1056109884/822-828
0685デフォルトの名無しさんNGNG
retorn
0686デフォルトの名無しさんNGNG
>>682
声が違う 年が違う 夢が違う ほくろが違う
0687デフォルトの名無しさんNGNG
retorn 0にはワロタ
0688デフォルトの名無しさんNGNG
>>682
#define retorn return
を追加
0689デフォルトの名無しさんNGNG
>>688
だめでした

#include <stdio.h>
int main(void){
double a,b;

printf("データを入れてちょうだいな");
scanf("%lf%lf",&a,&b);

printf("和は%lf\n",a+b);
printf("差は%lf\n",a-b);
printf("積は%lf\n",a*b);
printf("商は%lf\n",a/b);

retorn 0;
}
#define retorn return
0690デフォルトの名無しさんNGNG
>>689
ワラタ
0691デフォルトの名無しさんNGNG
#include <stdio.h>
int main(void){
double a,b;

printf("データを入れてちょうだいな");
scanf("%lf%lf",&a,&b);

printf("和は%lf\n",a+b);
printf("差は%lf\n",a-b);
printf("積は%lf\n",a*b);
printf("商は%lf\n",a/b);

return 0;
}
0692デフォルトの名無しさんNGNG
だからprintf()に%lfはダメだってば。
0693デフォルトの名無しさんNGNG
ちなみに%nはハックラされる可能性があるのでオススメできない
0694デフォルトの名無しさんNGNG
JFネタをここに書くか・・・
0695デフォルトの名無しさんNGNG
#include <stdio.h>
#include <math.h>
#define N 1000

int readarray(int n[]);
void calculate(int n[], int i, float *sum, float *a, float *v, float *s);
void printresult(float sum, float a, float v, float s);

int main(void)
{
int i, n[N];
float sum, a, v, s;

i = readarray(n);
calculate(n, i, &sum, &a, &v, &s);
printresult(sum, a, v, s);

return 0;
}
0696デフォルトの名無しさんNGNG
int readarray(int n[])
{
int i = 0, x;

printf("input integer (0=end):");
scanf("%d", &x);
while(x != 0 && i <= N)
{
n[i] = x;
i++;

printf("input integer (0=end):");
scanf("%d", &x);
}
return i;
}
0697デフォルトの名無しさんNGNG
void calculate(int n[], int i, float *sum, float *a, float *v, float *s)
{
int j;
float sum1 = 0.0, sum2 = 0.0;

for (j = 0; j < i; j++)
{
sum1 += (n[j]);
sum2 += (n[j]) * (n[j]);
}

*sum = sum1;
*a = (*sum) / i;
*v = sum2 / i - (*a) * (*a);
*s = sqrt(*v);
}

void printresult(float sum, float a, float v, float s)
{
printf("---------------------------\n");
printf("sum = %7.3f, average = %7.3f, variance = %7.3f, stddev = %7.3f\n", sum, a, v, s);
}
0698デフォルトの名無しさんNGNG
>695〜697
??
0699デフォルトの名無しさんNGNG
またエスパー召喚か?
0700デフォルトの名無しさんNGNG
> while(x != 0 && i <= N)
ダウト!
0701デフォルトの名無しさんNGNG
IEを起動しようと、
system("C:/Program Files/Internet Explorer/iexplore.exe");
としたんですが、空白があるため起動出来ませんでした。
systemではこういう場合無理なのでしょうか?
また、他に方法があればご教授お願いします。
0702デフォルトの名無しさんNGNG
>>700
なんで?おせーて
0703デフォルトの名無しさんNGNG
>>701
system("C:/Program\\ Files/Internet\\ Explorer/iexplore.exe");
0704デフォルトの名無しさんNGNG
>>702
while(x != 0 && i < N)
かな?
0705デフォルトの名無しさんNGNG
>>701
system("\"C:\\Program Files\\Internet Explorer\\iexplore.exe\"");
0706C初心者NGNG
下のソース内の『最小データを線形リストより探し削除する』
部分をつくって下さいm(_)m
どうぞ、お願いします。

ソース↓
ttp://acechannel.hp.infoseek.co.jp/wakaranai.c
実行結果↓
ttp://acechannel.hp.infoseek.co.jp/result.txt

0707デフォルトの名無しさんNGNG
http://www.darkcat.on.arena.ne.jp/cgi-bin/dknbbs2/bbs.cgi?sub=list&usr=hello_world82563
Cの掲示板はこちらへ移動しました。
雑談・質問なんでもこちらへどうぞ
0708( ゚∀゚)ノ ィョ―ゥNGNG
お願いします・・・
1.整数aを受け取り、その階乗a!を返す
 関数を作成せよ。
2.整数引数の2乗を返す関数をつくり
 それを用いて1〜20までの2乗の
 総和を返す関数を作成せよ。
3.1つのアルファベット(a,・・・z)
 と整数iを受け取り、そのアルファベット
 よりi個の後ろのアルファベットを返す
 関数を作成せよ。ただし2の後ろはaであるものと
 する。
[例]
 ・cと4を受け取ったならgを返す
 ・yと5を受け取ったならdを返す

多いですがこの3つがどうもわからんのです
どうぞお願いします
0709デフォルトの名無しさんNGNG
> ただし2の後ろはaであるものと

zの後ろはaだろ、問題すら理解出来て無いのかよ
0710( ゚∀゚)ノ ィョ―ゥNGNG
>709
スマソ。。。
問題の写し間違えですた
ご指摘の通りzの後ろはaであるものとするに
訂正させていただきます
0711デフォルトの名無しさんNGNG
char *str = "ABC";
って*は必要なんですか?
よく分かりません。お願します
0712デフォルトの名無しさんNGNG
>>711
必要です。
わかりましたか?お願します
0713711NGNG
*がどういう働きをしているのでしょうか?
0714デフォルトの名無しさんNGNG
ポインタ
0715711NGNG
char str[] = "ABC";
とは違うのでしょうか
0716デフォルトの名無しさんNGNG
違います
0717デフォルトの名無しさんNGNG
>>715
よーし、釣りだと分かっていてもマジレスしちゃうぞ。

char *str="ABC";はchar型へのポインタを定義して文字列定数ABCの先頭アドレスで初期化する。
char str[]="ABC";はABC+'\0'が丁度よくはいる大きさのchar配列を定義し、要素を"ABC"のそれぞれの文字で初期化する。
0718デフォルトの名無しさんNGNG
>>715
C FAQ嫁
0719717NGNG
いつもマジレスしようとすると間違えるんだが。
0720773NGNG
sizeofとかやると違う.後は同じ.
0721デフォルトの名無しさんNGNG
全然違うわヴォケ
0722デフォルトの名無しさんNGNG
>>720
後者は(char *)ポインタの領域が確保されない。だから、

str = "DEF";

出来ない。だろ?
0723773NGNG
sizeofとかやると違う.あと,配列変数は書き込み不可.後は同じ.
0724773NGNG
sizeofとかやると違う.あと,配列変数は初期化時以外は書き込み不可.後は同じ.
0725デフォルトの名無しさんNGNG
>>724
前者は配列用の領域が確保されない。だから、

str[0] = 'D';

出来ない。だろ?
0726773NGNG
sizeofとかやると違う.あと,&とかやると後者は第0要素の&だが前者は違う.あと,配列変数は初期化時以外は書き込み不可.後は同じ.
0727デフォルトの名無しさんNGNG
>>725
構文としては問題ない。
でも何が起こるか分からない。
0728773NGNG
>725, 727
?
0729デフォルトの名無しさんNGNG
>>728
constがついていないから書き換えようとすることは可能。
でも文字列定数を書き換えようとしたら何が起こるか分からないということ。
とにかくやっちゃだめ
0730デフォルトの名無しさんNGNG
>>708
問題1

int kaijou(int a)
{
return(a > 0 ? a*kaijou(a-1) : 1);
}
0731デフォルトの名無しさんNGNG
>>708
問題2
int nijou(int a)
{
return(a*a);
}

int nijou_souwa(void)
{
int i;
int total = 0;
for(i = 1; i <= 20; i++)
total = total + nijou(i);
return(total);
}
0732デフォルトの名無しさんNGNG
>>708
問題3
char arufa(char c, int a)
{
const char *str = "abcdefghijklmnopqrstuvwxyz";
const char *p = str;
int i;
for(i = 0; i < 26; i++){
if(*str++ == c)
break;
}
i = (a + i) % 26;
return(*(p+i));
}
0733デフォルトの名無しさんNGNG
*(p+i)なんて書き方をするくらいならp[i]と書こうよ。
0734732NGNG
>>733
ポインターで宣言したものは、ポインターでの書き方にしてる。
俺のチッポケなこだわり・・・
0735デフォルトの名無しさんNGNG
>>734
なるほど
0736デフォルトの名無しさんNGNG
char rot(char c, int n) { return (c + n - 'a') % 26 + 'a'; }
0737デフォルトの名無しさんNGNG
>729
(゚Д゚)ハァ??
0738デフォルトの名無しさんNGNG
>>737
構文上は問題ないという意味
0739738NGNG
構文エラーにはならないということだ。
0740デフォルトの名無しさんNGNG
公共料金の計算をするプログラムを教えてください。
今回は携帯電話の料金で1分10円
基本使用料金は2000円の設定で
お願いします。scanfで時間を入力した結果
実行結果で料金が表示される形です。
0741デフォルトの名無しさんNGNG
#include <stdio.h>
int main(){
int min,yen;
printf("携帯の使用時間を分単位で入力してください。\n");
scanf("%d",&min);
yen=min*10+2000;
printf("料金は%d円です。",yen);
}
0742741NGNG
誰か反応してよっ!ヽ(`Д´)ノ
0743C初心者NGNG
706見捨てないで下さいm(_)m
お願いしますm(_)m
0744デフォルトの名無しさんNGNG
char str[]="ABC";
str[0] = 'D';

なぜこれがだめなんでしか?
0745デフォルトの名無しさんNGNG
>>744
誰がそんなこと言ったの?(^-^=)♪
0746744NGNG
>745
>729が言った。・゚・(ノД`)・゚・。
0747デフォルトの名無しさんNGNG
>>746
char *str="ABC";
str[0]='D';

これのことですが(^-^#)
0748デフォルトの名無しさんNGNG
eを1万桁まで求めるプログラムを作りなさい。
596にも似たのがあるんですけど、桁数の増やし方が
わからないのでおねがいします。
0749デフォルトの名無しさんNGNG
>>706
時刻要素が複数あるけどarrival_timeでいいの?

Node *DeleteMin(Node *top)
{
/* 最小時刻を持つデータを線形リストより探して削除する */
Node *p,*q;
double arrival_time=top->arrival_time;;
for(p=top;p!=NULL;p=p->next){
q=p->next;
if((q != NULL) && (q->arrival_time < arrival_time))
arrival_time = q->arrival_time;
}
for(p=top;p!=NULL;p=p->next){
q=p->next;
if((q != NULL) && (q->arrival_time <= arrival_time)){
p->next = q->next;
free(q);
}
}
if(top->arrival_time <= arrival_time){
q=top->next;
free(top);
top=q;
}
return top;
}
0750デフォルトの名無しさんNGNG
>>742
と言われましても・・・
0751744NGNG
>747
じゃぁこれはだめなのん?

*str = 'D';
str[0] = 'D';

同じじゃないの?コンパイラが勝手に領域を確保してくれてないのー?
0752デフォルトの名無しさんNGNG
なんか今日は一段とレベルが低いような・・・
0753>>744NGNG
>>729 にすでに述べられ済みですが、

http://www.catnet.ne.jp/kouno/c_faq/c1.html#32

をみてください。
0754>>751NGNG
すでに述べられ済みですが、行わないのが賢明ですね。
0755744NGNG
ありが�d
そしてゴメソ(´・ω・`)
0756>>749NGNG
そうです。arrival_timeです。
本当に、ありがとうございましたm(_)m
0757デフォルトの名無しさんNGNG
C言語で
生まれた歳から現在までの年月日数の求め方と
現在までの総日数教えて下さい。
0758デフォルトの名無しさんNGNG
これ興味あるでしょ!
http://nuts.free-city.net/index.html
0759デフォルトの名無しさんNGNG
>>757
その前に、間違っていてもいいから、自分で作った
プログラムを晒して下さい。
0760デフォルトの名無しさんNGNG
>>757
生まれた歳から現在までの年月日数って何やんねん?
0761デフォルトの名無しさんNGNG
JAVAでいうfinalって、C++ではどのように指定すればよいのでしょうか。
スーパークラスでメソッドをfinal指定して、サブクラスでオーバーライドできない
ようにしたいのですが・・・

JAVAのスーパークラスでの記入例はこんな感じです↓
public final void hogehoge();

0762デフォルトの名無しさんNGNG
>>748
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=100
過去にpi1万桁を求めるものがあったので流用しました。
pi を求めるよりは易しいようです。
0763長文スマソNGNG
さっきからポインタの話をしてる人らへ。

以下のコードをコンパイラオプションでコードサイズを最小にする場合と
特に最適化をしない場合で実行して比べてみ。

ただし、ものすごく環境(コンパイラ)に依るからうまくいかない人もいるかも。
ちなみに、VC++6.0のProfessionalでのコンパイラならcl /O1 "ソース名"でサイズの最適化
これの実行結果の違いがなぜかも分からんヤシはもっと勉強しませう。

#include "stdio.h"
void fn(char*);
int main()
{
char* s1 = "abc";
char* s2 = "abc";
char d1[] = "abc";
char d2[] = "abc";

fn(s1);
fn(d1);
printf("s1 = %s,s2 = %s\n",s1,s2);
printf("d1 = %s,d2 = %s\n",d1,d2);
return 0;
}
void fn(char* lpsz)
{
lpsz[0] = '!';
}
0764続きNGNG
俺の出力

最適化なし
s1 = !bc,s2 = abc
d1 = !bc,d2 = abc

コードサイズ最適化
s1 = !bc,s2 = !bc
d1 = !bc,d2 = abc
0765デフォルトの名無しさんNGNG
#include "stdio.h"
0766デフォルトの名無しさんNGNG
>>764
定数を書き換えたらアカンぜよ
0767デフォルトの名無しさんNGNG
定数リテラルのアドレスによる初期化は大抵のコンパイラでサポート
はされているが、定数リテラルの記憶クラスがデータ領域なのかコード
領域なのかは、環境に依存する。コード領域の場合その領域に対するポ
インタ変数媒介の操作はコード自己書き換えによる保護エラーを起す可
能性が高い。
コードの自己書き換えは禁止されなければならない必然性は無いがCPU
アーキテクチャの単純化からそのようになっている場合が多い。
0768デフォルトの名無しさんNGNG
コード領域の自己読み取りすら禁止されている環境が存在する。
0769デフォルトの名無しさんNGNG
CPUアーキテクチャからだけでなく、プロセス間で共有できなくなるので禁止するOSは多い。
0770763NGNG
やっぱ、分かってる人には当たり前のようで。
んなわけで少しでも変更する可能性のあるデータの場合は、
char* s1 = "abc";
じゃなくて
char d1[] = "abc";
のように書きましょうってことで。
こっちなら、きちんとデータ領域に確保してくれます。(あってるよな?)
1個目の場合でのメモリオーバランのエラーはものすごく怖いよ〜。

何のことか分からん人もとりあえず下のほうを使ったほうがいいと思います。
0771デフォルトの名無しさんNGNG
なんのことか判らんのならそもそも使うな。

と、思う恭子の頃。
0772デフォルトの名無しさんNGNG
>>770
>こっちなら、きちんとデータ領域に確保してくれます。(あってるよな?)
合ってます。auto記憶クラスのときはスタック(とは限らんけど)にその大きさの
配列をとって、そこに文字列をコピーして初期化してくれます。
# だからループから呼ばれる関数のときは気をつけないと性能ががた落ちになる

関数内のstatic記憶クラスのときはスコープが関数内部に限定されるだけで、
あとはグローバル変数とおんなじ。
0773デフォルトの名無しさんNGNG
ただの配列のときは初期化のタイミング関係ないんだっけ?
0774デフォルトの名無しさんNGNG
char d[]="abc"
定数リテラル"abc"(これをddと命名)はコード領域にあるか、データ領域
にあるかに関わらずコンパイラはその長さ(終端入れて)4を認識し、
char d[4]と解釈。初期化ルーチンにmemcpy相当のルーチンを挿入し、
dをddで初期化します。すなわちdは"abc"で初期化された状態であることが
保証される長さ4の文字変数の配列になります。
0775デフォルトの名無しさんNGNG
ttp://www.google.com/search?q=%82%C5%82%E0char+a%5B%5D+%82%CD+char+%2Aa+%82%C6%93%AF%82%B6%82%C6%95%B7%82%A2%82%BD%82%B1%82%C6%82%AA%82%A0%82%E9%82%AA%81B
0776デフォルトの名無しさんNGNG
対して
char *s="どこの馬の骨かわからない文字列";
は、コード領域にあるかデータ領域にあるかわからない、謎の文字列で
sはそこへのポインタです。この場合注意が必要です。
strcpy(s,"短い文字列");
の場合でも、保護エラーで停止することもあります。
strcpy(s,"非常に長い文字列を複写するとはみ出して周囲のデータを破壊する");
などは環境に関わらず、ほぼ確実にシビアな事態を招くでしょう。
char *s2="どこの馬の骨かわからない文字列";
とし、「重複文字を纏める」最適化オプションでコンパイルした場合
s==s2
となったりすることがあります。
s!=s2を前提としてプログラムしていた人には、不可解な挙動と映り
かなり悩ませることになるでしょう。
0777デフォルトの名無しさんNGNG
>>776
>保護エラーで停止することもあります。
例えば、どんな環境でなります?
0778デフォルトの名無しさんNGNG
>>748
#include <stdio.h>
#define M 10000 //求めたい桁数
#define N 10000 //10000もあれば恐らく十分
int a[N];
int main(){
int i,c,pc=0;
 for(i=0;i<10000;i++)
  a[i]=1;
 a[1]+=a[0];
 a[0]=0;
 printf("%u.\n",a[1]);
 do{
  c=0;a[1]=0;
  for(i=10000-1;i>=1;i--){
   a[i]*=10;
   a[i]+=c;
   c=a[i]/i;
   if(i!=1)
    a[i]%=i;
  }
  printf("%u",a[1]);
  pc++;
  if(pc%50==0)
   printf("(%u)\n",pc);
 }while(pc<M);
 return 0;
}
階乗進法で検索
0779デフォルトの名無しさんNGNG
>  for(i=10000-1;i>=1;i--){
  for(i=N-1;i>=1;i--){
に訂正
0780デフォルトの名無しさんNGNG
>>777
%uname -sr
FreeBSD 4.8-STABLE
%cat baka.c
int main(int argc, char * argv[])
{
char *s = "string";
*s = 'a';
return 0;
}
%gcc baka.c
%./a.out
zsh: bus error (core dumped) ./a.out
0781デフォルトの名無しさんNGNG
与えられた文字列の中に指定された文字列が存在するかどうかを調べる関数strfndを作成せよ。

int strfnd(s,t)
char *s /*与えられた文字列の先頭アドレス*/
char *t /*指定された文字列の先頭アドレス*/
戻り値は存在するときはその文字位置、存在しない時は-1とする。

例:"abcde"、"cd"と入力すると、関数は2を返して、存在しましたと出力する。


お願いします・・・。
0782デフォルトの名無しさんNGNG
>>781
#include <stdio.h>
#include <string.h>

int strfnd(char *s, char *t)
{
size_t i = strlen(s);
size_t j = strlen(t);
size_t k;
for(k = 0; k <= i-j; k++){
if(strncmp(s, t, j) == 0)
return(j);
s++;
}
return(-1);
}

int main(void)
{
char s[256];
char t[256];
scanf("%s", s);
scanf("%s", t);
if(strfnd(s, t) > 0)
puts("存在しました。");
else
puts("ありませんでした。");
return(0);
}
0783デフォルトの名無しさんNGNG
>>781
質問する時はあげた方が良いかも・・・
0784デフォルトの名無しさんNGNG
3次元空間内の4点を頂点とする四面体の体積を求める関数を
vector.hを使ってお願いします
0785デフォルトの名無しさんNGNG
vector.hってなんだ?
0786781NGNG
>>782
ありがとうございました。
0787デフォルトの名無しさんNGNG
>>785
C++のvectorクラスの事かな?

多分・・・
0788デフォルトの名無しさんNGNG
文脈からいって
STLの<Vecotr>ではないようだ。
三次元ベクトル数のクラス
class vector{...}
のヘッダだろう。
0789デフォルトの名無しさんNGNG
誕生日と今日の日付を入力すると 
今日が生まれてから何日目か出力するプログラムを作りたいんですが
どうもエラーがでてしまうんですが、なにがいけないんでしょうか?

ttp://tokyo.cool.ne.jp/skoop_on/youbi.txt
0790デフォルトの名無しさんNGNG
よろしければ、※月※日と入力すると※曜日
とでるプログラムを教えて下さい。
0791デフォルトの名無しさんNGNG
>>789
やってみよう。
0792791NGNG
誕生日がある程度古いときちんと動かないのは仕様

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

int main()
{
struct tm bd,td;

memset(&bd,0,sizeof bd);
memset(&td,0,sizeof td);

printf("YYYY/MM/DD形式で誕生年月日を入力してください : ");
scanf("%d/%d/%d",&bd.tm_year,&bd.tm_mon,&bd.tm_mday);
printf("YYYY/MM/DD形式で今日の日付を入力してください : ");
scanf("%d/%d/%d",&td.tm_year,&td.tm_mon,&td.tm_mday);

bd.tm_year-=1900;
bd.tm_mon--;
td.tm_year-=1900;
td.tm_mon--;

printf("誕生日から今日までの日数は%ld日です。\n",(long)((mktime(&td)-mkt
ime(&bd))/86400));

return 0;
}
0793792NGNG
コピペしたら関数名の途中で切れてしまったな・・・

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

int main()
{
struct tm bd,td;

memset(&bd,0,sizeof bd);
memset(&td,0,sizeof td);

printf("YYYY/MM/DD形式で誕生年月日を入力してください : ");
scanf("%d/%d/%d",&bd.tm_year,&bd.tm_mon,&bd.tm_mday);
printf("YYYY/MM/DD形式で今日の日付を入力してください : ");
scanf("%d/%d/%d",&td.tm_year,&td.tm_mon,&td.tm_mday);

bd.tm_year-=1900;
bd.tm_mon--;
td.tm_year-=1900;
td.tm_mon--;

printf("誕生日から今日までの日数は%ld日です。\n",(long)((mktime(&td)-mktime(&bd))/86400));


return 0;
}
0794デフォルトの名無しさんNGNG
>>790
ツェラーの公式より。

#include <stdio.h>

int main(void)
{
int y, m, d;
char* week[7] = {"日", "月", "火", "水", "木", "金", "土"};

printf("年 : "); scanf("%d", &y);
printf("月 : "); scanf("%d", &m);
printf("日 : "); scanf("%d", &d);

if((m == 1) || (m == 2))
{
y--;
m = m + 12;
}

printf("今日は%s曜日です。\n",
week[(y + y/4 - y/100 + y/400 + (13*m+8)/5 + d) % 7]);

return(0);
}
0795デフォルトの名無しさんNGNG
age
0796デフォルトの名無しさんNGNG
CでAPIを使う≒CでWinアプリを作る?
0797デフォルトの名無しさんNGNG
APIはあるソフトウェアの機能を他のプログラムから呼び出せるようにするもの。
0798デフォルトの名無しさんNGNG
Cで文字色を変えたりするにもAPIを使うらしいけど、
これはCプログラマーには必須?
0799706NGNG
リンクのソース内の『最後尾のデータ削除』
をつくったのですが、下のではなぜいけないのでしょうか?
よろしければ、訂正お願いいたします。
==program==
Queue *q;
for(q=top;q->next!=NULL;q=q->next);
free(q);
return top;
==result==
p
c_id:3 a_time:4.000000
c_id:2 a_time:3.000000
c_id:1 a_time:1.000000

d
p
c_id:3 a_time:4.000000
c_id:2 a_time:3.000000
c_id:9437360 a_time:0.000000
c_id:9447552 a_time:0.000000
c_id:9437352 a_time:0.000000
とc_id:1の部分は消えるのですが、
余計なものがくっついて来ます。
僕の考えでは、forを使って、
qをリストの最後尾まで動かし、
qをfreeすれば、最後尾が消えるのではと思ったのですが。

ソース↓
ttp://acechannel.hp.infoseek.co.jp/wakaranai.c
実行結果↓
ttp://acechannel.hp.infoseek.co.jp/result.txt
0800デフォルトの名無しさんNGNG
リンクの要素を削除した場合、当然それを指していたポインタも
適当なものにしなければ狂うわな。
0801706NGNG
つまり、qの指すポインタを適当なものにするということですね?
けれど、どうすればいいのでしょうか…。
もう少し具体的に説明していただけると幸いです。
0802706NGNG
間違いました。
qの指すポインタじゃなくて、qを指していたポインタでした。
0803デフォルトの名無しさんNGNG
リストの最後がfreeされるわけだが
free(void *q)
で qが指している領域を解放しmalloc等で再利用可能にする関数。
q自身を変更するわけではないことを考えると
リストの最後のnextをfreeしても、その一つ前のリスト内のnext
の値はそのままでfreeした結果無効な領域を指しているポインタ
になっているね。
0804デフォルトの名無しさんNGNG
#define Free(p) (free(p),(p)=NULL)

うーん・・・
0805デフォルトの名無しさんNGNG
#define Free(p) ((void)(free(p),(p)=NULL))

まちがった。こうだ。
0806706NGNG
うーん…
0807デフォルトの名無しさんNGNG

Queue *q,*r;
for(q=top;q->next!=NULL;(),q=q->next);
free(q);r->next=NULL;
()内にあるコードを埋め込めば良いがそれは考えましょう。
0808706NGNG
分かりました!!!
なるほど!!!
ありがとうございましたm(_)m
0809デフォルトの名無しさんNGNG
>>805
再帰的に変換はされないから
#define free(p) ((void)(free(p),(p)=NULL))
でいいんじゃないかな・・・・と、テストもせずに適当行ってみるテスト。
0810デフォルトの名無しさんNGNG
>>809
そして誰にも反応してもらえない・・・
0811デフォルトの名無しさんNGNG
>>771
恭子さん、その後いかがですか。
0812706NGNG
>>805
やってみましたが、うまくいきませんよ?
どうしてかは分からないのですが…。。
0813デフォルトの名無しさんNGNG
>>706
>for(q=top;q->next!=NULL;q=q->next);
>free(q);
おいおいNULL値フリー?
0814デフォルトの名無しさんNGNG
>>813
( ゚д゚)ポカーン
0815デフォルトの名無しさんNGNG
>>813
( ゚д゚)ポカーン

q->nextがNULLなだけであって、qは非NULL
0816デフォルトの名無しさんNGNG
蛇足
posixではfree()はNULLを引数としても特に問題ない
0817デフォルトの名無しさんNGNG
>>816
ANSI Cでも
0818デフォルトの名無しさんNGNG
>>817
すまぬ。そのとおりでつ。
0819貧乏脱出!これであなたはお金持ちNGNG
普通に働いてお金持ちになれるのは全体の1%のみって本当!?
本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
http://www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)

....///...
0820デフォルトの名無しさんNGNG
fcloseもNULLを許可してくれたらよかったのに。
0821デフォルトの名無しさんNGNG
char *型で宣言したdataに データが入ってます。
dataの内容は G01B123/456 のという文字列です。
このデータを出力させる際
[G01B123/456] → [G01B 123/456]
[G14A23/45] → [G14A 23/45]
[B11C2/3] → [B11C 2/3]
[G01B123:456] → [G01B 123:456]
[G14A23:45] → [G14A 23:45]
[B11C2:3] → [B11C 2:3]
[B12G12345]  → [B12G 123]
[B12G12] → [B12G 12]
のように、 頭4文字以降に半角スペースを入れ
'/' または':'の前の数字を桁あわせをして
表示させるプログラムを作りたいんですが
最後の2例は、'/'も':'もない場合で、
この場合は、元のデータから7桁表示させ、
頭4桁+半角スペース+残り3桁となります。
ソース教えてください よろしくお願いします。
0822デフォルトの名無しさんNGNG
ん〜 桁あわせの例が・・
頭4文字以降+半角スペースから'/' または ':'の 前のデータを
3桁に桁あわせして 頭うめとして 半角スペースを入れてください。
0823デフォルトの名無しさんNGNG
>>821
最後の例がこの文章と矛盾してる
>最後の2例は、'/'も':'もない場合で、
>この場合は、元のデータから7桁表示させ、
>頭4桁+半角スペース+残り3桁となります。
0824sageNGNG
指定の文字列を指定のファイルから検索するプログラムを、クラスの継承を使用して作れ、という宿題なんですが、お願いできますか?
0825デフォルトの名無しさんNGNG
821です。
[B12G12] → [B12G 12]
の例は省きます。すみません。
0826デフォルトの名無しさんNGNG
>>821
第2フィールドの / や : で桁あわせについて、桁の最大の長さが
決まっているのといないので実装の考え方が変わるんですが。
0827デフォルトの名無しさんNGNG
821です
第一フィールド?での、最大の桁数は13桁です。
第二フィールドでは、決まってません。
’/’または’:’以下は、そのまま表示させてください。
本来は’/’または’:’以下は、5桁に桁そろえしたいのですが。
0828デフォルトの名無しさんNGNG
よくわからねぇでございます。
0829デフォルトの名無しさんNGNG
#include <stdio.h>
int main(){
int *a b;
b=12:
a=&b;
printf("%d",*a);

}
0830デフォルトの名無しさんNGNG
戻り値がねーよ
main を void にしろ
俺はreturn を書くのがめんどいといつもvoidでした。
自作はOKだがな!
0831デフォルトの名無しさんNGNG
#include <stdio.h>
int main(){
int *a b;
b=12:
a=&b;
return printf("%d",*a);

}
0832デフォルトの名無しさんNGNG
int main(){}
これでコンパイルされますが?
0833デフォルトの名無しさんNGNG
int *a,b;だろ
0834あぼーんNGNG
あぼーん
0835デフォルトの名無しさんNGNG
821=マルチ
ttp://www2.realint.com/cgi-bin/tarticles.cgi?pointc+7843
0836デフォルトの名無しさんNGNG
検索ってどうやってるんですか?
0837デフォルトの名無しさんNGNG
何の検索よ?
0838デフォルトの名無しさんNGNG
std::find
0839デフォルトの名無しさんNGNG
821です
難しいっす
まったくわかりません・・・
0840デフォルトの名無しさんNGNG
>>821
な〜んか、質問がよく分からんからテキトウに作ってみたよ。

#include <stdio.h>

int main(void)
{
char *data[7] = {
"G01B123/456", "G14A23/45", "B11C2/3",
"G01B123:456", "G14A23:45", "B11C2:3",
"B12G12345"
};
int flags[7] = {0};
char *p;
int i, j;

for(i = 0; i < 7; i++){
p = data[i];
while(*p++ != '\0'){
if((*p == '/') || (*p == ':'))
flags[i] = 1;
}
}
続く・・・
0841デフォルトの名無しさんNGNG
>>839
ウホッ!まだ頑張ってたんだね!
0842840NGNG
>>821
続き
for(i = 0; i < 7; i++){
p = data[i];

for(j = 0; j < 4; j++)
putchar(*p++);
putchar(' ');

if(flags[i] == 1)
puts(p);
else
{
for(j = 0; j < 3; j++)
putchar(*p++);
putchar('\n');
}
}

return(0);
}
0843デフォルトの名無しさんNGNG
>>830
main で返り値を返さず、return を書かないからといって、void main()
と書いていいというものでもないと思うのですが。
あくまでも返り値の型は呼び出し側のつくりに依存するのではないでしょうか。
ttp://www.catnet.ne.jp/kouno/c_faq/c11.html#14

0844デフォルトの名無しさんNGNG
>>841
ウホッ!おれも。>>821にささげる。
const char* addsp(char *l,const char *r)
{
    const char *t = l;
    const char *re = r;
    while(r != re+4) *l++ = *r++;
    *l++ = ' ';
    for(re = r;r != re+3;)    *l++ = *r++;
    for(re = r; *r && *r != '/' && *r != ':'; ++r);
    if(*r == '/' || *r == ':'){
        r = re;
        while(*r) *l++ = *r++;
    }
    *l = '\0';
    return t;
}
void test(void)
{
    char s[]="G01E1234/5678";
    char s1[] = "G01E123456";
    char r[256];
    printf("%s\n%s\n",addsp(r,s),addsp(r+80,s1));
}
0845デフォルトの名無しさんNGNG
戻り値の型が[const] char *・・・・
0846デフォルトの名無しさんNGNG
821です
みなさんありがとぉ〜
(ノ△・。)
0847デフォルトの名無しさんNGNG
暇だから漏れも。。。
#include <stdio.h>
#include <string.h>
int main(void) {
 char *data[7] = { "G01B123/456", "G14A23/45", "B11C2/3",
    "G01B123:456", "G14A23:45", "B11C2:3", "B12G12345"};
 char str[256],str2[256],str3[256];
 int i;
 for(i=0;i<7;i++) {
  memset(str, 0, 256); memset(str2, 0, 256); memset(str3, 0, 256);
  strncpy(str, data[i], 4);
  if(strlen(data[i]) == strcspn(data[i], "/:"))
   strncpy(str2, &data[i][4], 3);
  else
   strcpy(str2, &data[i][4]);
  sprintf(str3, "%s %s", str, str2);
  printf("%s\n", str3);
 }
 return 0;
}
0848デフォルトの名無しさんNGNG
すいません教えてください。
3.プログラムのソースファイルを開いて、/* */で囲まれたコメント部分を
  別のファイルにかき出すプログラムを作成せよ。

考えたんですけど何をどうすればいいのか分かりません。教えてください。m(_ _)m
0849デフォルトの名無しさんNGNG
/* */はネストしないことになっているから簡単だろう
でもまあ、ただ書き出すだけでなくて行番号やその前後に
明らかにコメントの示す内容があるならそれも出力する位はしたい
0850デフォルトの名無しさんNGNG
まず/*のぶぶんをさがす。
そして、そこから見つけたら*/までをファイルに書き込む。
・・・・・おわり。・・・・・・・
0851デフォルトの名無しさんNGNG
>>850
それじゃたりんぞ。"/*"なんかは無視しなくちゃならん。
0852デフォルトの名無しさんNGNG
実はこれ、結構難しいんだよねぇ。
0853デフォルトの名無しさんNGNG
>>852
うん。難しい。というかややこしい。
単純に"が出たら"まで読み飛ばせばいいかというとさにあらず、
"\""なんてのもあるしね。
0854デフォルトの名無しさんNGNG
>>853
で、結論としてはプリプロセッサのソース…モガモガ

となるので、スレタイどおり宿題程度の回答でいいんではない?
0855848NGNG
>>854
そこまでややこしくなくてもいいんです。
文字列操作のところの宿題なんで、あくまでコメント部分を書き出せばいいんです。
よろしくお願いします。
0856853NGNG
>>855
ちょっとやってみてる。単純なのでも結構ややこしいw
0857デフォルトの名無しさんNGNG
/* 最初の「/*」を読んで、その次の文字はchにある */
do {
while(ch != '*') ch = nextChar();
ch = nextChar();
}while(ch != '/');

コメントの読み捨てで、コンパイラの本のパクリでつ。
これを参考にすると出来るだろうか。
0858853NGNG
>>857
頭いいなあこのコード。おれが作ったのは何のひらめきも感じられないw
#include <stdio.h>
#include <string.h>
int main(int argc, char * argv[]) {
  char line[1024], *p, *start;
  int in_comment = 0;

  while (fgets(line, sizeof(line), stdin)) {
    if (!in_comment) {
      if ((p = strstr(line, "/*")) != NULL) {
        p += 2;
        memmove(line, p, strlen(p) + 1);
        in_comment = 1;
      }
    }
    if (in_comment) {
      if ((p = strstr(line, "*/")) != NULL) {
        *p ='\0';
        in_comment = 0;
      }
      fputs(line, stdout);
    }
  }
  return 0;
}
0859853NGNG
制限として、
文字列中に/*が出てきてもコメントと見なす。
puts("/*");なんてのもコメントと思う。

同じ行にコメントが二度現れても最初しかコメントと思わない。
/* イイ */ /* ダメ */
なんてのはイイしか出ない。
0860デフォルトの名無しさんNGNG
配列で3453等と数字を並べて表示するには,
for文を使ってprintf("%d",n)とやるしか無いのですか?
0861デフォルトの名無しさんNGNG
>>860
質問の意図がよくわからんが、多分そうだよ。
printf("%d %d %d %d", a[0], a[1], a[2], a[3]);はダメなんだろ?
0862デフォルトの名無しさんNGNG
別なスレで見たんだけどこれ面白くないかな?

47 :デフォルトの名無しさん :03/06/29 22:17
問A 自分自身と同じソースコードを出力するソースコード

まちがっている例)

int main() {
 printf("int main() {\n printf(\"ウホッ\");\n return 0;\n}\n");
 return 0;
}

環境依存になっちゃうと思うけどデバッグ情報があればソースパスも
拾えるはずだから可能だと思うんだけど…
0863デフォルトの名無しさんNGNG
#include <algorithm>
#include <iostream>
#include <fstream>

int main()
{
    std::copy(
        std::istreambuf_iterator<char>(std::ifstream(__FILE__)),
        std::istreambuf_iterator<char>(),
        std::ostreambuf_iterator<char>(std::cout));
        return 0;
}

こういう奴か?
0864デフォルトの名無しさんNGNG
__FILE__みたいな飛び道具は面白くないな

古典
char*s="char*s=%c%s%c;main(){printf(s,34,s,34);}";main(){printf(s,34,s,34);}
0865デフォルトの名無しさんNGNG
Intercalまであるとは… ttp://www.nyx.net/~gthompso/quine.htm
0866デフォルトの名無しさんNGNG
『プログラムの説明』
1. 一クラス分の得点を繰り返し入力する。(最大20回)
2. 入力の終了は得点に999が入力されたときとする。
3. 得点は以下のような形式で入力する。
得点=入力[Enter]
得点=入力[Enter]
:
:
得点=999[Enter] ←入力の終了
4. 得点を入力するたびに0〜100の範囲の値かをチェックする。ただし999は範囲外エラーから除く。
5. チェックの結果、範囲外の時は、以下のメッセージを表示して、再入力する。
「得点が範囲(0〜100)外である。再入力してください。」
6.入力終了後、以下のように得点、順位の一覧を表示する。
     得点 順位
  1人目 90 2
2人目 70 5
3人目 95 1
4人目 80 3
5人目 80 3
7. 以下の処理を関数にする。
 順位付けの処理
  関数の定義 order01(ten,ten[i],n)

戻り値:順位
引数ten:得点が入っている配列の配列名
引数ten[i]:順位を求めたい得点
引数n:最後の得点が入っている配列要素の添字番号
0867866の続きNGNG
『表示処理部分のプログラム』
/* 表示処理 */
puts(" 得点 順位");
for(i=0;i<=n;i++) { printf("%2d人目",i+1);
printf("%5d%5d\n",ten[i],order01(ten,ten[i],n)); }
return (0);
『関数について』
関数名は、「order1」とする
表示処理プログラムのようにorder1関数を使用する
order01関数の定義はmain関数より前で行う

↑この問題よろしくお願いします。
0868デフォルトの名無しさんNGNG
>>863
#include <iostream>
#include <fstream>
int main()
{
 std::cout << std::ifstream( __FILE__ ).rdbuf();
 return 0;
}
0869デフォルトの名無しさんNGNG
>>863
gcc -Wall -o self1 self1.c
self1.c:1:22: algorithm: No such file or directory
self1.c:2:21: iostream: No such file or directory
self1.c:3:20: fstream: No such file or directory
self1.c: In function `main':
self1.c:7: parse error before ':' token
self1.c:7: warning: label `std' defined but not used

ひょっとして環境依存?
0870デフォルトの名無しさんNGNG
>>869 g++ self1.cpp
0871デフォルトの名無しさんNGNG
>>869
ネタだよね??(T_T)
0872866NGNG
俺の方どなたかよろしく(T_T)
0873デフォルトの名無しさんNGNG
>>872
得点=入力のうち、入力の部分だけでいいんだよな?(T_T)
つまりprintf("得点="); scanf("%d",pts+i);みたいな感じでいいんだよな?(T_T)
0874873NGNG
×入力の部分だけで
○ユーザーが入力するのは入力の部分だけで

(T_T)
0875デフォルトの名無しさんNGNG
>>870-871
なんだ、C++か。間違ったプログラムがCで記述されてて、
俺、C++知らないから、これも何か特殊なCかと思いますた。
いや、マジで間違えた。スマソ。
0876866NGNG
>>874
そうです(T_T)
0877デフォルトの名無しさんNGNG
>>876
ちょっとやってみよう(T_T)
0878866NGNG
>>877
ありがとうございます神様(T_T)
0879デフォルトの名無しさんNGNG
>>878
得点入力時に数字以外が入力された場合はどうすればいいの?(T_T)
0880866NGNG
>>879
while(a < 0 || a > 100 && a!=999){
puts("得点が範囲(0〜100)外である。再入力してください");
scanf("%d",&a);}
たぶんすべてこんな感じで
0881866NGNG
数字0〜100以外のはすべて
「得点が範囲(0〜100)外である。再入力してください」
これで。
0882デフォルトの名無しさんNGNG
以下のソースでtest.name = "abc......."としている部分がありますが
コンパイルエラーにならないのはどうしてでしょうか。
普通はstrncpyとかを使うのではないでしょうか。
また、配列の大きさが指定されていないので、
このソースはやばいと思うのですがどうでしょうか。

#include <stdio.h>

typedef struct {
char *name;
} NAME;

int main(void)
{
NAME test;
test.name = "abcdefghijklmn";
printf("%s\n", test.name);
return 0;
}
0883デフォルトの名無しさんNGNG
>>882
ここで聞くべきじゃないね。

文字列定数("abc....n")はメモリ上のどこかに置かれ、その先頭アドレスをtest.nameに代入しているので問題ない。
もしもstrncpyを使ったらtest.nameが指す領域を確保していないので何が起こるか分からない。
0884デフォルトの名無しさんNGNG
>>883
あい、すいません。ここは宿題スレでしたね。間違えました。
別のスレで尋ねなおします。
0885883NGNG
>>884
答えたのに(T_T)
0886デフォルトの名無しさんNGNG
>>885
いえ、まだ別に尋ねたいことがあったのですが、
それは別のスレでということです。
どうもすいませんでした。
0887866NGNG
あの、俺の方のどうなってますか??(T_T)
エラー起こってても途中まででもいいので見せてください。
0888デフォルトの名無しさんNGNG
>>887
今できた。
0889888NGNG
入力処理に手間取ってな

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

int order01(int *ten,int tensu,int n)
{
int i;

for(i=0;i<=n;i++)
if(ten[i]==tensu)
break;

return i+1;
}

static int cmp(const void *xp,const void *yp)
{
const int *x=xp;
const int *y=yp;

return (*x==*y)?0:(*x<*y)?1:-1;
}
0890888NGNG

int main()
{
int tensu[20]={0},ten[20];
int i,j,fail;
char buf[1024];

for(i=0;i<20;i++){
do{
printf("得点=");
fgets(buf,sizeof buf,stdin);
if(sscanf(buf,"%d",tensu+i)!=1)
fail=1;
else if((tensu[i]<0||tensu[i]>100)&&tensu[i]!=999)
fail=1;
else
fail=0;
}while(fail&&printf("得点が範囲(0〜100)外である。再入力してください。\n"));
if(tensu[i]==999)
break;
}

memcpy(ten,tensu,sizeof(int)*i);
qsort(ten,i,sizeof(int),cmp);

printf("\n\n");
for(j=0;j<i;j++)
printf("%2d人目 %5d%5d\n",j+1,tensu[j],order01(ten,tensu[j],i-1));

return 0;
}
0891866NGNG
>>888
サンクス!見せてください!
0892866NGNG
サンクス!!!!神様!(T_T)
0893888NGNG
qsort使うなと言われたら、自分でソート関数をつくって。
多分ソートしてから順位付けするのが一番だから。
0894デフォルトの名無しさんNGNG
よろしくお願いします(;´Д`)
−−−−−−−−−−−−−−−−−−−

一辺10の立方体の内部に整数値を座標にした点を4つランダムに生成し、その4点を
頂点にした4面体の体積および4面体が立方体の中心を含むか含まないかを表示する
プログラムを作成しなさい。

−−−−−−−−−−−−−−−−−
と言う課題なのですが・・
0895デフォルトの名無しさんNGNG
struct HELI{
char gazou[20];
float Longitude;
float Latitude;
float Height;
float Range;
float Angle;
}csv[80];
struct HELI *sp;
sp=csv;
このような構造体を作って、次のようにして、CSVファイルからデータを読み込もうとしたところ。
gazouという配列に一行全部読み込まれてしまいました。
fscanf(fp,"%s,%f,%f,%f,%f,%f",sp->gazou,sp->Longitude,sp->Latitude,sp->Height,sp->Range,sp->Angle)

なにがいけなかったのでしょうか?どうか教えてください。よろしく願いします。

ちなみに、読み込みたっかたCSVは次のようなものです。
CRW_7536.jpg,145.302718,-34.389002,140.7,30.96,0
CRW_7537.jpg,145.302723,-34.388943,140.5,31.53,0
0896デフォルトの名無しさんNGNG
読み込んだファイル(標準入力)内の単語の出現回数を数えて表示する
プログラムを実装せよ。ただし、出現回数が-nオプションで指定した回数
以上の単語だけを表示する(デフォルトで1回以上)
-----------------------------------------------------
お願いします。
0897デフォルトの名無しさんNGNG
>>896
単語って?
0898デフォルトの名無しさんNGNG
TOWN 4回 みたいなかんじです。
0899デフォルトの名無しさんNGNG
そういうのってハッシュで実装するものなの?
0900デフォルトの名無しさんNGNG
はい。
0901899NGNG
>>900
サンクス
0902デフォルトの名無しさんNGNG
>>895
fscanfの区切り文字で有効なのはスペース、タブ、改行文字だけなのでカンマだとできません

char buf[1024];
int i;
fgets(buf, sizeof(buf), fp);
for(i=0;i<(int)strlen(buf);i++)
  if(buf[i]==',') buf[i]=' ';
sscanf(buf,"%s %f %f %f %f %f",sp->gazou,&sp->Longitude,&sp->Latitude,&sp->Height,&sp->Range,&sp->Angle);
で、こんな感じでやればできるんだけど、構造体の中のfloatは精度の高いdoubleにしたほうがいいでしょう
0903デフォルトの名無しさんNGNG
>>895
構造体内のfloatをdoubleにする。

×fscanf(fp,"%s,%f,%f,%f,%f,%f",...);
○fscanf(fp,"%s%lf%lf%lf%lf%lf"...);

×CRW_7536.jpg,145.302718,-34.389002,140.7,30.96,0
○CRW_7536.jpg 145.302718 -34.389002 140.7 30.96 0
0904デフォルトの名無しさんNGNG
>>894
中心を含むかは俺のレベルじゃ無理。つーかめんどそう。
簡単なのかな?
それと正しい結果かはわかりませんからあしからず。
#include <math.h>
/* 法線ベクトル*/
void HV(int *p,int *q,int *r)
{
    int i,t1,t2;
    for(i=0; i<3; ++i){
        t1 = (i+1) % 3;
        t2 = (t1+1) % 3; 
        r[i] = p[t1]*q[t2]-p[t2]*q[t1];
    }
}
double V(int *h,int *a,int *A)
{
    double f=0,d=0;
    int i;
    for(i=0; i<3; ++i){
        d  += h[i]*A[i];
        f  += h[i]*a[i];
    }
    /*a→平面へのLと面積Sの打ち消しがある*/
    return fabs(f-d) / (2*3);
}

0905デフォルトの名無しさんNGNG
int main(void)
{
    int k[4][3],m[2][3];
    int h[3];
    int i,j;
    for(i=0; i<4; ++i){
        if(scanf("%d,%d,%d",&k[i][0],&k[i][1],&k[i][2]) != 3)
          return ;
    }
    for(i=0; i<2; ++i){
        for(j=0; j<3; ++j){
            m[i][j] = k[i+1][j] - k[0][j];
        }
    }
    HV(m[0],m[1],h);
    printf("%f",V(h,k[3],k[0]));
    return 0;
}
0906デフォルトの名無しさんNGNG
>>895
fscanf(fp,"%[^,],%f,%f,%f,%f,%f",sp->gazou,sp->Longitude,sp->Latitude,sp->Height,sp->Range,sp->Angle);
どっちかと言えば、fgets()してからばらした方がいいかもね。
0907895NGNG
>>902,903,906

ありがとうございます!
出来ました!
0908デフォルトの名無しさんNGNG
 マウスのカーソルが砂時計表示になる時間を計測し、1日ごとにログをとる
プログラムをSDKで作りたいんですがどうすれば良いんですか? 
方法としてはOSからカーソルを変更させる命令信号が出ると思うので
それを監視すればいいのでは。と考えているんですが、考え方からして
間違っていますか?OSを監視してその信号をキャッチするAPIとか
あるんでしょうか?

教えてください。よろしくおねがいします。
0909デフォルトの名無しさんNGNG
>>908
おまえはまず電波で信号をキャッチする方法から覚えたほうがいい。

マジレスするとスレ違い。
0910デフォルトの名無しさんNGNG
文字の集合を表す構造体Setを定義し、要素を追加する関数を定義し、その動作を確認しなさい。
追加した要素が 集合の新しい要素の場合1、既に存在していた場合0を返すとする。
int addset(Set &set,char a)

わかりましぇん(;´Д`)


0911デフォルトの名無しさんNGNG
>>910
それだけじゃ、わかりましぇん(;´Д`)
0912デフォルトの名無しさんNGNG
>>910
その集合は配列で実装するの?
0913デフォルトの名無しさんNGNG
おそらくそうだと思いましゅ。
私もこれだけの情報した与えられてないので・・・
質問は受けないってゆうじじい教授でして・・・。(;´Д`)
0914デフォルトの名無しさんNGNG
>>910
C++なのか?
0915(;´Д`)NGNG
C++です!
0916デフォルトの名無しさんNGNG
じゃあパス
0917デフォルトの名無しさんNGNG
すいません。C++の」宿題に行き詰ったので教えてください。まだまだ、完成度が低いんですがよろしくお願いします。
【プログラム内容】
おみくじプログラム(大吉、中吉、小吉、吉、末吉、凶、大凶)とその改良型を選んで実行できるプログラム


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main (void)
{
int a;
int b, su1, su2;
printf("以下の三種類から選べ\n");
printf("1:普通のおみくじ\n");
printf("2:改良型\n");
rintf("3:おみくじプログラムを実行しない\n");
  scanf("%d",&a);
  switch(a)
0918917のつづきNGNG
  {
  case 1:
  printf("おみくじプログラムを実行しますか?y:YES n:NO");
  scanf("%d",&b);
  rewind(stdin);
  if((b == 'Y') || (b == 'y'));
  {
    srand((unsigned int)time(NULL));
    su1 = rand();
    su2 = su1 % 16;
    switch(su2)
{
case 0:printf("今日のおみくじは大吉です\n");
break;
     case 1:
case 2:printf("今日のおみくじは中吉です\n");
break;
case 3:
case 4:
case 5:printf("今日のおみくじは小吉です\n");
break;
0919917のつづきNGNG
case 6:
case 7:
case 8:
case 9:printf("今日のおみくじは吉です\n");
break;
case 10:
case 11:
case 12:printf("今日のおみくじは末吉です\n");
break;
case 13:
case 14:printf("今日のおみくじは凶です\n\n");
break;
case 15:printf("今日のおみくじは大凶です\n");
}
}
else
{
printf("おみくじプログラム実行しませんでした");
}
   break;
   case 2:
   以下省略(ってか未完成)
0920デフォルトの名無しさんNGNG
C++なのですか?
0921917のつづきNGNG
↑のをビルドするとエラーが起きてしまうんです。
「else文とif文が一致しません」とでてしまうのですが、どこがどう間違えてるのかさっぱり解からないので
間違えてる所を教えてください。おねがいします
0922デフォルトの名無しさんNGNG
私にはCに見えるのですが。
0923917のつづきNGNG
>>920
はい。そうです。
明日が提出日なのでかなり焦ってしまってます。
プログラム板独自のマナーとか無視して書いてしまったのならごめんなさい。
C++です。
ソフトは、マイクロソフトのビジュアルC++6.0を使ってます。
0924デフォルトの名無しさんNGNG
>>923
CとC++の違いも解かってない。
全然駄目じゃん。
0925917のつづきNGNG
>>922
え…?
Cですか?
0926デフォルトの名無しさんNGNG
省略してるとこが間違ってんのかな
0927917のつづきNGNG
>>926
省略の先は

case2:
printf("おみくじ(改良型)プログラムを実行しますか?y/n");
scanf("%d",&c);
}
}


までしか出来てません…。やべぇ
0928デフォルトの名無しさんNGNG
まず、printfからして・・・
0929デフォルトの名無しさんNGNG
}これ一個削除してみてみて
case2:
printf("おみくじ(改良型)プログラムを実行しますか?y/n");
scanf("%d",&c);
}
0930デフォルトの名無しさんNGNG
改良ってどこ改良するの?
0931917NGNG
>>929
削除しましたがエラーは変わりません。
case1の
普通のおみくじの中で何か間違えてるのかなと思うのですが…

なんで、y or Y 以外を入力した場合は実行しませんでしたとメッセージが出るという風にしたはずなのに…
0932917のつづきNGNG
ここなら親身に教えてくれるって聞いて来ました…。
0933デフォルトの名無しさんNGNG
>>910
#include <string>
#include <iostream>

using namespace std;

struct Set{
char ch[256];
string str[256];
};

int addset(Set *set,char a);

int main(){
char a='k';
Set set;
int i;
cout<<"要素操作みたいな・・・\n";
i=addset(&set,a);
cout<<"要素"<<i;
return 0;
}
int addset(Set set,char a){
int i=0;
while(set->ch[i]!='null'){
i++;
}
return i;
}
このままじゃえらー出るよ
後は自分で!
俺は風呂に入ってくる!
0934デフォルトの名無しさんNGNG
↓よろしくお願いします。

複数の文字列を読み込み、これをリストに格納し、出力するプログラムを作成しなさい。
ここで入力とは逆の順序のリストと入力順のリストの2通りを作成しなさい。
0935デフォルトの名無しさんNGNG
>>917
switch(a)
{
  case 1:
  /* ここから
  printf("おみくじプログラムを実行しますか?y:YES n:NO");
  
    printf("おみくじプログラム実行しませんでした");
  } ここまで*/
  break;
  case2:
    printf("おみくじ(改良型)プログラムを実行しますか?y/n");
    scanf("%d",&c);
}
ここからここまでコメント入れてコンパイル通ったら、一行ずつコメント外して繰り返せ
0936917NGNG
>>930
ふつうのおみくじにループをつけてdo while文使おうと思ってます。
y、n、Y、N以外はエラー表示でまた入力の所に戻るってのをしようと思ってます 
0937デフォルトの名無しさんNGNG
>>934
それはリストと言うよりスタックとキューだね。
0938デフォルトの名無しさんNGNG
>rintf("3:おみくじプログラムを実行しない\n");
これかな?
0939848NGNG
>>858
どうもありがとうございました・・・
ってこれだけじゃ動かないんですけども
他に何か書き加えるんですか?
教えてください。
0940デフォルトの名無しさんNGNG
>>934
双方向リスト1本作れば?
0941デフォルトの名無しさんNGNG
>>934
#include <stdio.h>

struct Set{
char ch[256][256];
};

int search(char *ch);
int main(){
char ch[256];
int i;
printf("なんな入力すれば・・・\n");
gets(ch);
i=search(&ch);
printf("%d",i);
}

int search(char *ch){
int i=0;
struct Set set;
while(set.ch[i][0]=='NULL'){
i++;
}
/*引数chをなんかする*/
return i;
}
あと、よろしく!
0942917NGNG
>>938
あ、すいません。それはこのスレへの記載ミスです。ごめんなさい。
今一文一文やり直してるのですがcase15まではなんの問題も起きませんでした。
if文って文末に「;」いるんですか?
0943917NGNG
>>938
あ、すいません。それはこのスレへの記載ミスです。ごめんなさい。
今一文一文やり直してるのですがcase15まではなんの問題も起きませんでした。
if文って文末に「;」いるんですか?
0944デフォルトの名無しさんNGNG
default
0945デフォルトの名無しさんNGNG
次のページの問題がよくわかりません、課題11-1はできたんですが・・・
誰かわかる人お願いします。
http://www.laser.ee.kansai-u.ac.jp/lecture/kisopro/report11.htm
0946_NGNG
http://homepage.mac.com/hiroyuki44/hankaku10.html
0947デフォルトの名無しさんNGNG
複素数がわかってないのか実装方法がわかってないのか・・・
11-2とか簡単だろ
ヒントという名の答えがかいてあるし
0948917NGNG
なんとか、エラーは出なくなりました。新しく作ったら直った…なんで?
けど、Y押してもy押しても「おみくじプログラムを実行しませんでした」と表示されます。
なんで???
0949ともNGNG
みてね〜♪
http://s-rf9.free-city.net/page008.html
0950デフォルトの名無しさんNGNG
CでAPIを使うのに分かりやすい解説書、解説サイトありませんか?
猫でもわかる・・・は一応読破しました。
他にもあればお願いします。
0951デフォルトの名無しさんNGNG
猫を読破したならもう必要ないだろ。
0952デフォルトの名無しさんNGNG
いや、でもまだまだ知りたいことがあるんで。
0953デフォルトの名無しさんNGNG
中学生なんですけど、僕もAPIについて
知りたいです。でも、猫なんとかってのはまだ難しすぎました。
基本的なことからやりたいので、超初歩的なことから書いてある
サイトを知らないでしょうか?
0954デフォルトの名無しさんNGNG
>>953
CやC++は理解したのかな?ぼうや。
0955953NGNG
一通り、Cは理解しました。
C++もAPIを使う以前に必須ですか?
0956デフォルトの名無しさんNGNG
APIはWIN32APIと脳内変換すべきか・・・
0957953NGNG
API=WIN32APIでいいんですか?
CでWinアプリを作るっていうのも
要するにWIN32APIを使うってことなんですかね
0958デフォルトの名無しさんNGNG
>>894
コードを短くするのに悩みそうなのでアイデアだけ。
以下では3次元ベクトル u, v の内積と外積を i(u,v), o(u,v) で表す。
またPを任意の点とする。四点A,B,C,Dに対し、
a0,a1,a2,a3,b0,b1,b2,b3 をそれぞれベクトル
AP,AB,AC,AD,BP,BC,BD,BA とし、
s1 = o(a2,a3), s2 = o(a3,a1), s3 = o(a1,a2), t1 = o(b2,b3)
とするとき、四面体ABCDの体積を vol は vol = fabs(i(s1,a1))/6 で求まる。
そして点Pが四面体ABCDの内部にあることは次と必要十分。
vol != 0 &&
i(s1,a1)*i(s1,a0) >= 0 &&
i(s2,a2)*i(s2,a0) >= 0 &&
i(s3,a3)*i(s3,a0) >= 0 &&
i(t1,b1)*i(s0,b0) >= 0

なぜなら、s1 = o(a2,a3) は△ACDを含む平面の法線ベクトルなので
この平面に関して点Pと点Bが同じ側にある場合に限り、
内積 i(s1,a1) と i(s1,a0) の正負は一致する、
つまり i(s1,a1)*i(s1,a0) >= 0 となる。ただし、等号は
vol == 0 の場合か△ACDを含む平面上に点Pが存在する場合に成立。
同様の検査が4つの面について合格し、なおかつ体積 vol が 0 でない場合、
そしてその場合に限り、点Pは四面体ABCDの内部にあるといえる。
0959デフォルトの名無しさんNGNG
>>957
C&API直打ちでプログラムを作るのは骨が折れるぞ。
そこそこのプログラムを作りたいならC++とオブジェクト指向に
関する理解は必須。
0960デフォルトの名無しさんNGNG
初学者の変な言葉づかいを容認して話を進めようとするのはあまり感心しない
0961デフォルトの名無しさんNGNG
すみません、超初心者なので行き詰まってます・・・
10桁までの整数を読み込み1桁ずつchar型配列ketaに格納するには
どうすれば良いですか?
例えば3254と入力されたら
keta[0]=3,keta[1]=2,keta[2]=5,keta[3]=4という具合に。
スキャンを使ってもうまくいきません。
どうかお願いします。


0962デフォルトの名無しさんNGNG
>>961
char keta[1024];
int n;

scanf("%d",&n);
sprintf(keta,"%d",n);

こうやる

つーか単に
char keta[1024];
fgets(keta,sizeof keta,stdin);
でいいと思うが。10桁以内か、数字列かどうかの判断はその後するということで。
0963C++NGNG
↓よろしくお願いします。

複数個の整数データを読み込むものとする.
その和が 107 を超えるか,または,読み込んだデータの個数が 8 個になった時点で
データの読み込みを中止し,読み込んだデータの和と個数を出力するプログラムを書け.
結果は,和と個数を1つ以上のスペースで区切って出力すること.
0964デフォルトの名無しさんNGNG
>>961
あと最後に
for(i=0 ;i<10 ;i++)
keta[i] -= '0';
0965デフォルトの名無しさんNGNG
#include <iostream>
int main()
{
int const max_num = 8;
int const end_threshold = 107;

int num = 0;
int sum = 0;
while( sum <= end_threshold && num < max_num )
{
int n;
if( std::cin >> n )
{
sum += n;
++num;
}
else
{
return 1;
}
}
std::cout << sum << ' ' << num << std::endl;
return 0;
}
0966デフォルトの名無しさんNGNG
>>965
どうもありがとう。
0967デフォルトの名無しさんNGNG
>>961
>>962
10桁以内ではintが64bitでもないと
0968_NGNG
http://homepage.mac.com/hiroyuki44/hankaku10.html
0969デフォルトの名無しさんNGNG
char keta[11];
int i;
fgets(keta,11,stdin);
for( i=0; keta[i] && i<11; i++ )
keta[i] -= '0';
0970_NGNG
http://homepage.mac.com/hiroyuki44/hankaku10.html
0971_NGNG
http://homepage.mac.com/hiroyuki44/hankaku10.html
0972デフォルトの名無しさんNGNG
すみません、教えていただけませんか?

a0 = 0, a1=1, an+2 = an+1 + an (n は 0 以上)
で定まる数列 an を求める関数 int fibonacci(int n) を、
再帰を使って作成しなさい。
動作確認をするために、20項まで出力する main 関数も作成しなさい。
この数列は、Fibonacci(フィボナッチ)数列と呼ばれ、
a2 = 1, a3 = 2, a4 = 3, a5 = 5, a6 = 8, a7 = 13, ・・・となる。


0973ガイシュツNGNG
#include <stdio.h>
int fibonacci(int n) {
 if (n == 0) return 0;
 else if (n == 1) return 1;
 else return fibonacci(n - 1) + fibonacci(n - 2);
}
int main(void) {
 printf("%d\n", fibonacci(20));
 return 0;
}
0974972NGNG
>>973ありがとうございました!
本当に助かりました
0975デフォルトの名無しさんNGNG
>>973
きっつい再帰やなぁ。
0976デフォルトの名無しさんNGNG
すみません。下のような式の場合、a はどのような値になるのでしょうか?

a = x && y;
0977デフォルトの名無しさんNGNG
xとyに拠る
0978デフォルトの名無しさんNGNG
>>977
そんな977が好き。
0979デフォルトの名無しさんNGNG
指定されたデータを削除する配列のプログラムはどうしたらいいんですか?
削除して空いた場所に、最後のデータを移動するのと、
後のデータを1個ずつずらすものをつくりたいです。配列は順序よく並んでいません。
デリートを使ってお願いします
0980デフォルトの名無しさんNGNG
>>976
aの型にもよる
0981デフォルトの名無しさんNGNG
さてエスパーに電話するか
0982デフォルトの名無しさんNGNG
俺のセブンセンシズによると
>>979は
配列を格納したリストがつくりたいのだと小宇宙が語っている
0983デフォルトの名無しさんNGNG
一辺10の立方体の内部に整数値を座標にした点を4つランダムに
生成し、その4点を頂点にした四面体の体積および四面体が
立方体の中心を含むか含まないかを表示するプログラムを作成しなさい。

ヒント
点Pが四面体ABCDの内部にあるかどうかは、四面体ABCDの各面とPにより
形成される4つの四面体PABC,PBCD,PCBD,PDABの体積の和が、
の四面体の体積よりも大きい場合にはPは四面体の外部にある。

お願いします。
0984デフォルトの名無しさんNGNG
3次元空間内の4点を頂点とする四面体の体積を求める関数
3次元ベクトルを扱う関数の定義ファイル "vector.h" を使ってお願いします。

お願いします
0985デフォルトの名無しさんNGNG
>>984
このスレの住人には無理
0986デフォルトの名無しさんNGNG
宇治社中で聞くとか
0987デフォルトの名無しさんNGNG
うむ俺たちには vector.h は無理だな。
vector なら使えるが。
0988デフォルトの名無しさんNGNG
宇治社中って何ですか?
0989デフォルトの名無しさんNGNG
>987
vectorでお願いします
0990デフォルトの名無しさんNGNG
vector は使えるが、おそらく vector.h の代わりにはならないんだなこれが。
0991デフォルトの名無しさんNGNG
そうなんですか?全く何のことやら分からないです
0992デフォルトの名無しさんNGNG
↓STLマンセーなヤシ
0993デフォルトの名無しさんNGNG
vector_3d<T>

0994デフォルトの名無しさんNGNG
無視された958に黙祷。。。
0995983NGNG
>>994
おお凄い!
0996デフォルトの名無しさんNGNG
次スレまだ〜?
0997983NGNG
しかし、意味不明
0998デフォルトの名無しさんNGNG
>>997
日本語は正しくな。
「しかし漏れはバカだから理解できません」
だろ?
0999デフォルトの名無しさんNGNG
>>996
依頼してくる
1000デフォルトの名無しさんNGNG
1000げとー
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。