• 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

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

93,743 zapytań

142,684 odpowiedzi

323,305 komentarzy

63,330 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...