• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Program zamiana znaków, problem

VPS Starter Arubacloud
0 głosów
228 wizyt
pytanie zadane 7 lutego 2017 w C i C++ przez spicedagger Użytkownik (530 p.)
zamknięte 1 lutego 2018 przez spicedagger

Mam taki problem z poniższym programem, a nie wiem dlaczego ale wyświetla mi dwa rozwiązania.

Chce żeby wykonał tylko jedną rzecz, i ją wyświetlił. Problem pewnie banalny do rozwiązania jednak ja jako początkujący go nie widzę. Szkoda mi czasu na długie głowienie się nad tym. Program działa; ma zamieniać znaki z podanego   ciągu na znaki z ciągu  wcześniej zdeklarowanego w programie ciąg a lub b,   w zależności od wyboru użytkownika. Taki tam program pseudo szyfrujący. 

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <conio.h>
#include <cstring>

using namespace std;

string a = "abcdefghijklmnoprstuqxwyvz1234567890 ";
string b = "1234567890qwertyuiopasdfghjklzxcvbn_";
string c;
int x;

int main()
{
	cout << "Aby zamienic wybierz 1: " << endl;
	cout << "Aby przywrucic wybierz 2: " << endl;
	cin >> x;
	system("cls");
	cout << "Podaj znaki: ";
	int h;
	getline(cin, c);
	int n = c.length();
	if (x = 1)
	{
		getline(cin, c);
		int n = c.length();
		for (int i = 0; i < n; i++)
		{	
			h = a.find(c[i]);
			cout << b[h];
		}
		cout << "   " << endl;
		n = c.length();
		for (int i = 0; i < n; i++)
		{
			int v = b.find(c[i]);
			cout << a[v];
		}
		cout << "   " << endl;
	}
	system("pause");
	return 0;
}

EDIT:PROBLEM ROZWIĄZANY KOLEJNY NA DOLE

komentarz zamknięcia: rozwiązane
komentarz 7 lutego 2017 przez Patrycjerz Mędrzec (192,320 p.)

Takiego kodu to bym nawet swojemu wrogowi nie pokazał cheeky Sformatuj to po ludzku, bo nie da się tego czytać…

komentarz 7 lutego 2017 przez spicedagger Użytkownik (530 p.)

to nie jest aż tak duży program żeby  to było konieczne, i nie przesadzajmy że nie da się tego czytać jeśli to takie trudne to się nie zmuszaj, jestem tylko zwykłym śmiertelnikiem(początkującym) więc proszę się nie czepiać. formatować się nauczę z czasemsmiley

komentarz 7 lutego 2017 przez 10kw10 Pasjonat (22,880 p.)
1. przywrocic ;)

2. w ifie chcesz porownac jakies wartosci wiec ==

3. nie ma przypadku gdy x==2
komentarz 7 lutego 2017 przez Patrycjerz Mędrzec (192,320 p.)

No tak, ale tak okropnego to dawno nie widziałem laugh Ja ci tylko dobrze radzę, bo dobrze redagując pytanie zwiększasz swoje szanse na szybką pomoc.

komentarz 7 lutego 2017 przez spicedagger Użytkownik (530 p.)
to nie ten błąd  bo nie wpływa on na działanie programu, ale dzięki tu też popełniłem błąd.

1 odpowiedź

0 głosów
odpowiedź 7 lutego 2017 przez Adrian Spora Mądrala (5,100 p.)
wybrane 7 lutego 2017 przez spicedagger
 
Najlepsza

Tu jest błąd : 

if (x=1)

do zmiennej x przypisujesz 1, a zapewne chodzi Ci o porównanie czy x ma wartość 1. Powinno być:

if (x==1)

A i chodzi Ci o to, że gdy użytkownik wybierze 1 to ma się wykonać jedna petla, a gdy 2 to druga? W takim wypadku musi być:

if (x == 1) {
    //wykonujesz pierwszą akcję
} else if (x == 2) {
    //wykonujesz drugą akcję
} else {
    cout << "Dokonano błędnego wyboru" //np
}

 

komentarz 7 lutego 2017 przez spicedagger Użytkownik (530 p.)

 Program działa, jeszcze tylko muszę dorobić opcje żeby program kończył się tylko wtedy gdy wczytany ciągiem  znaków jest jakiś znak specjalny np "[*]"

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <conio.h>
#include <cstring>
using namespace std;

 string a="abcdefghijklmnoprstuqxwyvz1234567890 ";
 string b="1234567890qwertyuiopasdfghjklzxcvbn_";
 string c;
int x;
int h;
int main()

{
cout<<"Aby zamienic wybierz 1: "<<endl;
cout<<"Aby przywrucic wybierz 2: "<<endl;
cin>>x;
 system( "cls" );
cout<<"Podaj znaki: ";
 getline(cin,c);
int n=c.length();
if (x==1) {
	getline(cin,c);
    int n=c.length();
 for(int i=0;i<n;i++)
{
h=a.find(c[i]);
 cout<<b[h];
}
cout<<"   "<<endl;


} else if (x == 2) 
{
    getline(cin,c);
    n=c.length();

for( int i=0;i<n;i++)
{
	 int  v=b.find(c[i]);
     cout<<a[v];
}
return 0;
}
else  {
cout << "Dokonano błędnego wyboru";
}
cout<<"   "<<endl;
 return 0;
system("pause");

	}

 

Podobne pytania

0 głosów
2 odpowiedzi 2,321 wizyt
pytanie zadane 22 stycznia 2017 w C i C++ przez spicedagger Użytkownik (530 p.)
0 głosów
1 odpowiedź 282 wizyt
pytanie zadane 7 sierpnia 2017 w PHP przez Paweł Terlecki Nowicjusz (210 p.)

92,973 zapytań

141,938 odpowiedzi

321,177 komentarzy

62,301 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...