Wczytywanie liczb z ciągu znaków

0

Dzień Dobry mam za zadanie napisać program który po wpisaniu słowa Enqueue i cyfy x ,wprowadzi tę cyfrę X do kolejki.I właśnie w tym tkwi mój problem ponieważ o ile mozna sprawdzić czy uzytkownik podał słowo Enqueue to nie jest problemem ale jak sprawdzić czy po tym słowie podał cyfrę i jak tę cyfrę umieścić w kolejce ? oto mój teraźniejszy kod:

Enqueue x - komenda nakazująca umieszczenie liczby całkowitej x w kolejce

string str;
cin>>str;
if(str=="Enqueue")
cin>>wlozyc;
enqueue(wlozyc);
0
string str;
cin>>str;
if(str=="Enqueue")
if(cin>>wlozyc)
    enqueue(wlozyc);

Możesz też pobawić się w regexy jak chcesz większe rozwiązanie.

0

kq dzięki za szybką odpowiedź lecz po zastosowaniu poniższego kodu, i wpisaniu w komendy Enqueue15 lub Enqueue 15 kod wyskakuje komunikat: Aby kontynuować, naciśnij dowolny klawisz.

int wlozyc;
string str;
cin>>str;

if(str=="Enqueue")
if(cin>>wlozyc)
enqueue(wlozyc)
0

Bardziej mnie ciekawi czy jest jakiś sposób aby sprawdzić czy użytkownik podaje ciąg znaków , po ciągu znak biały , po znaku białym liczbę . Jeśli tak to tę właśnie liczbę wstawiamy do kolejki.

0

Jaki Masz system i kompilator; na linuxie z gcc (kompilacja: g++ <nazwa.cpp>) kod podany przez @kq działa tak jak powinien, gdy podam Enqueue 123 lub Enqueue enter 123. Nie ma znaczenia ile jest spacji między Enqueue a 123.

1

Np. z użyciem stringstream i tuple

using Command = tuple<string,int>;

Command parseInput(const string& input)
{
  string cmd;
  int val;
  stringstream ss{input};
  if (ss >> cmd >> val) {
    return make_tuple(cmd, val);
  }
  return {"", -1};
}

void func()
{
  string userInput;
  getline(cin, userInput);
  auto [token, value] = parseInput(userInput);
  if (token == "Enqueue") {
    cout << "Value -> " << value << "\n";
  }
}
0

Wszystko działa tylko spoj wywala ze przekroczono limit czasu co jest grane ?

#include<iostream>
using namespace std;
#include <string>
const int SIZE=10;

int A[SIZE];
int front =-1;
int rear =-1;

bool isempty()
{
    if(front ==-1 && rear==-1)
    return true;
    else
    return false;
}

void enqueue(int value)
{
if(rear==SIZE-1)
    cout<<"QUEQUE is full \n";
else
{
    if(front==-1)
        front=0;
    rear++;
    A[rear]=value;
    cout<<"--->";

}

}

void dequeue()
{
    if(isempty())
        cout<<"QUEQUE is empty\n";
    else
        if(front==rear)
            front=rear=-1;

        else front++;
        cout<<A[front-1];

}

void displayQueue()
{
if(isempty())
    cout<<"QUEUE is empty\n";
else
{
    for(int i=front;i<=rear;i++)
        cout<<A[i]<<"\n";
}
}

int main(){

int ile;
cin>>ile;

for(int i=0;i<ile;i++){
string str;
cin>>str;
int wlozyc;

if(str=="Enqueue")
if(cin>>wlozyc)
enqueue(wlozyc);

if(str=="Dequeue")
dequeue();

if(str=="Print")
displayQueue();

}

return 0;
}
0

system("pause"); - po co to?

0

bez systemu tez przekroczony limit

Na spoju jest polecenie aby to zadanie zrealizować przy pomocy 10 elmentowej tablicy , więc listy odpadają . Macie może pomysł dlaczego wypluwa mi przekroczony limit czasu ?

#include <iostream>
using namespace std;
#include <string>
const int SIZE = 10;

int A[SIZE];
int front = -1;
int rear = -1;

bool isempty() {
  if (front == -1 && rear == -1)
    return true;
  else
    return false;
}

void enqueue(int value) {
  if (rear == SIZE - 1)
    cout << "QUEQUE is full \n";
  else {
    if (front == -1)
      front = 0;
    rear++;
    A[rear] = value;
    cout << "--->";
  }
}

void dequeue() {
  if (isempty())
    cout << "QUEQUE is empty\n";
  else if (front == rear)
    front = rear = -1;

  else
    front++;
  cout << A[front - 1];
}

void displayQueue() {
  if (isempty())
    cout << "QUEUE is empty\n";
  else {
    for (int i = front; i <= rear; i++)
      cout << A[i] << "\n";
  }
}

int main() {
  int ile;
  cin >> ile;

  for (int i = 0; i < ile; i++) {
    string str;
    cin >> str;
    int wlozyc;

    if (str == "Enqueue")
      if (cin >> wlozyc)
        enqueue(wlozyc);

    if (str == "Dequeue")
      dequeue();

    if (str == "Print")
      displayQueue();
  }

  return 0;
}
0

Na spoju prawie zawsze polecenie obejmuje wyłącznie wejście i wyjście, a nie detale implementacyjne. Co to za zadanie?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0