* Funktionen randNummer() anropas aldrig från main().
* Arrayen med int:ar, randNummer[100] definieras lokalt i funktionen randNummer(), så den kan inte användas utanför den funktionen.
* return lämnar funktionen direkt, lägger du return i en loop så som du har gjort itererar den enbart en gång och lämnar funktionen därefter.
Snouser wrote:
Hur ska ja göra för att den ska skriva 16 siffror på raken någonstans i main?
Ja läser fortfarande Programmering A, så förklara gärna.
Du verkar ha blandat ihop vad de olika delarna av programmet skall göra.. Just nu så generar randNummer() 16 slumptal, och den anropas 16 gånger från main (Om mitt antagande att cout << randNummer[h]; egentligen borde vara cout << randNummer(); är korrekt). Om du istället gör att randNummer returnerar ett slumptal och anropar det 16 gånger från main bör du få det resultat du vill ha.
Dessutom, det bör vara bättre att endast köra srand((unsigned)time(0)) en gång från main, så inte slumptalsgeneratorn genererar samma siffror varje gång du vill generera ett slumptal.
Last edited by derfian on 2006-12-11 1:19:43, edited 1 time in total.
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int randNummer();
int main()
{
for(int f = 0; f < 16; f++)
{
cout << randNummer();
}
cin.ignore(10,'\n');
cin.get();
}
int randNummer()
{
return (rand()%10)+1;
}
Nu till nästa problem.
Hur gör jag för att lagra den totala genererade siffrorna i en char?
Jag har nämligen en funktion som använder char.
Så om den te.x innehåller siffrona (i delar) 1234567899876543 vill ja att den ska spara de i en char som heter passkey.
En arrays index börjar på noll och slutar på storlek-1 så en array med 16 platser har index 0-15. Så det är relativt lämpligt att använda for loopens variabel som index i det här fallet.
Trappski wrote:fört och främst behöver du en array att lagra alla tecken i...
char array[storlek];
sedan räcker det med att du modifierar din for loop lite.
En arrays index börjar på noll och slutar på storlek-1 så en array med 16 platser har index 0-15. Så det är relativt lämpligt att använda for loopens variabel som index i det här fallet.
Nu har jag kommit så långt så att fel dyker upp som ja inte kan lösa själv.
Någon som kan svara på varför jag får felet jag får och hur ja kan åtgärda de.
Ja skickar med hela programet så att ni kan se de i helhet.
När man startar programet så kommer man till en meny, i detta fallet väljer man (1) kryptering. Den frågar sedan efter ordet man vill kryptera. När den har gjort de så kräver den att man skriver i en passkey. Det är här felet är. Den genererar då fram en slumpmässig 16 siffrig passkey och frågar om man vill använda den eller om man vill skapa en egen. Väljer man att skapa använda den genererade så är de men ingen att den autogenererade passkeyn ska lägga sig i char veriabeln passkey. Om man istället svarar nej och väljer att skapa sin egen så ska den lägga den inmatade passkeyn i veriabeln passkey.
De som inte funkar just nu är att den inte lägger den själv genererade passkeyn i veriablen passkey, utan de blir (om de änns funkar) bara en massa tecken (hus, hjärtan, glada gubbar). Ja vill att den te.x ska spara (i detta fall) rand[0] (int veriabel) i char veriabeln passkey. Eftersom den ligger i en loop så vill ja sedan att den ska lägga till rand[1] så att char veriabeln passkey ytteligare får ett tecken.
Om nu min funktion genererar fram talet 7 och lägger den i rand[0], då vill ja att den ska skicka över den till char variabeln passkey. Efter de kanske den genererar den fram talet 3, den ska då lägga till de i veriabeln passkey. Passkey veriabeln innehåller nu 2 tecken, 7 och 3 och (73). Den ska upprepa denna procedur 16 ggr.
Ja hoppas att ni fattar vad ja menar. Om ni testar att kompilerar programet så kanske ni kan lista ut vad felet är. Jag har själv kört fast.
int main()
{
// Visa meny
// Användaren vill kryptera
// Fråga efter meddelande
// Generera passkey
// Fråga om passkey godtages av användare
// Användaren vill dekryptera
// Användaren vill kika på algoritmen
// Användaren vill avsluta
}
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std;
int randomPasskey(); //Slump "generatorn" funktionen (se längst ner)
int main ()
{
char med;
char passkey[32] = ""; //Nolställer passkey
int rand[1000];
cout << "Meddelande(avsluta med #): " << endl; //Ställer en fråga
cin >> med; //Matar min okrypterade meddelande
cout << "Vi rekomenderar följande: " << endl; //Skriver ut ett meddelande
for(int index=0; index<16; index++) //Loopar 16ggr, slump passkey
{
rand[index] = randomPasskey(); //Infogar random funktionen
cout << rand[index]; //Skriver ut en slump passkey
}
cout << "Vill du använda denna passkey?" << endl;
char val1;
cin >> val1;//Matar in j (ja) eller n (nej)
if (val1 == 'j') //Om användaren svarar j (ja)
{
for (int q = 0; q < 16; q++) //loopar 16 ggr
{
passkey[] += rand[q]; //Lägger ett slump tal 16 ggr i char veriabeln passkey
}
}
else //Om användaren svarar n (nej)
{
cout << "Skriv in din passkey (16 tecken)" << endl;
cin >> passkey; //Användaren matar i stället in sin egen passkey
}
cout << passkey; //Skriver ut passkeyn som är angiven
}
cin.ignore(10,'\n'); //Vet ej vad denna används till, men de funkar inte utan den
cin.get(); //Vet ej vad denna används till, men de funkar inte utan den
return 0;
}
//Funktioner\\
//Slump funktion, genererar passkey
int randomPasskey()
{
{
return (rand()%10)+1; //Retunerar ETT slump tal
}
}
//Slut