C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 文字列の変換(助けてください!)


(過去ログ 101 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■60528 / inTopicNo.1)  文字列の変換(助けてください!)
  
□投稿者/ amoi (1回)-(2011/07/06(Wed) 21:34:33)

分類:[.NET 全般] 

学校の課題のプリントで果物と個数がのってあり、これらを単純選択法を用いて上位順に並べろとかいてあったのでプログラムに直したのですが、数字の方は大小関係がわかるので試行錯誤しながらなんとかプログラムはできました。でも数字だけでなく果物の名前も入れ替えなければいけないのですがやりかたが全くわかりません(/_;)
来週提出なので誰かやり方教えてください(/_;)
ちなみにc言語初心者です。

りんご  125
みかん  200
ばなな  14
いちご  150


以下が今私ができているところまでのプログラムです。
この状態で単純選択法を用いて実行すると

りんご 200
みかん 150
ばなな 125
いちご 14

までできます。




#include <stdio.h>
 
 int main( )
 {
  int data[4] ;
    int i,j,pos,max ;
    
    
    
    char x[4][10]={
    	"りんご","みかん","ばなな","いちご"};
    	
    	int data[4]={124,200,14,150};
 
     for(i=0; i<=4; i++){
     	
     	printf("%10s,%5d\n",x[i],data[i]);
     	
     }
   
   
   
       
      for (i=0;i<(4-1);i++) {
        
        pos = i ;
        for (j=i+1;j<=4;j++) {
             if (data[j] > data[pos]) {
                 pos = j ;
             }
         }
         max = data[pos] ;
         data[pos] = data[i] ;
         data[i] = max;
         
              }     
      
            
     for (i=0;i<=4;i++) {
     	
     	         
     printf("%5s%3d\n",x[i][0],data[i]) ;
     }
     
 }
 
 


引用返信 編集キー/
■60529 / inTopicNo.2)  Re[1]: 文字列の変換(助けてください!)
□投稿者/ shu (834回)-(2011/07/06(Wed) 21:50:27)
No60528 (amoi さん) に返信

strcmpで文字列の大小比較です。
引用返信 編集キー/
■60530 / inTopicNo.3)  Re[1]: 文字列の変換(助けてください!)
□投稿者/ επιστημη (2650回)-(2011/07/06(Wed) 21:51:43)
επιστημη さんの Web サイト
> max = data[pos] ;
> data[pos] = data[i] ;
> data[i] = max;

このとき名前x[]もついでに入れ替えたらいんじゃね?

引用返信 編集キー/
■60531 / inTopicNo.4)  Re[2]: 文字列の変換(助けてください!)
□投稿者/ amoi (2回)-(2011/07/06(Wed) 21:55:32)
No60529 (shu さん) に返信
> ■No60528 (amoi さん) に返信
>
> strcmpで文字列の大小比較です。

返信ありがとうございます(/_;)
大小比較って・・・どうやってやればいいんですか!?


引用返信 編集キー/
■60532 / inTopicNo.5)  Re[2]: 文字列の変換(助けてください!)
□投稿者/ amoi (3回)-(2011/07/06(Wed) 21:58:07)
No60530 (επιστημη さん) に返信
>> max = data[pos] ;
>> data[pos] = data[i] ;
>> data[i] = max;
>
> このとき名前x[]もついでに入れ替えたらいんじゃね?
>

返信ありがとうございます。
その入れ替え方がわかんないです(>_<)


2人ともあほな私ですみません(/_;)!!
引用返信 編集キー/
■60534 / inTopicNo.6)  Re[3]: 文字列の変換(助けてください!)
□投稿者/ επιστημη (2651回)-(2011/07/07(Thu) 03:20:57)
επιστημη さんの Web サイト
> その入れ替え方がわかんないです(>_<)

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

int main() {
  char x[4][10]={ "りんご","みかん","ばなな","いちご"};
  int data[4]={124,200,14,150};
  int i, j, pos, max;
  char t[10]; /* ついか */

   for ( i = 0; i < 4; i++ ) {
     printf("%10s,%5d\n",x[i],data[i]);
   }
   printf("\n");

   for ( i = 0; i < (4-1); i++ ) {
     pos = i ;
     for ( j = i+1; j < 4; j++ ) {
       if (data[j] > data[pos]) {
         pos = j ;
       }
     }
     max = data[pos] ;
     data[pos] = data[i] ;
     data[i] = max;

     strcpy(t, x[pos]);    /* ついでに */
     strcpy(x[pos], x[i]); /* なまえも */
     strcpy(x[i], t);      /* いれかえ */
   }

   for ( i = 0; i < 4; i++ ) {
     printf("%10s,%5d\n",x[i],data[i]);
   }
 }

引用返信 編集キー/
■60572 / inTopicNo.7)  Re[3]: 文字列の変換(助けてください!)
□投稿者/ PATIO (115回)-(2011/07/09(Sat) 21:46:23)
> その入れ替え方がわかんないです(>_<)

プログラムでの実装はすでにεπιστημη さんが書かれているので。

オレンジジュースが入ったコップとコーヒーが入ったマグカップがある時に
コーヒーをコップに、オレンジジュースをマグカップに入れたいとしたら
あなたはどうします?

他に何か入れ物が必要になりませんか?
プログラムでも同じことで配列の中の値を入れ替えたい場合に
他に器になる変数を用意しないと入れ替えることができません。

ジュースの例で言うならオレンジジュースを別の入れ物に移しておいて
コーラをマグカップからコップに移します。
その後、別の入れ物に入れておいたオレンジジュースをマグカップに
移せば、入れ替えられるというわけです。

すべての内容を一気に移しかえるようなことを考えるのではなくて
一つ一つ解決していくように考えると考えやすいと思いますよ。
結局は小さな処理の積み重ねが処理全体を作っています。

引用返信 編集キー/
■60573 / inTopicNo.8)  Re[4]: 文字列の変換(助けてください!)
□投稿者/ επιστημη (2653回)-(2011/07/10(Sun) 06:25:29)
επιστημη さんの Web サイト
No60572 (PATIO さん) に返信
>>その入れ替え方がわかんないです(>_<)
>...
> 他に何か入れ物が必要になりませんか?
> プログラムでも同じことで配列の中の値を入れ替えたい場合に
> 他に器になる変数を用意しないと入れ替えることができません。

max = data[pos] ;
data[pos] = data[i] ;
data[i] = max;

てのはできてんだから、「入れ替えには別の領域が必要」なのはわかってんじゃないかな。
"文字列"を入れ替える"具体的"な方法がわかんなかっただけで。

> char x[4][10]={ "りんご","みかん","ばなな","いちご"};

ここんとこ、

char* x[4] ={ "りんご","みかん","ばなな","いちご"};

ってやっとけばintと同様に扱えた↓んですけどね。

char* t;
t = x[pos] ;
x[pos] = x[i] ;
x[i] = t;

引用返信 編集キー/
■60582 / inTopicNo.9)  Re[5]: 文字列の変換(助けてください!)
□投稿者/ ツPツAツTツIツO (4回)-(2011/07/11(Mon) 10:48:38)
No60573 (επιστημη さん) に返信
> ■No60572 (PATIO さん) に返信
> てのはできてんだから、「入れ替えには別の領域が必要」なのはわかってんじゃないかな。
> "文字列"を入れ替える"具体的"な方法がわかんなかっただけで。

ふむ、バッファからバッファに移しかえる部分のイメージが
浮かばなかったんですかねぇ。
文字列に関するイメージがうまく出来ない状態なのかなぁ。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -