
intを要素とする二つの配列a、bとその配列の要素数を受け取り、配列aのすべての要素の値を配列bにコピーする関数を定義し、その関数の機能を確認するプログラム作成するという問題について質問です。
(1)配列aを配列bに「先頭から順番に」コピーする関数を作成する
(2)配列aを配列bに「後ろから順番に」コピーする関数を作成する
ただし、配列の要素数(例では4)が変更されても処理できる関数を作成したいです。また、配列の要素の値は関数main()内で表示したいです。
[ヒント]
(1)関数宣言の例
void array_copy(コピー元の配列, コピー先の配列, 配列の要素数)
[実行結果の例]
(1)先頭から順番にコピーする
コピー前
a[0]: 1 b[0]: 0
a[1]: 2 b[1]: 0
a[2]: 3 b[2]: 0
a[3]: 4 b[3]: 0
コピー後
a[0]: 1 b[0]: 1
a[1]: 2 b[1]: 2
a[2]: 3 b[2]: 3
a[3]: 4 b[3]: 4
(2)後ろから順番にコピーする
コピー前
a[0]: 1 b[0]: 0
a[1]: 2 b[1]: 0
a[2]: 3 b[2]: 0
a[3]: 4 b[3]: 0
コピー後
a[0]: 1 b[0]: 4
a[1]: 2 b[1]: 3
a[2]: 3 b[2]: 2
a[3]: 4 b[3]: 1
#include <stdio.h>
void array_copy()
から始めて
int main(void)
{
とプログラムを作成したいのですが教えてください。

No.3ベストアンサー
- 回答日時:
(1)
順向きに配列の内容をコピーする関数の処理
iを0からN-1までループさせる。ループ内で行う処理は
to[i] = from[i]; である。
(2)
逆向きに配列の内容をコピーする関数の処理
iを0からN-1までループさせる。ループ内で行う処理は
to[i] = from[N-(i+1)]; である。
#include <stdio.h>
//順向きにコピーする関数
void array_copy(int *to , int *from , int N)
{
int i;
//(1)を記述
}
//逆向きにコピーする関数
void reverse_array_copy(int *to , int *from , int N)
{
int i;
//(2)を記述
}
//配列を0からN個分表示する関数
void view_array(int *dat , int N)
{
int i;
for( i=0;i<N;i++ ){
printf("%d ",dat[i]);
}
printf("\n");
}
int main(void)
{
int a[4] = {4,7,6,5};
int b[4] = {0,0,0,0};
view_array(a,4);//Aの表示
view_array(b,4);//Bの表示
array_copy(b,a,4);//Aの内容をBにコピーする
view_array(a,4);//Aの表示
view_array(b,4);//Bの表示
reverse_array_copy(b,a,4);//Aの内容を逆向きにBへコピーする
view_array(a,4);//Aの表示
view_array(b,4);//Bの表示
return 0;
}
関数 array_copy だけで順向き/逆向きを切り替えたいなら
引数の数をもうひとつ増やして、順向きにしたいのか逆向きにしたいのか
を判断させるような情報を付けなければできないです。
No.4
- 回答日時:
No.1です。
では、書き方を変えましょう。
関数がわからなければ、main関数の中だけでコピーの処理を作ってください。
これが出来なければ関数化は先の話です。

No.2
- 回答日時:
#include <stdio.h>
//#define REVERSE/* 定義すると逆向きにコピー コメントアウトで順向きにコピー */
//Aの内容をBにコピーする関数
void array_copy(int *to , int *from , int N)
{
int i;
for( i=0; i<N; i++ ){
#ifdef REVERSE/* 逆向きの場合の処理 */
to[i] = from[N-(i+1)];
//to[0]にfrom[N-(0+1)]、to[1]にfrom[N-(1+1)]、to[2]にfrom[N-(2+1)]の代入作業をto[N-1]まで行う
#else/* 順向きの場合の処理 */
//単純にto[0]にfrom[0]を代入、to[1]にfrom[1]を代入をN-1まで行う
#endif
}
}
//配列を0からN個分表示する関数
void view_array(int *dat , int N)
{
int i;
for( i=0;i<N;i++ ){
printf("%d ",dat[i]);
}
printf("\n");
}
int main(void)
{
int a[4] = {4,7,6,5};
int b[4] = {0,0,0,0};
view_array(a,4);//Aの表示
view_array(b,4);//Bの表示
array_copy(b,a,4);//Aの内容をBにコピーする
view_array(a,4);//Aの表示
view_array(b,4);//Bの表示
return 0;
}
No.1
- 回答日時:
丸投げは禁止行為です。
少なくとも、「作れるだけ」は作ってみてそのソースを提示してください。
コピーの方法が分からなくても、関数の呼び出しまでくらいなら作成どきませんか?
この回答への補足
申し訳ありません。
考えてみたのですが、for文を用いて作成するのかなぁと思う程度しか分かりません。
#include <stdio.h>
void array_copy(int a[], int b[], int s)
もしくは
void array_copy(int *a[], int *b[], int s)
を用いて関数を呼び出すのかなぁと思いました。
少しずつでもいいので教えてください。
お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
c言語プログラミング 等差数列...
-
C言語 ファイルの指定された行...
-
配列のアドレス部
-
c言語
-
MFC - ダイアログボックスのPic...
-
define で 配列
-
C#で構造体の配列を持った構造...
-
C言語から質問です。
-
要素数・要素の値が未定の配列...
-
STLを使わずに可変長配列を再現...
-
C言語において、 配列要素をひ...
-
C++DLLからC#へのコールバック...
-
引数で指定された配列の要素数...
-
C言語についてです 5人のテスト...
-
fwrite文について
-
配列の不正アクセスについて
-
int i, int i[1];
-
char*を初期化したいのですが
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
C言語において、 配列要素をひ...
-
c言語
-
define で 配列
-
C#で構造体の配列を持った構造...
-
C#で配列が空かを判定するには?
-
コンボボックスでデフォルト値...
-
C言語 ファイルの指定された行...
-
C言語の2次元配列 容量が大き...
-
2番目の最大値を求める
-
MFCのCArrayを使った二次元配列
-
MFC - ダイアログボックスのPic...
-
構造体のextern方法
-
要素数・要素の値が未定の配列...
-
C言語についてです 5人のテスト...
-
配列のアドレス部
-
構造体を引数とする関数について
-
fclose()でセグメンテーション違反
-
C言語 数値の連続入力について
おすすめ情報