Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    15

    invertire i valori di un array

    salve a tutti, devo realizzare un programma che inverta i valori dell' array in loco, io ho provato così ma alla fine mi restituisce l array di partenza, date un occhiata al codice e ditemi dove sbaglio grazie
    codice:
    #include <stdio.h>
    
    
    
    int main()
    {
        int a[1000];
        int num,i,j;
        int temp;
        scanf("%d",&num);
        for(i=0;i<num;i++)
            scanf("%d",&a[i]);
        j=num-1;
    
    
    
    
          for(i=0;i<num;i++)
          {
              temp=a[j];
              a[j]=a[i];
              a[i]=temp;
              j--;
    
    
          }
    
    
    
    
        for(i=0;i<num;i++)
            printf("%d \n",a[i]);
    
    
    
    
    
    
    
    
    return 0;
    }

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Se il tuo array vale ad esempio {1, 2, 3, 4, 5, 6} ad occhio succede questo:

    {1, 2, 3, 4, 5, 6}
    {6, 2, 3, 4, 5, 1}
    {6, 5, 3, 4, 2, 1}
    {6, 5, 4, 3, 2, 1} <--- qui di devi fermare!
    {6, 5, 3, 4, 2, 1}
    {6, 2, 3, 4, 5, 1}
    {1, 2, 3, 4, 5, 6}

    Controlla la condizione del for
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    E' il solito scherzetto: se devi invertire un array devi prendere un elemento della prima metà dell'array e swapparlo con l'elemento corrispondente posto nell'altra metà dell'array.

    Così come stai facendo tu stai swappando su tutto l'array: quindi, alla fine del ciclo avrai spostato DUE volte ciascun elemento, portandolo prima dall'altra parte e poi riportandolo dov'era in origine:

    codice:
    A B C D  --> inizio
    D B C A  --> inverti 0 e 3  (i = 0, j = 3)
    D C B A  --> inverti 1 e 2  (i = 1, j = 2)
    D B C A  --> inverti 2 e 1  (i = 2, j = 1)
    A B C D  --> inverti 3 e 0  (i = 3, j = 0)

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    15
    grazie mille, che stupido ad non averci pensato...
    grazie mille ragazzi

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.