if-statement i en array (var: Arduino)
if-statement i en array (var: Arduino)
Hej alla elektonikfantaster!
Hur kan ett if statement vara skrivet för en array med följande vilkor: om två likadana siffror står i följd efter varandra, så ersätt sista av de likadana siffrorna med siffran x?
ex. en array med siffrorna 23456678 ersätts med 23456x78
Grundläggande hur ett if statement skrivs kan jag, men detta är svårare...
Mvh Tommy
Hur kan ett if statement vara skrivet för en array med följande vilkor: om två likadana siffror står i följd efter varandra, så ersätt sista av de likadana siffrorna med siffran x?
ex. en array med siffrorna 23456678 ersätts med 23456x78
Grundläggande hur ett if statement skrivs kan jag, men detta är svårare...
Mvh Tommy
Senast redigerad av MadModder 13 mars 2015, 15:25:50, redigerad totalt 1 gång.
Anledning: flyttat och ändrat rubrik
Anledning: flyttat och ändrat rubrik
Re: Arduino
Vad har det med Arduino att göra? Det är en helt vanligt programmeringsfråga.
Först och främst måste det göras en slinga som räknar igenom samtliga tecken - 1.
EDIT: Swech hittade felet jag (såklart medvetet
) lade in. Har ändrat koden för att inte virra bort mindre erfarna personer.
Först och främst måste det göras en slinga som räknar igenom samtliga tecken - 1.
Kod: Markera allt
for(Ctr = 0; Ctr < (strlen(Array) - 1); Ctr++)
{
if(Array[Ctr] == Array[Ctr+1]) Array[Ctr+1] = 'x';
}

Senast redigerad av Icecap 12 mars 2015, 14:32:22, redigerad totalt 2 gånger.
Re: Arduino
En relevant fråga är väl vad som ska hända om 3 eller flera siffror står i följd?
Till exempel 15552, ska det bli 15x52, 155x2, eller 15xx2?
Till exempel 15552, ska det bli 15x52, 155x2, eller 15xx2?
Re: Arduino
Swech: Näääää - inte då! 
Bearing: först blir "155" till "15x", nästa steg blir "15x5" och till slut "15x52".
TS har ju inte specificerat annat än att två på varandra lika ska ha set sista av dessa två bytt till "annat", i detta fall 'x'.

Bearing: först blir "155" till "15x", nästa steg blir "15x5" och till slut "15x52".
TS har ju inte specificerat annat än att två på varandra lika ska ha set sista av dessa två bytt till "annat", i detta fall 'x'.
Re: Arduino
Jag förstår vad din kod kommer göra. Vi får väl se vad trådskaparen svarar. Men han kanske kan fylla i luckorna själv nu när han har en kod att utgå ifrån.
Re: Arduino
Om nu TS vill ha den sistnämnda funktionen så funkar denna lilla snuttbearing skrev:En relevant fråga är väl vad som ska hända om 3 eller flera siffror står i följd?
Till exempel 15552, ska det bli 15x52, 155x2, eller 15xx2?
Kod: Markera allt
char str[]="00000123456677788888999999999000";
for(char*p=str+1;*p;p++)
{
char *pc;
for(pc=p;*pc && *pc==*(p-1);pc++)
*pc='x';
p=pc;
}
// str är nu: 0xxxx123456x7xx8xxxx9xxxxxxxx0xx
Re: Arduino
Tack för alla svar!
Ska prova detta i mitt projekt.
Om flera siffror står i följd så är tanken att det ska bli så här: ex 222222 blir 2x2x2x
Arrayens längd i mitt projekt är alltid 6 siffror.
Mvh Tommy
Ska prova detta i mitt projekt.
Om flera siffror står i följd så är tanken att det ska bli så här: ex 222222 blir 2x2x2x
Arrayens längd i mitt projekt är alltid 6 siffror.
Mvh Tommy
-
- Inlägg: 96
- Blev medlem: 2 februari 2011, 13:16:32
- Kontakt:
Re: Arduino
Pratar vi en sträng av siffror där en siffra ska ersättas med bokstaven 'x' - vilket alla verkar anta - eller en array av siffror där x i frågan motsvarar en annan siffra - vilket det faktiskt står?
I det senare fallet borde
funka även om x råkar vara samma siffra som den som byttes ut.
I det tidigare fallet:
...eller om man gillar kod-golf...
Alla kodsnuttarna är otestade, men jag rekommenderar inte den sista eftersom den bygger på odefinierat beteende.
I det senare fallet borde
Kod: Markera allt
for(int i = 1; i<7; i++)
{
if(array[i]==array[i-1])
{
array[i] = x;
i++;
}
}
I det tidigare fallet:
Kod: Markera allt
char *c = string;
while(++c)
{
if(*c == c[-1]) *c = 'x';
}
Kod: Markera allt
char *c = &string[1];
while(*c++=*c-c[-1]?*c:'x');
Re: if-statement i en array (var: Arduino)
Hej igen
Första kodexemplet var precis det jag sökte!
Tack alla för ert engagemang, och speciellt thomasloven.
Återkommer säkert med fler frågor, ha det bra!
Mvh Tommy
thomasloven skrev:Pratar vi en sträng av siffror där en siffra ska ersättas med bokstaven 'x' - vilket alla verkar anta - eller en array av siffror där x i frågan motsvarar en annan siffra - vilket det faktiskt står?
I det senare fallet bordefunka även om x råkar vara samma siffra som den som byttes ut.Kod: Markera allt
for(int i = 1; i<7; i++) { if(array[i]==array[i-1]) { array[i] = x; i++; } }
I det tidigare fallet:...eller om man gillar kod-golf...Kod: Markera allt
char *c = string; while(++c) { if(*c == c[-1]) *c = 'x'; }
Alla kodsnuttarna är otestade, men jag rekommenderar inte den sista eftersom den bygger på odefinierat beteende.Kod: Markera allt
char *c = &string[1]; while(*c++=*c-c[-1]?*c:'x');
Första kodexemplet var precis det jag sökte!
Tack alla för ert engagemang, och speciellt thomasloven.
Återkommer säkert med fler frågor, ha det bra!
Mvh Tommy