質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

0回答

1171閲覧

2つの構造体配列を比較しソート

cat_is_freedom

総合スコア6

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

ソート

複数のデータを、順序性に従って並べ替えること。 データ処理を行う際に頻繁に用いられ、多くのアルゴリズムが存在します。速度、容量、複雑さなどに違いがあり、高速性に特化したものにクイックソートがあります。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

プログラミング言語

プログラミング言語はパソコン上で実行することができるソースコードを記述する為に扱う言語の総称です。

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2021/06/17 07:22

編集2021/06/17 08:34

名前と売り上げをともにソートする

#include <stdio.h> #include <string.h> #include <stdlib.h> #define CHECKED 1 #define RETIRE 5 #define NAME_MAX 5 void sort(int no, char *result[]); typedef struct person09{ char name[NAME_MAX]; signed int profit; }person09_t; typedef struct person10{ char name[NAME_MAX]; signed int profit; }person10_t; void sort(int no, char *result[]){ int i; int j; char *temp; for(i = 0; i < no; i++){ for( j = i + 1; j < no; j++){ if(strcmp( (result[i]),(result[j] ) )>0){ temp = *(result + i); *(result + i) = *(result + j); *(result + j) = temp; } } } } int main(){ int i; int j; int r = 0; int cnt; int no; int flag[5] = {0}; char *result_array[8]; //char profit_array[8] = {0}; char *area; int profit_d[8] = {0}; //構造体配列 person09_t ary_09[6] = {{"アトウ",270},{"カスガ",325},{"タケモト",412},{"タナカ",333},{"ヤマシタ",277},{"ヨシオカ",192}}; person10_t ary_10[5] = {{"カスガ",357},{"スズキ",210},{"タケモト",445},{"ヤマシタ",233},{"ヨシダ",145}}; //元の数字を表示 for( i=0 ; i < 6; i++){ printf("%s ",ary_09[i].name); printf("%d\n",ary_09[i].profit); } printf("\n"); for( i=0 ; i < 5; i++){ printf("%s ",ary_10[i].name); printf("%d\n",ary_10[i].profit); } printf("\n"); //領域確保 area = (char *)malloc(sizeof(char)*5*8); result_array[0] = area; for(i = 0 ; i < 6 ;i++){ cnt = 0; for( j = 0; j < 5; j++){ //売上比較 if(strcmp( ary_09[i].name, ary_10[j].name) == 0 ){ printf("%s ",ary_09[i].name); profit_d[i] = (ary_10[j].profit) - (ary_09[i].profit); printf("%d\n",profit_d[i] ); flag[j] = CHECKED; result_array[r] = ary_09[i].name; r++; break; }else{ cnt++; } //退社判定 if( cnt == RETIRE ){ printf("%s 退社\n",ary_09[i].name); result_array[r] = ary_09[i].name; r++; break; } } } //入社判定 for( j = 0; j < 5; j++){ if( flag[j] != CHECKED ){ printf("%s 入社\n",ary_10[j].name); result_array[r] = ary_10[j].name; r++; } } //並び替え処理 printf("\n"); puts("---------------------------------------------"); no = 8; sort(no, result_array); for(i = 0; i < no; i++){ printf("結果[%d]=%s", i, result_array[i]); printf(" %d\n",profit_d[i] ); } free(area); return 0; }

昨年と今年の売り上げを比較し、昨年いない人は「入社」、今年いない人は「退社」というプログラムを書いています。

2つの構造体配列を比較し名前を50音順に並び替え、売り上げ、入社、退社 を名前と紐づけたいです。
何か良い方法があったら教えて頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/06/17 07:44

同様に並べ変えとはどういうふうな並び替えなんでしょう
cat_is_freedom

2021/06/17 08:02

回答ありがとうございます。 説明不足で申し訳ありません 50音で並べ替えた人名に売り上げの差額または入社、退社を紐づけたいという意味です。 例 アトウ 退社 カスガ 32 スズキ 入社 タケモト 33 タナカ 退社 ヤマシタ -44 ヨシオカ 退社 ヨシダ 入社
ppaul

2021/06/17 13:53

プログラミングの練習をしたいのですか、それとも実用的に動くコードが欲しいのですか?
BeatStar

2021/06/18 10:51 編集

コードが欲しいならここで聞くのはダメです。 プログラミングは「書いて終わり」……じゃないです。 デバッグやテストまで行うのが当たり前です。(趣味だとテストまでは手が足りない場合があるが) たかだか一括処理程度ですら、1~2日は余裕で使います。 それを自分は一切努力せずに他人に労力を強いるのは正しいのでしょうか。 どの道、努力したくないのならせめて、課題代行か本職の方に『金を払って』やってもらいましょう。 ここで『報酬無しでやれ』はもはや暴言。 もちろん、ヒントやアドバイスぐらいなら構いませんが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問