2017-08-28 2 views
0

Je serai reconnaissant de l'aide parce que je ne suis pas sûr de savoir comment faire ce programme. Je devrais coder le programme avec deux tables. Le premier le remplira avec les nombres Random tab = new Random();. Après cela, je devrais inverser les numéros et les remplir dans la deuxième table.C# Transcrire des données à la deuxième table et les inverser

J'ai fait la première fonctionnalité mais je ne suis pas sûr comment faire commencer avec la deuxième table?

class Program 
{ 


    static void Main(string[] args) 
    { 
     int[] tablica1 = new int[20]; 

     Random tab = new Random(); 

     for (int i = 0; i < 20; i++) 
     { 
      tablica1[i] = tab.Next(20); 
      Console.WriteLine("Tablica wylosowała nastepujace elementy:"); 
      Console.WriteLine(tablica1[i]); 
     } 

     Console.Read(); 

     int[] tablica2 = new int[20]; 

     /*for (int i = 20; i > 0; i--) 
     { 

     } 
     */ 
    } 
} 
+1

double possible de [éléments inverse dans un tableau] (https://stackoverflow.com/questions/18394882/revers e-elements-in-an-array) – Sinatr

+0

Eh bien, les réponses ici suggèrent d'utiliser une méthode intégrée, mais cela ressemble plus à une tâche de devoirs où ils sont supposés faire comprendre comment faire cela "manuellement". –

+0

@KlaudynaZ: Avez-vous besoin de le faire sans créer un autre tableau? Si oui, je suppose que vous êtes confus sur la façon de le faire sans écraser (et donc, perdre) des éléments de tableau. Astuce: Pensez à échanger deux éléments à chaque itération. –

Répondre

0

Vous ne décrivaient pas tout à fait ce qui se passe exactement lorsque vous exécutez le code, mais je pense que le problème est avec cette partie - comme cela devrait vous donner une IndexOutOfRangeException:

for (int j = tablica2.Length; j > 1 ; j--) 
{ 
    tablica2[j] = tablica1[20-j]; 
    Console.WriteLine(tablica2[j]); 
} 

Le indices de tableau vont sous forme 0-tablica2.Length - 1 (un moins de la longueur, de sorte que l'indice tablica2.Length est en dehors le tableau).
Votre boucle va dans le sens inverse de tablica2.Length deux 2 pour som La raison

Ainsi, dès qu'il commence à s'exécuter, j est 20, mais l'index le plus élevé est 19.

Modifier la boucle il en va de la gamme complète, et changer le corps de la boucle de sorte que vous ne lisez pas hors de portée des indices, dans l'une des deux façons suivantes:

for (int j = tablica2.Length - 1; j >= 0 ; j--) // goes from 19 to 0 
{ 
    tablica2[j] = tablica1[tablica1.Length - j - 1]; 
} 

ou

for (int j = tablica2.Length; j > 0 ; j--) // goes from 20 to 1 
{ 
    tablica2[j - 1] = tablica1[tablica1.Length - j]; 
} 
+0

Merci pour votre aide! Ça marche! Maintenant, je comprends mon erreur! :) – KlaudynaZ

0
static void Main(string[] args) 
{ 
    int[] tablica1 = new int[20]; 

    Random tab = new Random(); 

    for (int i = 0; i < 20; i++) 
    { 
     tablica1[i] = tab.Next(20); 
     Console.WriteLine("Tablica wylosowała nastepujace elementy:"); 
     Console.WriteLine(tablica1[i]); 
    } 

    Console.Read(); 

    int[] tablica2 = new int[20]; 

    for (int i = 20; i > 0; i--) 
    { 
     tablica2[i]=tablica1[20-i]; 
    } 

} 

}

0

@Sinatr Merci pour ce sujet. C'était vraiment utile mais il n'y a qu'une seule table. @Filip Milovanović Oui, je dois faire deux deux tables :) Après avoir réservé d'abord, je devrais mettre des éléments de la première à la seconde. J'ai changé cela pour, mais dans la console je suis toujours capable de voir seulement le premier. :(

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Randomy1 
{ 
    class Program 
{ 

    static void Main(string[] args) 
    { 
     int[] tablica1 = new int[20]; 

     Random tab = new Random(); 

     for (int i = 0; i < 20; i++) 
     { 
      tablica1[i] = tab.Next(20); 
      Console.WriteLine(tablica1[i]); 
     } 



     int[] tablica2 = new int[20]; 

     for (int j = tablica2.Length; j > 1 ; j--) 
     { 
      tablica2[j] = tablica1[20-j]; 
      Console.WriteLine(tablica2[j]); 
     } 

     Console.Read(); 
    } 
} 
} 
0

Je pense que cela fonctionnerait

for (int i = 0; i < 20; i++) 
{ 
    tablica2[i] = tablica1[20 - (i + 1)]; 

    Console.WriteLine("Tablica 1st :: " + tablica1[i] + " Tablica 1 Reverse "  + tablica1[20 - (i + 1)] + " Tablica 2 " + tablica2[i]); 
}