2016-06-02 11 views
-1

Ich habe eine Funktion, die Array 1 nimmt und kopiert/manipuliert es zu Array 2. Grundsätzlich ist es die Benutzereingabe in Array eins, sagen wir (2, 3, 3) und Array 2 wird als (2, 0, 3, 0, 3) gespeichert. Ich weiß, das funktioniert, weil es funktionierte, ohne eine Funktion zu implementieren, aber leider muss ich eine haben. Ich kann nicht für das Leben von mir herausfinden, wie man die Funktion nennt, ich glaube, dass ich keine Rückkehr brauche, da es eine Leere ist und keinen Wert zurückgibt. Unten ist mein Code, jede Hilfe wäre willkommen.Funktionsaufruf in C mit Array

#include <stdio.h> 

void insert0(int n, int a1[], int a2[]); 

int main() { 

int i = 0; 
int n = 0; 
int a1[n]; 
int a2[2*n]; 

printf("Enter the length of the array: "); 
scanf("%d",&n); 

printf("Enter the elements of the array: "); 

for(i = 0; i < n; i++){ //adds values to first array 
     scanf("%d",&a1[i]); 
} 

insert0(); //call function which is wrong and I cannot get anything to work 

for(i = 0; i < n*2; i++){ //prints array 2 
     printf("%d", a2[i]); 
     } 

void insert0 (int n, int a1[], int a2[]){ //inserts 0's between each number 

for(i = 0; i < n; i++){ 
     a2[i+i] = a1[i]; 
     a2[i+i+1] = 0; 
     } 
} 
} 
+1

Bitte Code formatiert werden. Es ist zu chaotisch, sich die Zeit zu nehmen, es zu lesen. Weil es zusätzlichen Aufwand erfordert. –

+0

Sie übergeben keine Parameter an insert0(). – nucleon

Antwort

4
  • Ändern n nach declaraing a1 und a2 nicht auf magische Weise ihre Größe erhöhen. Erklären Sie a1 und a2nach Lesen der Größe in n, um Arrays variabler Länge zu verwenden.
  • Sie müssen die richtigen Argumente übergeben, um insert0 aufzurufen.
  • Definieren von Funktionen innerhalb von Funktionen ist GCC-Erweiterung, und Sie sollten das nicht tun, wenn es erforderlich ist.
  • a2 sollte n*2 - 1 Elemente haben, nicht n*2 Elemente.
  • Nach dem Verschieben aus main(), i ist nicht in insert0 deklariert, so dass Sie es deklarieren müssen.
  • Sie sollten überprüfen, ob die Messwerte erfolgreich sind.

Corrected Code:

#include <stdio.h> 

void insert0(int n, int a1[], int a2[]); 

int main() { 

     int i = 0; 
     int n = 0; 

     printf("Enter the length of the array: "); 
     if(scanf("%d", &n) != 1){ 
       puts("read error for n"); 
       return 1; 
     } 
     if(n <= 0){ 
       puts("invalid input"); 
       return 1; 
     } 

     int a1[n]; 
     int a2[2*n-1]; 

     printf("Enter the elements of the array: "); 

     for(i = 0; i < n; i++){ //adds values to first array 
       if(scanf("%d", &a1[i]) != 1){ 
         printf("read error for a1[%d]\n", i); 
         return 1; 
       } 
     } 

     insert0(n, a1, a2); 

     for(i = 0; i < n*2-1; i++){ //prints array 2 
       printf("%d", a2[i]); 
     } 
} 
void insert0 (int n, int a1[], int a2[]){ //inserts 0's between each number 
     int i; 
     for(i = 0; i < n; i++){ 
       a2[i+i] = a1[i]; 
       if (i+1 < n){ // don't put 0 after the last element 
         a2[i+i+1] = 0; 
       } 
     } 
} 
Verwandte Themen