E-Yu の回答履歴

全8件中1~8件表示
  • 配列の中を変更

    入力したnameに、入力したageの数だけ文字を進める(例えばnameがOda、ageが12→表示結果がAmp)にする関数を作成しようとしたのですが、やり方がまったくわかりません。 そもそもこのような場合、文字1つ1つに別の配列を使わなければならないのでしょうか? #include <stdio.h> #define N 1 #define NAME 20 typedef struct{ char name[NAME]; char age; } person; int main(void){ int i; person persons[N]; for(i=0;i<N;i++){ printf("name > "); scanf("%s" , persons[i].name); printf("age > "); scanf("%d" , &persons[i].age); } for(i=0;i<N;i++){ printf("name = %s\n" , persons[i].name); printf("age = %d\n" , persons[i].age); } return 0; }

  • リストの削除について

    以下のようなプログラムを作ったのですが、このプログラムに削除をする関数を加えたいです。 たとえば削除する値2と入力した場合 1 3 7 8 9 15 19 20と表示させたいのですがどのように行えばよいでしょうか? 自分が作った削除の関数だとうまくできませんでした。どうしたらよいのでしょうか? よろしくお願いします。 #include<stdio.h> #define NUM 12 typedef struct{ int IntData; int NextIndex; } MyList; void ShowList(MyList data[]); int DeleteALL(int value,MyList data[]); int main(void) { int i; int datano=NUM; int dt[NUM]={1,2,2,3,2,7,8,9,15,19,20,2}; int del=0,temp=0,del=0; char sentaku[3]; MyList data[NUM]; for(i=0;i<datano;i++){ data[i].IntData=dt[i]; data[i].NextIndex=i+1; } data[NUM-1].NextIndex=-1; ShowList(data); while(1){ printf("選択(削除=v, 編集終了=q):"); scanf("%s",sentaku); if(sentaku[0]=='v'){ printf("削除する値:"); scanf("%d",&del); temp=DeleteALL(del,data) printf("%d つのノードを削除しました\n",temp); ShowList(data); } else if(sentaku[0]=='q'){ return 0; } else{puts("もう一度入力");} } } void ShowList(MyList data[])//表示する関数 { int i=0; printf("リスト: "); while(i!=-1){ printf("%d ",data[i].IntData); i=data[i].NextIndex; } printf("\n"); } /* 以下自分が作った削除の関数 */ int DeleteALL(int value,MyList data[]) { int i=0,dn=0,count=1; while(data[i].NextIndex!=-1){ i=data[i].NextIndex; dn++; } for(i=0;i<dn;i++){ if(value==data[i].IntData){ count++; data[i-1].NextIndex=data[i].NextIndex; data[i].NextIndex=-1; } return count; }

  • スレッドの中断についての質問

    現在、C#でプログラミングを開発しております。初心者ですので、よろしくお願いします。 public delegate void MyMethod(); private Thread t1=null ; public void btn_Download_Click(object sender, EventArgs e) //Go! {   Thread t1 = new Thread(new ThreadStart(DownloadThread_HTTP));   t1.IsBackground = true; t1.Start(); } public void DownloadThread_HTTP() // download Thread { MyMethod DOWNLOAD_with_HTTP = new MyMethod(this.DOWNLOAD_with_HTTP); this.BeginInvoke(DOWNLOAD_with_HTTP); } public void DOWNLOAD_with_HTTP() { ...... } private void button2_Click(object sender, EventArgs e) //pause button { t1.Join(); } コードは 以上です。コンパイラは大丈夫ですけど、プログラムを実行するときに button2をクリックすると NullReferenceException例外エラーが出ます。t1の値がNullのためっていうことをわかりますけど、どうやれば t1の値がNullにならないのですか? ご教授ください、お願いいたします。

  • fscanfを使った読み取り

    datファイルの内容が 100,KAWAI YOSIKI,299,AKASAKA NOBORU・・・・ のような感じになっていて その中身を構造体配列に格納したい場合についてお聞きしたいです。 構造体の型は struct date { int id; char name[80]; }; のような感じです。自分なりに考えてfscanfを使って(省略部分あり) struct o_kaiin[20]; fp=fopen("date.dat","rb"); for(i=0;i<20;i++) { fscanf(fp,"%d%s",&o_kaiin[i].id,&o_kaiin[i].name); } という感じで格納しようとしたのですが、エラーが起こってしまいます。 名前の間に空白が無ければ問題ないのですが、このような文字列の場合 どのようにして読み込めばいいのでしょうか?ご教授ください。

  • 画像を表示するには

    C言語をおぼえたてなんですが 文字はprintfで表示するやり方がわかるんですが 画像はどのように表示するのでしょうか?

  • 二分探索木のプログラム

    2分探索木のプログラムを作っているのですが、実行するとセグメテーション違反がでます。何が間違っているんでしょうか? #include<stdlib.h> struct node{ struct node *left,*right; int datum; }; struct bintree{ struct node *root; }; /*空木を作成*/ void InitTree(struct bintree *p) { p->root=NULL; } /*木全体を削除*/ void ClearTree(struct bintree *p) { struct bintree *q,*r; if(p->root!=NULL){ q->root=p->root->left; ClearTree(q); r->root=p->root->right; ClearTree(r); free(p->root); } } /*第二引数で指定された値が木の節点のラベルに存在すれば、その節点へのポインタを返す。なければ、NULLを返す。*/ struct node * SearchNode(struct bintree *p,int x) { struct bintree *q,*r; struct node *a=p->root; int cond=x-(a->datum); if(a==NULL) return NULL; else if(cond==0) return a; else if(cond<0){ q->root=p->root->left; SearchNode(q,x); } else{ r->root=p->root->right; SearchNode(r,x); } } /*第二引数で指定された値が木の節点のラベルに存在すれば、NULLを返す。なければ、追加して、新たに作成された節点へのポインタを返す。*/ struct node * InsertNode(struct bintree *p,int x) { struct bintree *q,*r; struct node *a=p->root; int cond=x-(a->datum); if(a==NULL){ a=(struct node *)malloc(sizeof(struct node)); a->datum=x; a->left=a->right=NULL; return a; } else if(cond==0) return NULL; else if(cond<0){ q->root=p->root->left; a->left=InsertNode(q,x); } else{ r->root=p->root->right; a->right=InsertNode(r,x); } } int main() { struct bintree *p; struct node *a; InitTree(p); a=InsertNode(p,5); InsertNode(p,3); InsertNode(p,0); InsertNode(p,10); SearchNode(p,5); ClearTree(p); return 0; }

  • いじられキャラはもう嫌なんです

    小学生の頃から同じ女の子のグループバカにされていて、 『みんなきっと悪気はないんだろうな』 と深く考えてはいなかったんですけど、 中学にあがったころから 「いじられキャラ」だと明言されてからかわれるようになりました。 この時みんなは私が傷ついてるのを分かってくれないとか悩みました。 大学生になったいまでも、  私の声や顔が不愉快だとか、ものすごく失礼なことを言われても つられ笑いでナァナァにしてしまう自分が悲しいです。 普段しゃべったり買い物に行く程度の知り合いはたくさんいますが、 悩み事を真剣に聞いてくれたりする友達はいません。 なにげなく言った事さえ、揚げ足を取られてもっと大げさなバカ話になって吹聴されています。 片想い相手の男の子が、わたしのことを「あいつ本当バカだよ」って 影口言ってたよ。と 同級生の女の子から笑い話のように聞かされました。 マトモなことを言っても全部おちゃらけにされちゃいます。 どうしたらこんな状況から抜け出せるんでしょうか。 いじられる子が傷つくことくらい分かるハズなのに、、

  • プログラムに詳しい方教えてください!

    #include<stdio.h> void fxl(int x,int y); int main(void) { int a,b,m,n; printf("整数aの値を入力\n"); scanf("%d",&b); printf("整数bの値を入力\n"); scanf("%d",&b); m=a; n=b; fxl(m,n); printf("a=%dとb=%dを加算した値は%d\n",ab,m); printf("a=%dからb=%dを減算した値は%d\n",ab,n); return 0; } void fxl(int x,int y) { int j,k; j=x; k=y; x=j+k; y=j-k; } このプログラムを作ってみたのはいいのですが、参照渡しを使って正常に足し算、引き算をするにはどうすればよいのでしょうか。