2 getallen samenvoegen

Status
Niet open voor verdere reacties.

BreVDD

Gebruiker
Lid geworden
9 apr 2009
Berichten
104
Hallo,

Ik bekom 2 Hexadecimaale getallen. Ik wil nu bijvoorbeeld: Getal1 ="2" en Getal2 = "A".

Ik wil die 2 (hexadecimale) getallen na elkaar zetten. (dus eigenlijk een reeks van getallen/letters ==> dan als geheel wordt beschoud)

Ik weet niet hoe ik dat het best kan doen via char of array. (ik heb op verschillende websites gelezen over char en array maar versta er nix van)

willlen jullie mss even uitleggen?

groetjes




Ok zou het willen gebruik in :

system ("color AL");
en eerst vraag ik naar A (achtergrondkleur) en daarna naar L (lettertypekleur). Dan zouden die getallen achterelkaar gezet moeten worden zonder dat het opgetelt moet worden. (het probeleem is dat er ook letter kunnen zijn.)
 
Laatst bewerkt:
OK....

Ik denk dat je iets wilt als getal1 << 8 && getal2

Beetje roestig hier wbt de exacte code maar je wilt het eerste getal 8 bits naar links schuiven (de <<) en dan getal2 er bij in tellen.

Misschien werkt ook getal1 * 1024 (2^8 dus 8 bits) + getal2

Succes!
 
Nog een keer je vraag gelezen.... eerst zorgen dat je de invoer naar een waarde vertaalt.
Als je één enkel karakter ontvangt kun je eenvoudig via een case de "letter" vertalen naar een waarde. Zie verder vorige post.
 
Code:
#include <stdlib.h>
#include <windows.h>
#include <Winbase.h> 
/* 
auteur: Brecht VDD
datum: donderdag 30/4/09

Programma: kleurentest
 */


#include <ctime>
#include <iostream>
#include <string>

using namespace std;

void main()
{
	string achtergrond;
	string lettertype;
	string controle;
	cout << "Typ 'Kleur' om het kleur te veranderen.";
	cin >> controle;
	if (controle == "Kleur" || controle == "kleur")
	{
		bool kleur;
		kleur = true;
		string controleKleur;
		while (kleur == true)
		{
			bool kleur_mooi;
			kleur_mooi = true;
			cout << "Typ achtergrond(of A) om het achtergrondkleur te veranderen;\nEn typ lettertype (of L) om het lettertypekleur te veranderen\n of typ exit (of E) om terug naar het hoofdmenu te gaan. \nIk wil ";
			cin >> controleKleur;
			if (controleKleur == "A" || controleKleur == "achtergrond" || controleKleur == "Achtergrond" || controleKleur == "a")
			{
				while (kleur_mooi == true)
				{
					cout << "U koos ervoor om het achtergrondkleur te veranderen.\nU hebt een keuze uit: \n[0] Zwart \t[1] Blauw\n[2] Groen\t[3] Groenblauw\n[4] Rood\t[5] Paars\n[6] Geel\t[7] Grijs\n[8] Donkergrijs\t[9] Pastelblauw\n[A] Limoengroen\t[b] Lichtblauw\n[C] Lichtrood\t[D] Lichtpaars\n[E] Lichtgeel\t[F] Wit\nMijn keuze is: ";
					cin >> achtergrond;
					if (achtergrond == lettertype)
					{
						cout << "\nHet achtergrondkleur is het zelfde als het lettertypekleur. Kies een ander kleur.";
						continue;
					}
					if (achtergrond != lettertype)
					{
						cout << "Dit is het resultaat!!!";
						system ("color achtergrond lettertype"); 
						Sleep(2000);
						string ok_mis;
						cout << "Typ 'ok' als het kleur goed is, typ 'mis' als je een ander kleur wilt veranderen: ";
						cin >> ok_mis;
						if (ok_mis == "ok" || ok_mis == "Ok" || ok_mis == "Ok")
						{
							cout << "Dit kleur wordt nu gebruikt.";
							kleur_mooi = false;
							Sleep(1000);
						}
						if (ok_mis == "Mis" || ok_mis == "mis")
						{
							cout << "Kies opnieuw.\n";
							Sleep(1000);
						}
						if (ok_mis != "ok" && ok_mis != "Ok" && ok_mis != "Ok" && ok_mis != "Mis" && ok_mis != "mis")
						{
							cout << "Kies een geldig antwoord!: ok/mis\n";
							continue;
						}
					}
				}
			}	
			if (controleKleur == "L" || controleKleur == "lettertypekleur" || controleKleur == "l" || controleKleur =="Lettertypekleur")
			{
				while (kleur_mooi == true)
				{
					cout << "U koos ervoor om het achtergrondkleur te veranderen.\nU hebt een keuze uit: \n[0] Zwart \t[1] Blauw\n[2] Groen\t[3] Groenblauw\n[4] Rood\t[5] Paars\n[6] Geel\t[7] Grijs\n[8] Donkergrijs\t[9] Pastelblauw\n[A] Limoengroen\t[b] Lichtblauw\n[C] Lichtrood\t[D] Lichtpaars\n[E] Lichtgeel\t[F] Wit\nMijn keuze is: ";
					cin >> lettertype;
					if (achtergrond == lettertype)
					{
						cout << "\nHet achtergrondkleur is het zelfde als het lettertypekleur. Kies een ander kleur.";
						continue;
					}
					if (achtergrond != lettertype)
					{
						cout << "Dit is het resultaat!!!";
						system ("color 0L"); 
						Sleep(2000);
						string ok_mis;
						cout << "Typ 'ok' als het kleur goed is, typ 'mis' als je een ander kleur wilt veranderen: ";
						cin >> ok_mis;
						if (ok_mis == "ok" || ok_mis == "Ok" || ok_mis == "Ok")
						{
							cout << "Dit kleur wordt nu gebruikt.";
							kleur_mooi = false;
							Sleep(1000);
						}
						if (ok_mis == "Mis" || ok_mis == "mis")
						{
							cout << "Kies opnieuw.\n";
							Sleep(1000);
						}
						if (ok_mis != "ok" && ok_mis != "Ok" && ok_mis != "Ok" && ok_mis != "Mis" && ok_mis != "mis")
						{
							cout << "Kies een geldig antwoord!: ok/mis\n";
							continue;
						}
					}
				}
				}
			if (controleKleur == "exit" || controleKleur == "E" || controleKleur == "Exit" || controleKleur == "e")
			{
				cout << "<== Terug naar hoofdmenu!!!";
				Sleep(2000);
				kleur = false;
			}
		}
	}
}

Dat is mijn code om de achtergronkleur te veranderen maar system("color (variable)(variable") blijkt niet te werken. Weet iemand he dat komt?
 
Code:
system ("color achtergrond lettertype");
Hiermee wordt "color achtergrond lettertype" uitgevoerd. "achtergrond" en "lettertype" worden niet vervangen door de waardes van die variabelen. Probeer het eens zo:
Code:
system ("color "+achtergrond+" "+lettertype);
 
Laatst bewerkt:
Als ik dat doe verschijnt de fout:
Code:
1>------ Build started: Project: Kleur, Configuration: Debug Win32 ------
1>Compiling...
1>Kleuren.cpp
1>c:\users\brecht\desktop\kleur\kleur\kleuren.cpp(50) : error C2664: 'system' : cannot convert parameter 1 from 'std::basic_string<_Elem,_Traits,_Ax>' to 'const char *'
1>        with
1>        [
1>            _Elem=char,
1>            _Traits=std::char_traits<char>,
1>            _Ax=std::allocator<char>
1>        ]
1>        No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
1>Build log was saved at "file://c:\Users\Brecht\Desktop\Kleur\Kleur\Debug\BuildLog.htm"
1>Kleur - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
 
Je zou altijd nog iets als onderstaande kunnen doen:

Code:
std::string cmd("color ##");
// vraag gebruiker om de waardes
cmd[6] = achtergrond; 
cmd[7] = lettertype;
system(cmd.c_str());

(de variabelen 'achtergrond' en 'lettertype' dienen dan wel van het type char te zijn ipv een string)
 
Ik vermoed dat je probleem ontstaat omdat er een spatie tussen system en ( staat..
Wat ook kan helpen is om de strings zelf naar een char-array te laten omzetten dmv c_str();
Code:
system(("color "+achtergrond+" "+lettertype).c_str());
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan