• 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

Object Storage Arubacloud
0 głosów
187 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,079 wizyt
pytanie zadane 22 stycznia 2017 w C i C++ przez spicedagger Użytkownik (530 p.)
0 głosów
1 odpowiedź 266 wizyt
pytanie zadane 7 sierpnia 2017 w PHP przez Paweł Terlecki Nowicjusz (210 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,958 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...