Birkaç gün önce C öğrenmeye başladım ve bu basit görevle ilgili zorluklarım var.Dizideki bir çift çift sayıyı bulun ve bunların aralarında ortalamasını ekleyin
Yapmam gereken şey şudur: Ben bu kod yazı yazmıştı
In dynamic array (all the numbers should be entered by the user) find a pair of even numbers and their average ((arr[i] + arr[i+1])/2)) should be added between that pair of even numbers
:
#include "stdafx.h"
int *fillArray(int *arraySize);
int findPairs(int *array, int arraySize);
int newArray(int *array, int arraySize, int avg, int avgPos);
void printArray(int *array, int arraySize);
int main() {
int *array;
int arraySize;
// Creating the array
array = fillArray(&arraySize);
// Printing the array, which was entered
printf("You just have entered this: \n");
printArray(array, arraySize);
// Finding a pair of even numbers
findPairs(array, arraySize);
// Printing the new array
printf("The new array looks like this now! \n");
printArray(array, arraySize);
free(array);
_getch();
}
// Creating dynamicly allocated array
int *createArray(int arraySize) {
int *array;
array = (int*) malloc (sizeof(int) * arraySize);
if (array == NULL) {
printf("No memmory avaible/n");
exit(8);
}
return array;
}
// Function for filling the array with elements
int *fillArray(int *arraySize) {
int *array = NULL;
// Array size
printf("Enter array size: ");
while (*arraySize < 2) {
scanf_s("%d", *&arraySize);
if (*arraySize < 2) {
printf("Array size should be bigger than 2! \n");
scanf_s("%d", *&arraySize);
}
}
// Calling function for creating array
array = createArray(*arraySize);
// Filling the array with numbers
printf("Enter %d numbers: \n", *arraySize);
for (int i = 0; i < *arraySize; i++) {
scanf_s("%d", &array[i]);
}
return array;
}
// Function for finding pairs of even numbers
int findPairs(int *array, int arraySize) {
int avg = 0, avgPos = 0;
for (int i = 0; i < arraySize; i++) {
if (array[i] % 2 == 0 && array[i + 1] % 2 == 0) {
avg = (array[i] + array[i + 1])/2;
avgPos = i + 1;
//Resizing the array size +1 position
*array = newArray(array, arraySize, avg, avgPos);
i++;
}
}
return *array;
}
// Function transfering into new array
int newArray(int *array, int arraySize, int avg, int avgPos) {
int *newArr = NULL;
arraySize++;
newArr = createArray(arraySize);
// Copy all the elements from 0 to the first position of first pair even numbers
for (int i = 0; i < avgPos; i++) {
newArr[i] = array[i];
}
// Add the average number between the even numbers
newArr[avgPos] = avg;
// Copy rest of the elements
for (int i = avgPos + 1; i < arraySize; i++) {
newArr[i] = array[i - 1];
}
free(array);
return *newArr;
}
// Function for printing the array
void printArray(int *array, int arraySize) {
for (int i = 0; i < arraySize; i++) {
printf("%d ", array[i]); printf("\n");
}
}
O herhangi bir sorun olmadan konsolda başlar, ancak sonra sayılarla diziyi doldurmak,
: diziyi doldurduktan sonra
hata: Bu hatayı alacak Hata listesinde
hatalar: Ben hata yapmış
?
(Bunlar zaten işaret edilmiştir modifikasyonlara tabi) deneyin! Bakın [ask]. – Olaf
Bir liste oluşturmayı mı düşündünüz? – Marievi
Resim gönderemiyorum, bunun için 10 puana ihtiyacım var. Bunun için üzgünüm! @Mariei Ne tür bir liste? "FillArray" öğesinde – D3N1EL