Si te entendí bien:
Gracias. <3
Aunque ya puestos, en consola xDDDD (es coña, asi me lo miro y lo paso, luego cuando me ponga digo algo más.)
Al final lo he hecho de otra forma, por que de la tuya hay unas cosas que no me quedaban 100% claro, y como es para un exámen, he preferido estudiarmelo (me ha servidor mucho), mira como lo he hecho al final:
http://mv.pastebin.com/m37a589b5
Ahora lo edito, y lo meto todo en una función, que me lo pide el ejercicio.
Estuve mirando los apuntes, y lo de "Espacio = true" era un poco recursivo, por que puedo jugar con los sub elementos (o eso pone en mi apuntes), es decir, si pongo Elemento[i-1] me voy al anterior
MUCHAS GRACIAS.
Me parece que puedes ahorrarte muchas condiciones al estilo de 'i == 0' si en vez de eso pones '!i' que no hace mas que insertar un 1 en caso de que el valor de la variable sea 0, o un 0 en caso de que la variable sea igual o mayor que 1. No es mas que la inversa binaria.
Ademas he visto que podrias evitar el if vacio.
if (i == 0)
{
CadenaNueva = CadenaNueva+ ArrayCadena[0];
}
Eso es una ñapa de última hora por que me daba un error de índices.
Si te fijas, para ver el carácter anterior uso:
ArrayCadena[i-1], entonces cuando i es igual que 0, me da error.
El resto de iniciación y eso, es por que C# te pide que inicies todo. (no se si te refieres a eso o te parece absurdo por que no estes acostumbrado a C#).
Gracias de todos modos, toda mejora es bien recibida, aunque bueno, lo que intento es asimilar el código y el funcionamiento para el examen (tampoco creo que sea muy dificil y voy sobrado o eso creo xDDDD, soy de ASI.)
Aunque no tenga ninguna importancia me referia al:
if ((ArrayCadena.CompareTo('\0') == 32) && (ArrayCadena.CompareTo('\0') == 32))
{
}
Y apesar de no ser de C# me da la impresion que con dos != habria suficiente, eso es todo.
Por cierto, donde estudias?
ajá, ¿y tu que propones?
No lo veo del todo claro que quieres decirme (estoy ya embotao de Visual studio y solo he hecho dos porquerias xDDD, que asco programar.)
Cuando usas el '==' es para ver si dos variables (o lo que sean) son iguales, con '!=' haces justamente lo contrario, que es justo lo que a ti te interesa, no es asi?
ZAS, Palo de remo. (¿es así no?)
PD. Lo edito y ahora me sale todo sin espacios alguno, xDDDDDDDDDDDDDDDDDDDDDDD
Da igual, mañana lo veré, que estoy ya rayadisimo con esto.
Golpe de remo es xD
Ed. Ya se donde esta el problema pero mejor te lo dejo a ti. Si no puedes resolverlo puedes preguntarme.
Tengo el culo como el cacas y la cabeza que ni os cuento...
¿Me podeis decir si esto existe?
A ver, me pide el ejercicio:
Crear un array int de 10 elementos (de 0 a 9), y una variable int llamada desplazamiento.
La cosa consiste en hacer una rueda, es decir:
0|1|2|3|4|5|6|7|8|9
Que si desplazo dos, quede así:
8|9|0|1|2|3|4|5|6|7
¿Existe algo que le diga yo a las arrays "tal" desplaza todo los indices en 2 y que cuando llegue a 9 empiece de nuevo?
La verdad, se supone que es muy simple, pero yo no tenía nada en mis apuntes, ni nadie de clase, y ha todos nos han hecho el cacas... en ese ejercicio.
desplazamiento = desplazamiento % array.length;
desplazamiento = array.length - desplazamiento;
array = array[ (i + desplazamiento) % array.length ];
Porque en un ejercicio de auto aprendizaje no lo intentáis con las Regular Expressions?
http://msdn2.microsoft.com/en-us/library/2k3te2cs(VS.80).aspx
http://www.csharphelp.com/archives/archive21.html
http://www.c-sharpcorner.com/UploadFile/prasad_1/RegExpPSD12062005021717AM/RegExpPSD.aspx
Como digo, hazedlo como un ejercicio de autoaprendizaje, por ejemplo cuando acabes lo q tienes q entregar.
Es facil, date cuenta de que tienes 10 indices (del 0 al 9), si al primero le sumas 2 obtendras la siguiente posicion (0+2=2). El problema se complica un poco cuando llegas al indice 8 ya que 8+2=10 y no existe tal indice (dado que 9 es el maximo indice posible). Entonces lo unico que tienes que hacer es comprobar si la suma es mayor que 9 y si es asi restarle 10 (porque el array contiene 10 elementos) con lo cual en el anterior ejemplo obtemos 0, que no es ni mas ni menos que la siguiente posicion perteneciente al indice 8.
Tambien puede que te resulte complicado guardar la informacion de un indice para poder usarla posteriormente pero seguro que puedes resolverlo tu mismo, no entraña mucha dificultad.
/me cry
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication13
{
class Program
{
static void Main(string[] args)
{
int[] arrDig1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int desplazamiento = 1;
for (int i = 0; i <= 9; i++)
{
if((arrDig1[i] + desplazamiento) > 9) {
arrDig1[(i+desplazamiento)-10] = arrDig1[i];
}else{
arrDig1[i] = i;
}
}
for (int i = 0; i <= 9; i++)
{
Console.WriteLine(arrDig1[i]);
}
Console.ReadLine();
}
}
}
http://mv.pastebin.com/m9c265fc
Joder, tan palo soy?
Sigo sin pillarlo xDDDDDD
Llevo ya dos dias para la mierda esta y no lo entiendo.
}else{
arrDig1 = i;
}
Esa expresion no sirve ya que si el indice es 2 le asigna 2 y asi no resuelves nada. Pero vas por buen camino, solo es un fallo tonto.
}else{
arrDig1[i+desplazamiento] = i;
}
Otra cosa que tienes que tener en cuenta es que si a un indice le asignas un numero despues no podras saber que numero tenia ese indice antes de que le cambiaras el valor. Piensa tu mismo en como solucionar eso.
Claro, crear otro array, muchas gracias.
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication13
{
class Program
{
static void Main(string[] args)
{
int[] arrDig1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int[] arrDig2 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int desplazamiento = 2;
//Como máximo hasta 10 de desplazamiento.
for (int i = 0; i <= 9; i++)
{
if ((arrDig1[i] + desplazamiento) > 9)
{
arrDig2[(i+desplazamiento) - 10] = arrDig1[i];
}
else
{
arrDig2[i+desplazamiento] = arrDig1[i];
}
}
for (int i = 0; i <= 9; i++)
{
Console.WriteLine(arrDig2[i]);
}
Console.ReadLine();
}
}
}
http://mv.pastebin.com/m5842de38
El problema es que cuando desplazamiento es mayor que 10, da error, pero casi que me doy por satisfecho con esto.
es mas facil usando la operacion modulo:
int main()
{
const int kTam = 10;
int a[kTam] = {0,1,2,3,4,5,6,7,8,9};
int b[kTam];
int desplazamiento = 2;
int i;
desplazamiento = kTam - (desplazamiento % kTam);
for(i=0; i<kTam; i++)
b = a[( i + desplazamiento) % kTam];
for(i=0; i<kTam; i++)
printf("%i ", b);
}
Pues si, con el resto es mas facil y se soluciona el problema de que el desplazamiento no pueda ser mayor que 10, pero me parece que tienes el codigo mal. La variable desplazamiento no la tendrias que modificar sino solamente dejarla en 2, 3 o el numero del que se trate.
El codigo es correcto, puedes probarlo y ver como funciona.
El desplazamiento es modificado precisamente para que funcione correctamente.
Simplemente sustituyo un desplazamiento de 2 hacia la izquierda por uno de 8 hacia la derecha, que es lo mismo ya que el vector mide 10.
Si no hiciera esto al hacer el modulo 10 de un numero menor que cero el resultado no seria correcto, y por tanto el programa no funcionaria correctamente.
int main()
{
const int kTam = 10;
int a[kTam] = {0,1,2,3,4,5,6,7,8,9};
int b[kTam];
int desplazamiento = 2;
int i;
if (desplazamiento<0)
desplazamiento = kTam - (desplazamiento % kTam);
for(i=0; i<kTam; i++)
b[(i + desplazamiento) % kTam] = a;
for(i=0; i<kTam; i++)
printf("%i ", b);
}
Asi si, porque de lo contrario si el desplazamiento fuese positivo el resultado no seria el esperado.