
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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- C言語・C++・C# このプログラミングの問題を教えてほしいです。 キーボードからデータ数nとn個のデータを入力し、平均値 3 2022/12/19 22:51
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミングを教えて欲しいです。 配列aは、int a[9]={7,6,12,8,3,5,10,9 4 2022/12/19 23:27
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
c言語 構造体
-
define で 配列
-
C言語において、 配列要素をひ...
-
配列要素の値の入れ替え
-
要素数・要素の値が未定の配列...
-
C#で構造体の配列を持った構造...
-
C言語の課題が出たのですが自力...
-
MFCのCArrayを使った二次元配列
-
MFC - ダイアログボックスのPic...
-
IPアドレスを配列に代入する方法。
-
fclose()でセグメンテーション違反
-
C言語の2次元配列 容量が大き...
-
c言語
-
配列のアドレス部
-
C言語 ファイルの指定された行...
-
[C++]const int と配列
-
順不同の問題の結果について
-
Borland C CSVファイル読み込み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
関数から配列を返すには?
-
配列の要素数に変数を入れたい...
-
define で 配列
-
c言語
-
C#で構造体の配列を持った構造...
-
C言語 ファイルの指定された行...
-
C言語において、 配列要素をひ...
-
C言語の課題が出たのですが自力...
-
C#で配列が空かを判定するには?
-
構造体のextern方法
-
C言語の配列のコピーについて
-
c言語 構造体
-
C言語 数値の連続入力について
-
MFC - ダイアログボックスのPic...
-
C++DLLからC#へのコールバック...
-
配列のアドレス部
-
要素数・要素の値が未定の配列...
-
C言語についてです 5人のテスト...
-
.NET C++で、構造体の配列をnew...
-
2番目の最大値を求める
おすすめ情報