Autor
|
Tema: Necesito ayuda con un program en c# (Leído 2,166 veces)
|
Emily
Desconectado
Mensajes: 18
|
hola me preguntaba si alguien podría ayudarme con un programa en c# necesito ingresar 10 números en un vector y los números que se repiten los tengo que poner con 0 Tiene que imprimir esto: Suponga los valores de entrada del arreglo:
10 4 9 11 4 7 10 30 11 10
El resultado sería:
10 4 9 11 0 7 0 30 0 0
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.878
|
Hola. ¿Cual es la razón que te ha llevado a publicar una pregunta sobre C#, en el foro de Visual Basic 6? Bueno, una forma de hacer lo que pides en caso de que quieras preservar los elementos del array original sin modificar, sería desarrollar una función genérica para iterarlo de la siguiente manera: /// ---------------------------------------------------------------------------------------------------- /// <summary> /// Replaces the duplicated items in the source collection using the specified value. /// </summary> /// ---------------------------------------------------------------------------------------------------- /// <typeparam name="T"> /// The type of the items in te collection. /// </typeparam> /// /// <param name="collection"> /// The source collection. /// </param> /// /// <param name="value"> /// The value that will be used to replace duplicated items. /// </param> /// ---------------------------------------------------------------------------------------------------- /// <returns> /// The resulting <see cref="IEnumerable<T>"/>. /// </returns> /// ---------------------------------------------------------------------------------------------------- public static IEnumerable<T> ReplaceDuplicates<T>(T[] collection, T value) { HashSet <T > hset = new HashSet <T >(); foreach(T item in collection) { if (hset.Add(item)) { yield return item; } else { yield return value; } } }
Modo de empleo: int[] arr = { 10, 4, 9, 11, 4, 7, 10, 30, 11, 10 }; int[] newArr = ReplaceDuplicates<int>(arr, 0).ToArray(); Console.WriteLine(string.Join(", ", newArr));
Resultado de ejecución: 10, 4, 9, 11, 0, 7, 0, 30, 0, 0 Hay varias formas de hacerlo. También puedes utilizar un for para reemplazar los elementos del array original, o recurrir al elegante pero no muy eficiente LINQ. EDITO: Por ejemplo: int[] arr = { 10, 4, 9, 11, 4, 7, 10, 30, 11, 10 }; int[] newArr = arr.Select((a, b) => Array.IndexOf(arr, a) == b ? a : 0).ToArray(); Console.WriteLine(string.Join(", ", newArr));
¡Saludos!
|
|
« Última modificación: 19 Marzo 2017, 14:15 pm por Eleкtro »
|
En línea
|
|
|
|
okik
Desconectado
Mensajes: 462
|
using System; using System.Linq; ...
int[] MiArray = {10,4,9,11,4,7,10,30,11,10}; for (int Index = 0; Index <= MiArray.Length - 1; Index++) { //Cuenta el número que se repite un elemento del array var CountItems = (from ItemRep in MiArray where (ItemRep == MiArray[Index]) select ItemRep).ToList().Count; if (CountItems > 1) { MiArray[MiArray.ToList().LastIndexOf(MiArray[Index])] = 0; } }
Console.WriteLine(string.Join(", ", MiArray)); Console.ReadLine();
He rectificado el código anterior, ya me pareció extraño que resultara. En el caso de "10, 4, 4, 4, 4, 4, 4, ", no hubiera devuelto "10,4,0,0,0,0,0".
int[] MiArray = { 10, 4, 9, 11, 4, 7, 10, 30, 11, 10 }; foreach (var Item in MiArray) { for (int Index = MiArray.ToList().IndexOf(Item) + 1; Index <= MiArray.Length - 1; Index++) { if (MiArray[Index] == Item) { MiArray[Index] = 0; }; } } Console.WriteLine(String.Join(",", MiArray)); Console.ReadLine();
10, 4, 9, 11, 0, 7, 0, 30, 0, 0 Así también funcionaría: int[] MiArray = { 10, 4, 9, 11, 4, 7, 10, 4, 4, 4 }; for (int frtIndex = 0; frtIndex <= MiArray.Length - 1; frtIndex++) { for (int scdIndex = frtIndex + 1; scdIndex <= MiArray.Length - 1; scdIndex++) { if (MiArray[scdIndex] == MiArray[frtIndex]) { MiArray[scdIndex] = 0; }; } } Console.WriteLine(String.Join(",", MiArray)); Console.ReadLine();
10, 4, 9, 11, 0, 7, 0, 0, 0, 0
|
|
« Última modificación: 19 Marzo 2017, 14:07 pm por okik »
|
En línea
|
|
|
|
Emily
Desconectado
Mensajes: 18
|
Muchisimas Gracias Me a ayudado mucho
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
me pide program exe.
Software
|
saplin
|
0
|
1,453
|
23 Noviembre 2005, 09:45 am
por saplin
|
|
|
ayuda a desarollar program en visual basic.net
.NET (C#, VB.NET, ASP)
|
jugran28
|
1
|
2,496
|
14 Noviembre 2007, 17:57 pm
por gusman
|
|
|
Hola amigos Necesito su ayuda con este codigo necesito pasarlo de C++ A C# ayuda
Programación C/C++
|
ManicaHere
|
0
|
3,722
|
1 Diciembre 2016, 05:29 am
por ManicaHere
|
|
|
Nesecito ayuda,me da un error de tiempo el firefox ESP y varios program,en kali
GNU/Linux
|
Misterlink
|
1
|
2,875
|
8 Junio 2020, 11:43 am
por el-brujo
|
|
|
necesito eliminar carpeta KMSAutos en program data windows 10
Windows
|
soniska
|
3
|
4,817
|
11 Mayo 2021, 13:13 pm
por Songoku
|
|