Woord samenvoegen met verschillende characters

Arduino specifieke Software
Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Woord samenvoegen met verschillende characters

Berichtdoor PA9CW » 25 Mrt 2019, 23:02

Ik heb het volgende probleem. Ik maak een random call bestaande uit 3 tot 6 characters. Dus A0A t/m ZZ9ZZZ. Dat doe ik met een random programma. Daar komen dan de random Characters uit. Nou zou ik graag die willen samenvoegen in één woord.

Dus randomCall = ( Charac1, Charac2, numberNumber, Charac3 ). Zodat je dus nog maar één woord hebt. Dat is makkelijker met programmeren. Ik hoop dat iemand weet hoe dat kan.

stringMorseCode[1] = Charac1;
stringMorseCode[2] = Charac2;
stringMorseCode[3] = numberNumber;
stringMorseCode[4] = Charac3;
stringMorseCode[5] = Charac4;
stringMorseCode[6] = Charac5;

dit zou worden randomCall = Charac1 Charac2 numberNumber Charac3 Charac4 Charac5. Dus bv. AA1BBB

Ben benieuwd.

Advertisement

Gebruikers-avatar
Berichten: 2655
Geregistreerd: 06 Aug 2016, 01:03

Re: Woord samenvoegen met verschillende characters

Berichtdoor Koepel » 25 Mrt 2019, 23:34

Als ik eerst met random zou bepalen hoeveel tekens voor en na het cijfer komen, dan is het niet evenredig verdeeld.
Om het willekeurig en evenredig over alle mogelijkheden te verdelen ben ik aan de slag gegaan met het 26-tallige stelsel.

Dit is typisch een voorbeeld waarvan ik achteraf denk: "dat had ik niet moeten doen".
Volgens mij zit er een fout in. Bij decimalen kan een '0' die ergens voor komt, weggelaten worden. Maar dat is anders bij een 'A'.
Ik geef het hier alleen als grap. Een niet al te beste grap, al zeg ik het zelf :?
Volgens mij heb ik ook nog je vraag verkeerd begrepen :o

cpp code
// 
// Dit is met wiskunde, met het 26-tallige stelsel.
// Stel A = 0
// dan Z = 25
// daarna komt AA = 26
// AB = 27
// ZZ = 25 * 25
// ZZZ = 25 * 25 * 25


void setup()
{
Serial.begin( 9600);

// Use the noise from the analog inputs,
// to create a different random sequence each
// time the Arduino is started.
// The randomSeed() function takes a 32 bit unsigned long parameter.
// By shifting each value from analogRead() some to the left,
// the analog values are spread over the 32-bits,
// for (in theory) a little more random.
unsigned long noise = 0;
for( int i = A0; i <= A5; i++)
{
noise += analogRead( i);
noise <<= 3; // for a little more random
}
randomSeed( noise);
}


void loop()
{
// De upperbound van de random is not inclusive.
int ervoor = int( random( 0, (25L * 25L) + 1L));
int getal = int( random( 0, 10)); // 0 ... 9
int erna = int( random( 0, (25L * 25L * 25L) + 1L));

char buffer[16];
buffer[0] = '\0';
char append[2];
append[1] = '\0';

if( ervoor > 25)
{
append[0] = (ervoor / 25) + 'A';
strcat( buffer, append);
}
append[0] = (ervoor % 25) + 'A';
strcat( buffer, append);
append[0] = getal + '0';
strcat( buffer, append);
if( erna > (25 * 25))
{
append[0] = (erna / (25 * 25)) + 'A';
strcat( buffer, append);
}
if( erna > 25)
{
append[0] = ((erna / 25) % 25) + 'A';
strcat( buffer, append);
}
append[0] = (erna % 25) + 'A';
strcat( buffer, append);

Serial.println( buffer);
}


Kun jij een sketch schrijven die controleert of het correct is ? Dan kun je ze een dag laten draaien.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Woord samenvoegen met verschillende characters

Berichtdoor shooter » 26 Mrt 2019, 00:03

het kan ook simpel met concatenate concat()
je maakt dan van een aantal characters een string.
wel opletten met de cijfers natuurlijk dus naar het type.
let op de eerste want de spatie staat daar soms zolas bij dus de eerste reeks is van A tot Z en dan AB,AC enz.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Re: Woord samenvoegen met verschillende characters

Berichtdoor PA9CW » 26 Mrt 2019, 14:20

Beide bedankt voor de antwoorden.
Ik zal mijn code, die ik tot nu toe gemaakt heb hier plaatsen.

Ik denk dat Koepel een wat makkelijker manier heeft gegeven om een random call te generen. Daar zal ik vanavond even naar kijken.
En de oplossing van Shooter past beter bij mijn al bestaande code, denk ik. Daar ga ik eerst even naar kijken.

Nogmaals bedankt en wordt vervolgd.

Hier mijn code tot nu toe.

Code: Alles selecteren
void random_call() {
  prefixNumber = random (1, 3);       // 1 of 2 characters in prefix
  numberNumber = random (0, 9);       // 0 tot 9 number
  suffixNumber = random (1, 4);       // 1, 2 of 3 characters in suffix
  Char1 = random (1, 27);
  Char2 = random (1, 27);
  Char3 = random (1, 27);
  Char4 = random (1, 27);
  Char5 = random (1, 27);

  switch (Char1) {
    case 1:
      Charac1 = "A";
      break;
    case 2:
      Charac1 = "B";
      break;
    case 3:
      Charac1 = "C";
      break;
    case 4:
      Charac1 = "D";
      break;
    case 5:
      Charac1 = "E";
    case 6:
      Charac1 = "F";
      break;
    case 7:
      Charac1 = "G";
      break;
    case 8:
      Charac1 = "H";
      break;
    case 9:
      Charac1 = "I";
      break;
    case 10:
      Charac1 = "J";
      break;
    case 11:
      Charac1 = "K";
      break;
    case 12:
      Charac1 = "L";
      break;
    case 13:
      Charac1 = "M";
      break;
    case 14:
      Charac1 = "N";
      break;
    case 15:
      Charac1 = "O";
      break;
    case 16:
      Charac1 = "P";
      break;
    case 17:
      Charac1 = "Q";
      break;
    case 18:
      Charac1 = "R";
      break;
    case 19:
      Charac1 = "S";
      break;
    case 20:
      Charac1 = "T";
      break;
    case 21:
      Charac1 = "U";
      break;
    case 22:
      Charac1 = "V";
      break;
    case 23:
      Charac1 = "W";
      break;
    case 24:
      Charac1 = "X";
      break;
    case 25:
      Charac1 = "Y";
      break;
    case 26:
      Charac1 = "Z";
      break;
  }

  switch (Char2) {
    case 1:
      Charac2 = "A";
      break;
    case 2:
      Charac2 = "B";
      break;
    case 3:
      Charac2 = "C";
      break;
    case 4:
      Charac2 = "D";
      break;
    case 5:
      Charac2 = "E";
    case 6:
      Charac2 = "F";
      break;
    case 7:
      Charac2 = "G";
      break;
    case 8:
      Charac2 = "H";
      break;
    case 9:
      Charac2 = "I";
      break;
    case 10:
      Charac2 = "J";
      break;
    case 11:
      Charac2 = "K";
      break;
    case 12:
      Charac2 = "L";
      break;
    case 13:
      Charac2 = "M";
      break;
    case 14:
      Charac2 = "N";
      break;
    case 15:
      Charac2 = "O";
      break;
    case 16:
      Charac2 = "P";
      break;
    case 17:
      Charac2 = "Q";
      break;
    case 18:
      Charac2 = "R";
      break;
    case 19:
      Charac2 = "S";
      break;
    case 20:
      Charac2 = "T";
      break;
    case 21:
      Charac2 = "U";
      break;
    case 22:
      Charac2 = "V";
      break;
    case 23:
      Charac2 = "W";
      break;
    case 24:
      Charac2 = "X";
      break;
    case 25:
      Charac2 = "Y";
      break;
    case 26:
      Charac2 = "Z";
      break;
  }

  switch (Char3) {
    case 1:
      Charac3 = "A";
      break;
    case 2:
      Charac3 = "B";
      break;
    case 3:
      Charac3 = "C";
      break;
    case 4:
      Charac3 = "D";
      break;
    case 5:
      Charac3 = "E";
    case 6:
      Charac3 = "F";
      break;
    case 7:
      Charac3 = "G";
      break;
    case 8:
      Charac3 = "H";
      break;
    case 9:
      Charac3 = "I";
      break;
    case 10:
      Charac3 = "J";
      break;
    case 11:
      Charac3 = "K";
      break;
    case 12:
      Charac3 = "L";
      break;
    case 13:
      Charac3 = "M";
      break;
    case 14:
      Charac3 = "N";
      break;
    case 15:
      Charac3 = "O";
      break;
    case 16:
      Charac3 = "P";
      break;
    case 17:
      Charac3 = "Q";
      break;
    case 18:
      Charac3 = "R";
      break;
    case 19:
      Charac3 = "S";
      break;
    case 20:
      Charac3 = "T";
      break;
    case 21:
      Charac3 = "U";
      break;
    case 22:
      Charac3 = "V";
      break;
    case 23:
      Charac3 = "W";
      break;
    case 24:
      Charac3 = "X";
      break;
    case 25:
      Charac3 = "Y";
      break;
    case 26:
      Charac3 = "Z";
      break;
  }

  switch (Char4) {
    case 1:
      Charac4 = "A";
      break;
    case 2:
      Charac4 = "B";
      break;
    case 3:
      Charac4 = "C";
      break;
    case 4:
      Charac4 = "D";
      break;
    case 5:
      Charac4 = "E";
    case 6:
      Charac4 = "F";
      break;
    case 7:
      Charac4 = "G";
      break;
    case 8:
      Charac4 = "H";
      break;
    case 9:
      Charac4 = "I";
      break;
    case 10:
      Charac4 = "J";
      break;
    case 11:
      Charac4 = "K";
      break;
    case 12:
      Charac4 = "L";
      break;
    case 13:
      Charac4 = "M";
      break;
    case 14:
      Charac4 = "N";
      break;
    case 15:
      Charac4 = "O";
      break;
    case 16:
      Charac4 = "P";
      break;
    case 17:
      Charac4 = "Q";
      break;
    case 18:
      Charac4 = "R";
      break;
    case 19:
      Charac4 = "S";
      break;
    case 20:
      Charac4 = "T";
      break;
    case 21:
      Charac4 = "U";
      break;
    case 22:
      Charac4 = "V";
      break;
    case 23:
      Charac4 = "W";
      break;
    case 24:
      Charac4 = "X";
      break;
    case 25:
      Charac4 = "Y";
      break;
    case 26:
      Charac4 = "Z";
      break;
  }

  switch (Char5) {
    case 1:
      Charac5 = "A";
      break;
    case 2:
      Charac5 = "B";
      break;
    case 3:
      Charac5 = "C";
      break;
    case 4:
      Charac5 = "D";
      break;
    case 5:
      Charac5 = "E";
    case 6:
      Charac5 = "F";
      break;
    case 7:
      Charac5 = "G";
      break;
    case 8:
      Charac5 = "H";
      break;
    case 9:
      Charac5 = "I";
      break;
    case 10:
      Charac5 = "J";
      break;
    case 11:
      Charac5 = "K";
      break;
    case 12:
      Charac5 = "L";
      break;
    case 13:
      Charac5 = "M";
      break;
    case 14:
      Charac5 = "N";
      break;
    case 15:
      Charac5 = "O";
      break;
    case 16:
      Charac5 = "P";
      break;
    case 17:
      Charac5 = "Q";
      break;
    case 18:
      Charac5 = "R";
      break;
    case 19:
      Charac5 = "S";
      break;
    case 20:
      Charac5 = "T";
      break;
    case 21:
      Charac5 = "U";
      break;
    case 22:
      Charac5 = "V";
      break;
    case 23:
      Charac5 = "W";
      break;
    case 24:
      Charac5 = "X";
      break;
    case 25:
      Charac5 = "Y";
      break;
    case 26:
      Charac5 = "Z";
      break;
  }

  if ( prefixNumber == 1 & suffixNumber == 1 ) {
    stringMorseCode[1] = Charac1;
    stringMorseCode[2] = numberNumber;
    stringMorseCode[3] = Charac2;
  }
  if ( prefixNumber == 1 & suffixNumber == 2 ) {
    stringMorseCode[1] = Charac1;
    stringMorseCode[2] = numberNumber;
    stringMorseCode[3] = Charac2;
    stringMorseCode[4] = Charac3;
  }
  if ( prefixNumber == 1 & suffixNumber == 3 ) {
    stringMorseCode[1] = Charac1;
    stringMorseCode[2] = numberNumber;
    stringMorseCode[3] = Charac2;
    stringMorseCode[4] = Charac3;
    stringMorseCode[5] = Charac4;
  }
  if ( prefixNumber == 2 & suffixNumber == 1 ) {
    stringMorseCode[1] = Charac1;
    stringMorseCode[2] = Charac2;
    stringMorseCode[3] = numberNumber;
    stringMorseCode[4] = Charac3;
  }
  if ( prefixNumber == 2 & suffixNumber == 2 ) {
    stringMorseCode[1] = Charac1;
    stringMorseCode[2] = Charac2;
    stringMorseCode[3] = numberNumber;
    stringMorseCode[4] = Charac3;
    stringMorseCode[5] = Charac4;
  }
  if ( prefixNumber == 2 & suffixNumber == 3 ) {
    stringMorseCode[1] = Charac1;
    stringMorseCode[2] = Charac2;
    stringMorseCode[3] = numberNumber;
    stringMorseCode[4] = Charac3;
    stringMorseCode[5] = Charac4;
    stringMorseCode[6] = Charac5;
  }
}

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Woord samenvoegen met verschillende characters

Berichtdoor shooter » 26 Mrt 2019, 19:43

al die cases kunnen weg hoor.
kijk nmaar eens hoe char werkt.
als je dan de random getallen aanpast bijvoorbeeld A=65.
dus dan wordt het iets in de trant van regel=char(random(65,90)+char(random....... enzovoort.
de getallen hebben ook een ascii code.van 48,57
dan heb je dus in 1 regel je hele verhaal.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Re: Woord samenvoegen met verschillende characters

Berichtdoor PA9CW » 26 Mrt 2019, 22:03

shooter schreef:al die cases kunnen weg hoor.
kijk nmaar eens hoe char werkt.
als je dan de random getallen aanpast bijvoorbeeld A=65.
dus dan wordt het iets in de trant van regel=char(random(65,90)+char(random....... enzovoort.
de getallen hebben ook een ascii code.van 48,57
dan heb je dus in 1 regel je hele verhaal.


Bedankt voor de tip. Ik had al een vermoede dat mijn manier erg omslachtig was/is om een random_call te generen.
Ik ga ermee aan de slag.

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Woord samenvoegen met verschillende characters

Berichtdoor shooter » 26 Mrt 2019, 22:40

ben je op de radiovlooienmarkt geweest?
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Re: Woord samenvoegen met verschillende characters

Berichtdoor PA9CW » 26 Mrt 2019, 23:49

shooter schreef:ben je op de radiovlooienmarkt geweest?

Ja, in Rosmalen bedoel je?

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Woord samenvoegen met verschillende characters

Berichtdoor shooter » 27 Mrt 2019, 15:57

ja die bedoel ik. Ik stond met een stand in de hoek met nano ed
en je bent lekker bezig, als beginner, maar je komt er best wel.
ik woon in s hertogenbosch
aanstaande zaterdag ben ik in de bieb van vught voor vught digitaal.
paul deelen
shooter@home.nl

Gebruikers-avatar
Berichten: 35
Geregistreerd: 13 Okt 2016, 21:17

Re: Woord samenvoegen met verschillende characters

Berichtdoor PA9CW » 28 Mrt 2019, 21:46

Ik ben ermee bezig. Bedankt voor de tips. Mocht ik wat meer tijd hebben, dan ga ik er weer mee verder. Ik laat weten hoe het ermee staat.

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: erasadowu en 14 gasten