Forum: hjälp med villkorssatser i c++

Forum huvudsida -> Programmering -> hjälp med villkorssatser i c++

Sidor: 1

Till botten

nerman 18:29 - 6:e Maj 2007 | Post #1
Medlem
Inlägg: 8


Skicka PM
jag håller på med ett program som inte funkar
min kompliator är dev-c++
programet ska vara att om man skriver in rätt lösen så får man ett medelande. Men det funkar inte
här är koderna
#include <cstdlib>
#include <iostream>

using namespace std;
using std::cout;
using std::cin;

int main()
{
cout << "password please";
cin >> ett_tal;

if (ett_tal == 4815162342)
{
cout << "password corect"
}
else
{
cout << password incorect
}
cin.get();
return 0;
}

det står att det är fel med cin >> ett_tal;
vet någon vad det är för fel




ozamosi 18:34 - 6:e Maj 2007 | Post #2
Administratör
Inlägg: 1129


Skicka PM
Du har inte deklarerat variabeln ett_tal. Du behöver skriva int ett_tal; (eller behövs kanske double?) på en ny rad ovanför.

-------------------------
Ljusblå



Tesuki 18:39 - 6:e Maj 2007 | Post #3
Medlem
Inlägg: 122


Skicka PM
snälla använd kodblock.
sedan verkar det som att du glömt lägga till raden:
long int ett_tal;
innan
cin >> ett_tal;
lägg till den först
men rekommenderat är att använda en sträng för sådant så slipper man oroa sig för att talet ska bli förstort för datatypen.

  1. const int maximumPasswordLength = 15;
  2. const char[] correctPassword = "4815162342";
  3.  
  4. char[maximumPasswordLength] inputPassword;
  5. cin >> inputPassword
  6.  
  7. if(strcmp(correctPassword, inputPassword) == 0) {
  8. cout << "password corect";
  9. } else {
  10. cout << password incorect
  11. }
  12.  
  13. cin.ignore(256 '\n');
  14. cin.get()





ozamosi 18:43 - 6:e Maj 2007 | Post #4
Administratör
Inlägg: 1129


Skicka PM
Du använder ju inte en sträng, utan en teckenlista. Med den behöver du ju ändå oroa dig...

-------------------------
Ljusblå



Tesuki 18:50 - 6:e Maj 2007 | Post #5
Medlem
Inlägg: 122


Skicka PM
tjat ozamosi

innan main()
  1. #include <string>


inuti main()
  1. const string correctPassword = "4815162342";
  2. string inputPassword;
  3. cin >> inputPassword;
  4. if(correctPassword.compare(inputPassword) == 0) {
  5. cout << "password corect";
  6. } else {
  7. cout << "password incorect";
  8. }
  9. cin.ignore(256 '\n');
  10. cin.get();


sådär nu har du en sträng C++ style


Senast redigerad 19:56 - 6:e Maj 2007


FunkyChicken 19:42 - 6:e Maj 2007 | Post #6
Nyhetsredaktör
Inlägg: 800


Skicka PM
Inte för att va petig, bara så det inte blir några missförstånd om man inte kan språket så bra: I tesukis första förslag saknas några ; och ".




Nissebosselasse 21:45 - 6:e Maj 2007 | Post #7
Medlem
Inlägg: 490


Skicka PM
nerman:
fundera lite över de här tre raderna också:

using namespace std;
using std::cout;
using std::cin;

,,r du helt på det klara med vad using-direktivet är till för?
Här finns mer att läsa om namnrymder och using:
http://www.parashift.com/c++-faq-lite/coding-standards.html#faq-27.5


tesuki:

if (correctPassword.compare(inputPassword) == 0)

Sitter du mycket i Java?Smiley Jag tycker det är lättare att läsa följande kod:

if (correctPassword == inputPassword)




-------------------------
http://pushingcows.se
Gula Nallen



Tesuki 22:50 - 6:e Maj 2007 | Post #8
Medlem
Inlägg: 122


Skicka PM
jo jag jobbar huvudsakligen med java. fast gillar använda str.compare() för att det fungerar bra för mig och == går inte jämföra mellan char och string, så använder den för att det inte ska bli fel. men jovisst fungerar fin fint att använda ==.
sedan så tror jag att man i det första exeplet måste inkludera cstring
så skriv innan main:
#include <cstring>
för annars tror jag att strcmp() kommer generera fel.




Nissebosselasse 16:22 - 7:e Maj 2007 | Post #9
Medlem
Inlägg: 490


Skicka PM
    Citat av Tesuki:
jo jag jobbar huvudsakligen med java. fast gillar använda str.compare() för att det fungerar bra för mig och == går inte jämföra mellan char och string, så använder den för att det inte ska bli fel.



#include <iostream>
#include <string>

int main (int argc, char *argv[])
{
    std::string str;

    std::cin >> str;

    if (str[0] == 'q')
        std::cout << "Ett q." << std::endl;

    return 0;
}

Jämför mot första tecknet i strängen, eller vad det inte så du menade? Nej du kan inte skriva if (str == 'q'), men å andra sidan hade du inte heller använt den jämförelsen med en char [].
Mig veterligen så är operator== egentligen bara ett anrop till compare, så du behöver ju inte vara orolig för att den ene är sämre än den andre...Smiley

-------------------------
http://pushingcows.se
Gula Nallen



Sidor: 1

Forum huvudsida -> Programmering -> hjälp med villkorssatser i c++
Atom feed

Du får inte posta i den här tråden | Till toppen