Saya tidak tahu cara mencetak elemen array dari fungsi saya ke dalam program utama jadi jika beberapa orang dapat memeriksa kode ini dan membantu saya memperbaikinya, saya akan sangat menghargainya. Program seharusnya mengambil panjang array dari input pengguna dan kemudian meminta elemen-elemennya dan mencetaknya sesudahnya.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int arrayN(int N) {
    printf("Input array lenght: ");
    scanf("%d",&N);
    
    if(N>2) {
        return N;
    } else {
        return 0;
    }
}

int arrayelements(int array[], int array_length) {
    int loop, i, N;
    
    array_length = arrayN(N);
    
    printf("Enter elements of the array: \n");
    
    for(int i = 0; i < array_length; ++i) {
        scanf("%d", &array[i]);
    }
    
    for(loop = 0; loop < array_length; loop++) {
        printf("%d ", array[loop]);
    }
}

int main() {
    int N, array[], array_length;
    int b = arrayelements(array[], array_length);
    int a = arrayN(N);
    
    printf("Array length is: %d \n", a);
    printf("Elements of array are: %d \n", b);
    
    return 0;
}
1
Krsi 12 Mei 2021, 11:09

2 jawaban

Jawaban Terbaik

Saya mengerjakan ulang kode contoh Anda. Semoga itu yang Anda inginkan.

Fokus terletak pada perbaikan masalah deklarasi array, alokasi memori, dan input pengguna.

#include <stdio.h>
#include <stdlib.h>
#include <stdarg.h>
#include <ctype.h>

int userinput_integer(const char *fmt, ...){
    int N, rv = 0;
    va_list va;
    
    va_start(va, fmt);
    vprintf(fmt, va);
    
    while(1){
        rv = scanf("%d", &N);
        if (1 == rv) break;
        
        printf("Input error! The input >>");
        do{
            rv = fgetc(stdin);
            if (isprint(rv)) putchar(rv);
        }while(rv != EOF && rv != '\n');
        
        printf("<< is not a valid integer.\nPlease try again: ");
    }
    
    va_end(va);
    return N;
}

int userinput_arraylength(void) {
    int N;
    
    N = userinput_integer("Input array lenght: ");
    
    if(N>2) {
        return N;
    } else {
        printf("Invalid length\n");
        
        return 0;
    }
}

int userinput_arrayelements(int *array, int N) {
    printf("Enter elements of the array: \n");
    
    for(int i = 0; i < N; ++i) {
        array[i] = userinput_integer("%d: ", i);
    }

    return N;
}

void print_arrayelements(int *array, int N){
    for(int i = 0; i < N; ++i) {
        printf("%d ", array[i]);
    }
}

int main() {
    int N, *array;
       
    N = userinput_arraylength();
    array = malloc(N * sizeof(*array));
    if (NULL == array){
        printf("Allocation error!\n");
        exit(-1);
    }

    N = userinput_arrayelements(array, N);
    
    printf("Array length is: %d \n", N);
    printf("Elements of array are:\n");
    print_arrayelements(array, N);
    
    free(array);
    
    return 0;
}
1
pqans 12 Mei 2021, 14:03

Pertama, deklarasi array tidak benar. Seharusnya array[] = {0}

Kedua, Anda tidak dapat memanggil fungsi elemen array Anda sebelum fungsi arrayN, ukuran array harus dimasukkan terlebih dahulu

Dan di elemen array() tidak perlu memanggil fungsi ukuran, Anda bisa langsung meneruskan ukuran array saat memanggil elemen array()

Berikut kodenya:

#include <stdio.h>  
#include<malloc.h>  
int *getarray()  
{  
    int size;  
    printf("Enter the size of the array : ");  
    scanf("%d",&size);  
    int *p= malloc(sizeof(size));  
    printf("\nEnter the elements in an array");  
    for(int i=0;i<size;i++)  
    {  
        scanf("%d",&p[i]);  
    }  
    return p;  
}  
int main()  
{  
   int *ptr;  
   ptr=getarray();  
   int length=sizeof(*ptr);  
   printf("Elements that you have entered are : ");  
    for(int i=0;ptr[i]!='\0';i++)  
    {  
      printf("%d ", ptr[i]);  
    }  
  return 0;  
}  
-1
noob programmer 12 Mei 2021, 09:53