Programma C per raddoppiare il primo elemento e spostare zero alla fine per un dato array

Programma C per raddoppiare il primo elemento e spostare zero alla fine per un dato array

In questo post del blog, impariamo come scrivere un programma C per raddoppiare il primo elemento e spostare zero alla fine per un determinato array? Qui stiamo supponendo che per un dato array di n interi '0' sia un numero non valido e tutti gli altri come un numero valido.

Dobbiamo convertire l'array in modo tale che se sia l'elemento corrente che quello successivo sono validi e uguali, raddoppi il valore corrente e sostituisci il numero successivo con 0. Dopo la modifica, riorganizza l'array in modo tale che tutti gli 0 siano spostati alla fine .

Esempio,

Input array : int arr[] = {2, 2, 0, 4, 0, 8};

Output array: 4 4 8 0 0 0



Input array: int arr[] = {0, 2, 2, 2, 0, 6, 6, 0, 0, 8};

Output array:  4 2 12 8 0 0 0 0 0 0

 

Algoritmo per raddoppiare il primo elemento e spostare zero alla fine:

Quindi vediamo la logica per raddoppiare il primo elemento e spostare zero alla fine per un determinato array. Supponiamo che arr sia un dato array intero di input di dimensione N (arr[N] ).

1. Attraversa l'array da 0 a n-1 (incluso).

2. Controllare i valori correnti e successivi utilizzando la condizione if. Se arr[i] non è uguale a '0' e (arr[i]==arr[i+1]), dove arr[i] è il valore corrente.

  1. Se la condizione è vera, imposta il valore corrente due volte rispetto al sé.
  2. Aggiorna l'elemento successivo come 0 ed esegui i++.

3. Dopo aver convertito l'array è necessario spostare tutti gli zero alla fine. Abbiamo già scritto un articolo su "come spostare tutti zero alla fine", puoi controllare. Leggi l'articolo.

4 . Nell'ultimo ora stampa l'array.

Se vuoi saperne di più sul linguaggio C, puoi controllare questo corso, Prova gratuita disponibile.

Ottieni la tua prova gratuita

Programma C per raddoppiare il primo elemento e spostare zero alla fine

#include <stdio.h>

//Calculate array size
#define ARRAY_SIZE(a)  sizeof(a)/sizeof(a[0])


//swap function not handle null pointer scenario
//not much safe to use
void swap(int *s1, int *s2)
{
    int temp = *s1;
    *s1 = *s2;
    *s2 = temp;
}


// Function to move all zeros present in the array to the end
void moveAllZeroesAtArrayEnd(int arr[], int n)
{
    int i =0,j = 0;
    // each time we encounter a non-zero, j is incremented and
    // the element is placed before the pivot
    for (i = 0; i < n; i++)
    {
        if (arr[i] != 0)//non-zero
        {
            swap(&arr[i],&arr[j]);
            j++;
        }
    }
}

// function to rearrange the array elements
// after modification
int arrayModification(int arr[], int n)
{
    int i =0;

    const int status  = (n>1)? 0: -1;

    // traverse the array
    for (i = 0; i < n - 1; i++)
    {
        // if current element valid and equal to next
        if ((arr[i] != 0) && (arr[i] == arr[i + 1]))
        {
            // double current index value
            arr[i] = 2 * arr[i];

            // put 0 in the next index
            arr[i + 1] = 0;
            // increment by 1 so as to move two
            // indexes ahead during loop iteration
            i++;
        }
    }
    //call function when input array is valid
    if(status ==0)
    {
        //move all the zeros at the end of the array
        moveAllZeroesAtArrayEnd(arr, n);
    }

    return status;
}


int main()
{
    int arr[] = { 0, 2, 2, 2, 0, 6, 6, 0, 0, 8 };
    int i = 0;

    //get array size
    int arr_size = ARRAY_SIZE(arr);

    //modify and rearrange the array
    const int status = arrayModification(arr, arr_size);

    if(status == 0)
    {
        //print array element
        for (i = 0; i < arr_size; i++)
        {
            printf("%d ",arr[i]);
        }
    }
    else
    {
        printf("Enter valid array !");
    }
    
    return 0;
}

Articoli consigliati per te:

  • Il miglior regalo per i programmatori.
  • I migliori kit elettronici per programmatori.
  • Programma C per trovare la mediana di due array ordinati di diverse dimensioni.
  • Programma C per trovare la prima e l'ultima posizione dell'elemento nell'array ordinato
  • Scrivi il programma C per trovare il numero mancante in una data matrice di interi da 1 a n
  • Programma C per trovare l'elemento più popolare in un array
  • Trova l'elemento più grande e più piccolo in un array usando la programmazione C.
  • Programma C per trovare anche elementi che si verificano in un array di intervallo limitato
  • Trova la somma di tutti i sottoarray di un dato array.
  • Programma C per separare numeri pari e dispari
  • Trova un elemento nell'array tale che la somma dell'array sinistro sia uguale alla somma dell'array destro.
  • C Programma per trovare il conteggio degli elementi pari e dispari nell'array.
  • Scrivi il programma C per trovare la somma degli elementi dell'array.
  • Programma C per trovare elementi che si verificano dispari in un array di intervallo limitato
  • Trova la somma degli elementi dell'array usando la ricorsione
  • Programma C per invertire gli elementi di un array
  • Programma C per trovare l'elemento massimo e minimo nell'array
  • Calcola la dimensione di un array senza usare sizeof in C
  • Come creare un array dinamico in C?