Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

C++ Program / Jak napisać?


Rekomendowane odpowiedzi

Opublikowano

Witam, jestem amatorem programowania. Nie wiem czy takie coś wgl jest możliwe, ale czy da się tak zroobić by po wpisaniu odpowiedniego słowa w cmd(oknie zrobionego już programu) , wyświetlał się tekst przypisany do danego słowa? Np.

Wpisuję np.  "Cześć" 

I cmd odpowiada mi np. "Witaj, co u Ciebie?"




^ Da się takie coś zrobić? xD

 

madhc sygnatura.png

Opublikowano

Oczywiście, wyglądało by to tak:

#include <iostream>

using namespace std;

int main()
{
    string odebrana;                                     //deklarujemy zmienną w której przechowamy otrzymaną wiadomość
    cin>>odebrana;                                       //odbieramy wiadomość z konsoli
    if (odebrana=="Czesc") cout<<"Witaj. Co u ciebie?";  //sprawdzamy jaką wiadomość otrzymaliśmy i jeśli jest nią "Czesc" to odpowiadamy "Witaj. Co u ciebie?"
}
Opublikowano

 

Oczywiście, wyglądało by to tak:

#include <iostream>

using namespace std;

int main()
{
    string odebrana;                                     //deklarujemy zmienną w której przechowamy otrzymaną wiadomość
    cin>>odebrana;                                       //odbieramy wiadomość z konsoli
    if (odebrana=="Czesc") cout<<"Witaj. Co u ciebie?";  //sprawdzamy jaką wiadomość otrzymaliśmy i jeśli jest nią "Czesc" to odpowiadamy "Witaj. Co u ciebie?"
}

 

A gdy bym chciał w jednym pliku np zacząć prowadzić dialog?

Wiesz o co mi chodzi, np gdy zapyta co u mnie, to odpisze mu że dobrze i następnie on odpisuje mi że to dobrze. czy coś takiego

madhc sygnatura.png

Opublikowano

wtedy rozbudowujesz program o kolejne analogiczne linie według schematu
- program wysyła wiadomość
- pobiera odpowiedź
- sprawdza ją i odpisuje
i znów pobiera, itd.

 

możesz także zrobić bardziej rozbudowany program w którym do którego wiadomości nie musisz wysłać w odpowiedniej kolejności. wówczas musisz stworzyć funkcję z bazą wiadomości, do której po otrzymaniu wiadomości program dopasowuje do niej wiadomość. wówczas pobieranie wiadomości i wywołanie funkcji najlepiej umieści w pętli, której liczba iteracji oznacza długość konwersacji.
EDIT
tak mógły taki program wyglądać:

#include <iostream> //inkludowanie biblioteki strumienia wejścia-wyjściausing namespace std; //deklaracja korzystania z przestrzeni nazw stdstring odpowiedz; //zmienna globalna która przechowuje twoją odpowiedźvoid SprawdzamWiadomosc(); //prototyp naszej funkcjiint main() //to jest główna funkcja programu{ cout<<"Witaj. Co u ciebie?"<<endl; //wiadmość startowa while (1) //nieskończona pętla { cin>>odpowiedz; //program zczytuje twoją odpowiedz którą podajesz w konsoli SprawdzamWiadomosc(); //wywołanie naszej funcji } return 0;}void SprawdzamWiadomosc() //niżej piszemy ciało funcji (a właściwie to procedury) czyli co ona ma robic{ if (odpowiedz=="W porządku") cout<<"To dobrze. U mnie tez"<<endl; //ozacza ta linijka jeżeli twoja odpowiedz to "w porzątku" to program odpowiada "To dobrze..." else if (odpowiedz=="Spoko") cout<<"A jaki jest twój ulubiony kolor?"<<endl; //analogicznie ta i niższe liniie else if (odpowiedz=="Dobrze") cout<<"Masz psa?"<<endl; //ps. endl oznacza przejście do nowej linii w konsoli, tak jak np. enter w wordzie else if (odpowiedz=="Czerwony" || odpowiedz=="Zielony") cout<<"A moj to niebieski"<<endl; else if (odpowiedz=="Nie" || odpowiedz=="Nie mam") cout<<"Ja tez nie mam"<<endl; else cout<<"Nie rozumiem"<<endl;}
Program rozpoznaje takie odpowiedzi: W porządku, Spoko, Dobrze, Czerwony, Zielony, Nie, Nie mam. Oczywiście są one przykładowe. Możesz dodać kolejne dowolne. Jeżeli się odpowie mu coś innego niż te wiadomości co podałem to program odpisze że nie rozumie.

 

Przeanalizuj mechanikę i kod tego programu. Jeśli zrozumiesz jak to działa to spróbuj np. dodać coś nowego. Jeśli masz jakieś pytania to pisz.

Opublikowano

@up

2x post :P

 

Nie lepiej pobrać gotowe dialogi z internetu, załadować plik w programie i za każdym razem sprawdzać pytania oraz odpowiedzi ponieważ wątpię że komuś będzie się chciało z tym bawić.

 

Przykładowy plik: 

,,

Pytanie

Liczba odpowiedzi

Odpowiedź 1

Odpowiedź 2

Odpowiedź 3

 

Co tam u ciebie

3

A spoko

Źle

Dobrze

''

Opublikowano

tu chodzi tylko o naukę mechaniki więc wystarczy kilka przykładowych dialogów. poza tym nie ma sensu komuś kto dopiero uczy się instrukcji wejścia/wyjścia mieszać odczytem z pliku tekstowego. nie wszystko na raz. ale dałeś ciekawy pomysł dla autora tematu na to co może się w przyszłości nauczyć. pozdrawiam

Opublikowano

A da się np zrobić tak bym w tym pliku miał polecenie "ping" ?

Chodzi o to że np wpisze tam 
p 8.8.8.8                                 // gdzie p=ping 

 

chodzi o tak jakby przekierowanie słowa pod komende

/ nie wiem jak to wyjaśnić, jeśli czegoś nie zrozumiesz to napisz postaram się bardziej zrozumiale xD

madhc sygnatura.png

Opublikowano

Musisz wczytać plik do końca, za każdym razem szukasz w nim ,, p '' i następnie wykonujesz polecenie za pomocą system() lub podobnych :P

 

Odpowiedź: Jeszcze jak

 

Przykład

#include <fstream>
#include <iostream>

void Zaladuj(std::string Plik){

	std::fstream File;
	
	File.open((char*)Plik.c_str());
	
	if(!File.good()){
		
		std::cout << "Błąd otwierania pliku" << std::endl;
		
	} else {
		
		std::string a, b;
		
		while(!File.eof()){
			
			if(File >> a >> {
				
				if(a == "costam"){
					
					system(;
					
				}
				
			} else break;
			
		}
		
	}

}

Pisałem na szybko więc jeżeli są jakieś błędy to pisz :P

Opublikowano

komendy do konsoli cmd wysyłasz przy pomocy funkcji

system("komenda");

aby jej użyć musisz wcześniej dołączyć odpowiednią bibliotekę

#include <windows.h>

ale parametrem funkcji system jest zmienna typu const char, więc ciężko będzie podać tam komendę inaczej niż poprzez wpisanie jej między cudzysłowia. czyli raczej odpada (a przynajmniej zrobienia tego w łatwy sposób ) używanie konsoli programu do skrócenia poleceń cmd, jeśli to miałeś na celu

 

edit: @damian1920 tak jak napisałem wyżej, twoja linijka " system(b ); " nie zadziała bo b jest typu string, a parametr funkcji system musi być typu const char. 

Opublikowano

komendy do konsoli cmd wysyłasz przy pomocy funkcji

system("komenda");

aby jej użyć musisz wcześniej dołączyć odpowiednią bibliotekę

#include <windows.h>

ale parametrem funkcji system jest zmienna typu const char, więc ciężko będzie podać tam komendę inaczej niż poprzez wpisanie jej między cudzysłowia. czyli raczej odpada (a przynajmniej zrobienia tego w łatwy sposób używanie konsoli programu do skrócenia poleceń cmd, jeśli to miałeś na celu

 

edit: @damian1920 tak jak napisałem wyżej, twoja linijka " system(b ); " nie zadziała bo b jest typu string, a parametr funkcji system musi być typu const char. 

Podałem tylko przykład :) Co to za problem zmienić string na const char?

 

// Drobna pomyłka :)

Opublikowano

Panowie ja prosto pytam xD To prosto odpowiadajcie xD 

Chciałbym żeby po wpisaniu "p 8.8.8.8" zapingowało do adresu 8.8.8.8 

I jak to napisać w c++ żeby litera "p" zastępowała całą komendę "ping" xD

madhc sygnatura.png

Opublikowano

Powyżej dałem ci przykład wykonywania komendy z pliku tekstowego, jeżeli chcesz zwyczajnie wpisywać w swojej aplikacji to pobieraj dane za pomocą cin i zapisuj, następnie sprawdź czy A (Nazwa Komendy) jest ,, p '' i B (Tutaj jest np. adres do pingowania).

std::string A, B;
std::cin >> A >> B;
if(strstr(A, "p")){
std::string PING = "ping ";
PING += B; // ping + 8.8.8.8
system(PING.c_str());
}
Opublikowano

Dobra panowie sam zrobiłem xD i jestem z siebie dumny :DxD

Pierw dodałem biblioteke:
#include<stdlib.h>

no i tutaj linijka z komendą po wpisaniu odpowiednego tekstu.

else if (odpowiedz=="p") system("ping 8.8.8.8");

 

:D

madhc sygnatura.png

Opublikowano

Dobra panowie sam zrobiłem xD i jestem z siebie dumny :DxD

 

Pierw dodałem biblioteke:

#include<stdlib.h>

no i tutaj linijka z komendą po wpisaniu odpowiednego tekstu.

else if (odpowiedz=="p") system("ping 8.8.8.8");

 

:D

To dobrze ale lepiej jakbyś dodał możliwość pingowania innego adresu niż 8.8.8.8 :)

Opublikowano

 

tylko po co ten else w linijce

else if (odpowiedz=="p") system("ping 8.8.8.8");

Wystarczy pomyśleć, może ma inne ,, komendy '' i to jest następna.

Opublikowano

Panowie mam mały problem z linijką, chodzi o to:
if (odpowiedz=="W porządku") cout<<"To dobrze. U mnie tez"<<endl;

 

Mianowicie problem jest z odpowiedzią "W porządku" chodzi o to że nie wyczytuje jej bo jest w niej spacja..

Jak to zrobić?

madhc sygnatura.png

Opublikowano

getline(std::cin,wyraz);

Jaśniej można? Do czego to służy? i w jakim momencie mam to przepisać?

madhc sygnatura.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...