この小さなCプログラムを使用して配列を塗りつぶし、要素を配列から挿入して削除し、最後にその配列を出力します。配列に要素を追加して削除する
プログラムは、main()関数、addToArray()関数、 remFromArray()関数、およびprintArray()関数で構成されています。
ここに私の主な方法です: ユーザーが入力した各整数について正の整数
•一連のためにユーザを促し、配列
•コールに整数を挿入するためにaddToArray関数を呼び出すには配列の内容を出力するprintArray関数
注:入力する整数の数を入力するようにユーザーに求めないでください。
addToArray()=>
/*find the correct index in the array where to insert the
new element, so array in ascending order
- make room for the new element by moving other elements
- store the new element at the correct index
- return the new size (number of elements) of the array */
int addToArray(int* arr, int size, int numToAdd){
int i, n, m, pos;
for (int i = 0; i < maxSize; i++)
{
if (numToAdd < arr[i])
{
pos = i;
break;
}
if (numToAdd > arr[n-1])
{
pos = maxSize;
break;
}
}
if (pos != maxSize)
{
m = maxSize - pos + 1 ;
for (int i = 0; i <= m; i++)
{
arr[maxSize - i + 2] = arr[maxSize - i + 1] ;
}
}
arr[pos] = numToAdd;
}
void printArray(int* arr, int size){
printf("Resultant array is\n");
for (int c = 0; c <= maxSize; c++){
printf("%d\n", arr[c]);
}
}
として:ユーザーが負の数を入力するまでは、これらは私が作成した私の他の関数である
#include <stdio.h>
#define maxSize 100 //maxSize for array
int addToArray(int* arr, int size, int numToAdd);
int remFromArray(int* arr, int size, int numToGo);
void printArray(int* arr, int size);
int main (void){
int arr[maxSize];
int i, j;
printf("Enter a positive integer to add to an array\n");
while (i >= 0){
scanf("%d",&i);
if (i >= 0) {
addToArray(arr, maxSize, i);
printf("Enter another positive integer for array\n");
}
else{
printArray(arr, maxSize);
}
}
}
入力を受け入れる必要があります私はmain()、addToArray()、printArray()を書こうとしましたが、何らかの理由で正しく動作していないことがわかります。私のprintArray()は希望の結果を表示していません。 このコードを見て、私をガイドすることができれば嬉しいです。 ありがとうございます
どうしますか?あなたは何を得ると思いますか? – Pierre
配列を要素で使用する前に配列を初期化しないため、*未定義の動作*があります。配列やそのすべての要素を含むローカルの非静的変数は、明示的に初期化されていなければ、* indeterminate *値を持ちます。配列は、初期化されていない変数だけではありません。配列の範囲外に出るため、未定義の動作もあります。 –
ユーザからの値を読み込む前の 'while()'条件*で 'i'の値をチェックします。これは意味がありません。 – unwind