#3
by t_n_y_09 » 7年前
質問者です。
それを書いてください、というのは、ここにということでしょうか?
期待される結果は
num3={10,10,10,10,10,10,10,10,10,10}
というものです。
以下、今日考えたコードです。
コード:
#include<stdio.h>
#include<string.h>
#define MAX 10
void num_disp(int *num, int n);//void関数の宣言
void num_sort_1(int *num1, int n);//配列の先頭アドレスnum1と配列サイズnを受け取る
void num_sort_2(int *num2, int n);
void wa(int *num1,int *num2,int *num3,int n);
int num1[MAX] = { 0,0,0,0,0,0,0,0,0,0 };
int num2[MAX] = { 0,0,0,0,0,0,0,0,0,0 };
int num3[MAX] = { 0,0,0,0,0,0,0,0,0,0 };
int i, j,t;
int main(int *num1, int *num2, int *num3, int n)
{
int num[MAX] = { 1,9,3,8,5,7,6,4,2,0 };
printf("元の配列:");
num_disp(num, MAX);
printf("sort1でのnum1[i]:");
num_sort_1(num, MAX);
printf("sort2でのnum2[i]:");
num_sort_2(num, MAX);
printf("wa:");
wa(num,num,num,MAX);
return 0;
}
void num_disp(int *num, int n)
{
int i;
for (i = 0; i < n; i++) {
printf("%d", num[i]);
}
printf("\n");
}
void num_sort_1(int *num1,int n)//昇順 要素数n個、配列先の先頭のアドレスnum1を引数とする関数
{
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; ++j) {
if (num1[i] > num1[j]) {
t = num1[i], num1[i] = num1[j], num1[j] = t;
}
}
}for (i = 0; i < n; i++) {
printf("%d", num1[i]);
}
printf("\n");
num1 = &num1[i];//ポインタnum1にnum1[i]のアドレスを格納
}
void num_sort_2(int *num2, int n)//降順 要素数n個、配列先の先頭のアドレスnum2を引数とする関数
{
for (i = 0; i < n-1; ++i) {
for (j = i + 1; j < n-1; j++) {
if (num2[i] < num2[j]) {
int t;
t = num2[i],num2[i] = num2[j], num2[j] = t;
}
}
}
for (i = 0; i < n; i++) {
printf("%d", num2[i]);
}
printf("\n");
num2 = &num2[i];
}
void wa(int *num1, int *num2, int *num3,int n)//各要素の和
{{
printf("num1[i]:%d", num1[i]);
printf("\n");
printf("num2[i]:%d", num2[i]);
printf("\n");
for (i = 0; i < n - 1;++i) {
num3[i] = num1[i] + num2[i];
}
printf("各要素の和:%d", num3[i]);
for (i = 0; i < n - 1;++i)
printf("%d", num3[i]);
}
printf("\n");
}
このようにやってみたのですが、
////////////////////以下出力結果////////////////////
元の配列:1938576420
sort1でのnum1
:0123456789
sort2でのnum2:9876543210
wa:num1:-858993460
num2:-858993460
各要素の和:91614121086420
///////////////////////////////////////////////////
となってしまいました。
質問者です。
それを書いてください、というのは、ここにということでしょうか?
期待される結果は
num3={10,10,10,10,10,10,10,10,10,10}
というものです。
以下、今日考えたコードです。
[code]
#include<stdio.h>
#include<string.h>
#define MAX 10
void num_disp(int *num, int n);//void関数の宣言
void num_sort_1(int *num1, int n);//配列の先頭アドレスnum1と配列サイズnを受け取る
void num_sort_2(int *num2, int n);
void wa(int *num1,int *num2,int *num3,int n);
int num1[MAX] = { 0,0,0,0,0,0,0,0,0,0 };
int num2[MAX] = { 0,0,0,0,0,0,0,0,0,0 };
int num3[MAX] = { 0,0,0,0,0,0,0,0,0,0 };
int i, j,t;
int main(int *num1, int *num2, int *num3, int n)
{
int num[MAX] = { 1,9,3,8,5,7,6,4,2,0 };
printf("元の配列:");
num_disp(num, MAX);
printf("sort1でのnum1[i]:");
num_sort_1(num, MAX);
printf("sort2でのnum2[i]:");
num_sort_2(num, MAX);
printf("wa:");
wa(num,num,num,MAX);
return 0;
}
void num_disp(int *num, int n)
{
int i;
for (i = 0; i < n; i++) {
printf("%d", num[i]);
}
printf("\n");
}
void num_sort_1(int *num1,int n)//昇順 要素数n個、配列先の先頭のアドレスnum1を引数とする関数
{
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; ++j) {
if (num1[i] > num1[j]) {
t = num1[i], num1[i] = num1[j], num1[j] = t;
}
}
}for (i = 0; i < n; i++) {
printf("%d", num1[i]);
}
printf("\n");
num1 = &num1[i];//ポインタnum1にnum1[i]のアドレスを格納
}
void num_sort_2(int *num2, int n)//降順 要素数n個、配列先の先頭のアドレスnum2を引数とする関数
{
for (i = 0; i < n-1; ++i) {
for (j = i + 1; j < n-1; j++) {
if (num2[i] < num2[j]) {
int t;
t = num2[i],num2[i] = num2[j], num2[j] = t;
}
}
}
for (i = 0; i < n; i++) {
printf("%d", num2[i]);
}
printf("\n");
num2 = &num2[i];
}
void wa(int *num1, int *num2, int *num3,int n)//各要素の和
{{
printf("num1[i]:%d", num1[i]);
printf("\n");
printf("num2[i]:%d", num2[i]);
printf("\n");
for (i = 0; i < n - 1;++i) {
num3[i] = num1[i] + num2[i];
}
printf("各要素の和:%d", num3[i]);
for (i = 0; i < n - 1;++i)
printf("%d", num3[i]);
}
printf("\n");
}
[/code]
このようにやってみたのですが、
////////////////////以下出力結果////////////////////
元の配列:1938576420
sort1でのnum1[i]:0123456789
sort2でのnum2[i]:9876543210
wa:num1[i]:-858993460
num2[i]:-858993460
各要素の和:91614121086420
///////////////////////////////////////////////////
となってしまいました。