Help in C++ (Μεταθέσεις και C++)

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: Super-Moderators, WebDev Moderators

Απάντηση
Christos75
Δημοσιεύσεις: 12
Εγγραφή: 07 Φεβ 2008 00:16
Τοποθεσία: Αθήνα
Επικοινωνία:

Help in C++ (Μεταθέσεις και C++)

Δημοσίευση από Christos75 » 26 Μάιος 2009 15:39

Μου έχει τεθεί το παρακάτω πρόβλημα:
Να γραφεί πρόγραμμα το οποίο δεδομένου του προτύπου της μετάθεσης, να εμφανίζει τις μεταθέσεις που το ακολουθούν.
Πχ ++- 2341
+-+ 2314,2413,3412

Στην προσπάθειά μου να βγάλω τον κώδικα,έχω φτάσει μέχρι σ'ένα σημείο αν και δεν νομίζω να είναι σωστό.Θα ήθελα την βοήθειά σας:

Κώδικας: Επιλογή όλων

#include <iostream>
#include <cmath>
using namespace std;

int i,my_number;
char j;
main&#40;&#41;
&#123;     int pattern&#91;9&#93;=&#123;1,2,3,4,5,6,7,8,9&#125;;
      char x&#91;10&#93;=&#123;'+','-'&#125;;
      cout << "Give me pattern&#58; " ;
      cin >> x&#91;j&#93;; 
      for&#40;int i=1;i<10;i++&#41;
      do&#123;
              if&#40;j=='+'&#41;&#123;
                 i++;
                 &#125;;
                  i--;
             
                  
        my_number=j; 
        &#125;
        while &#40;x&#91;j&#93;!='/0'&#41;;
        cout << " The asked permutations are&#58; " << my_number << endl; 
        system&#40;"pause"&#41;;
&#125;               

If there's a will there's always a way!!!!!

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Help in C++ (Μεταθέσεις και C++)

Δημοσίευση από virxen75 » 28 Μάιος 2009 03:50

για όποιον ενδιαφέρετε για το ίδιο (το θέμα έχει απαντηθεί αλλού)

Κώδικας: Επιλογή όλων

#include <iostream>

using namespace std;
int value1&#91;363000&#93;;
int value_size=0;
char x&#91;100&#93;;

void visit&#40;int *, int , int&#41;;
int  power&#40;int&#41;;
bool checkPattern&#40;int&#41;;

int main&#40;&#41;&#123;
bool ok=false;
while&#40;!ok&#41;&#123;
    cout << "Give me pattern&#58;&#40;only + & - max 8&#41; " ;
	cin >> x;
	ok=true;
	for &#40;int i=0;i<strlen&#40;x&#41;;i++&#41;&#123;
	if &#40;x&#91;i&#93;!='+' && x&#91;i&#93;!='-'&#41; ok=false;
	&#125;
	if &#40;strlen&#40;x&#41;>8&#41; ok=false;
	if &#40;!ok&#41; cout<<"Wrong pattern i accept only + & -";
&#125;

int xx&#91;10&#93;;
  int N = strlen&#40;x&#41;+1;
  for &#40;int i = 0; i < N; i++&#41; &#123;
    xx&#91;i&#93; = 0;
  &#125;
  visit&#40;xx, N, 0&#41;;

for &#40;int j=0;j<value_size;j++&#41;
if &#40;checkPattern&#40;value1&#91;j&#93;&#41;&#41; &#123;
	printf&#40;"\n value=%d accepted!!!\n ",value1&#91;j&#93;&#41;;
&#125;



	cin >> x&#91;0&#93;;
	return 0;

&#125;

void visit&#40;int *Value, int N, int k&#41;
&#123;
  static int level = -1;
  level = level+1; Value&#91;k&#93; = level;

  if &#40;level == N&#41;&#123;
	int a=0;
	value1&#91;value_size&#93;=0;
	for &#40;int i=N-1;i>=0;i--&#41;&#123;
        int gg=*&#40;Value+a&#41;;
        int gg2=power&#40;i&#41;;
		value1&#91;value_size&#93;=value1&#91;value_size&#93;+gg*gg2;
					a++;
	&#125;

	value_size++;

  &#125;
  else
    for &#40;int i = 0; i < N; i++&#41;
      if &#40;Value&#91;i&#93; == 0&#41;
        visit&#40;Value, N, i&#41;;

  level = level-1; Value&#91;k&#93; = 0;
&#125;

bool checkPattern&#40;int value&#41;&#123;
bool ok=true;
char str&#91;10&#93;;
itoa&#40;value,str,10&#41;;
for &#40;int i=0;i<strlen&#40;x&#41;;i++&#41;&#123;
	if &#40;x&#91;i&#93;=='+'&#41;&#123;
		char str2&#91;2&#93;;
			str2&#91;0&#93;=str&#91;i&#93;;
		    str2&#91;1&#93;='\0';
			char str3&#91;2&#93;;
			str3&#91;0&#93;=str&#91;i+1&#93;;
		    str3&#91;1&#93;='\0';
		int prin=atoi&#40;str2&#41;;
		int meta=atoi&#40;str3&#41;;
         if &#40;prin>=meta&#41; ok=false;
	&#125;
	else&#123;
		char str2&#91;2&#93;;
			str2&#91;0&#93;=str&#91;i&#93;;
		    str2&#91;1&#93;='\0';
			char str3&#91;2&#93;;
			str3&#91;0&#93;=str&#91;i+1&#93;;
		    str3&#91;1&#93;='\0';

		int prin=atoi&#40;str2&#41;;
		int meta=atoi&#40;str3&#41;;
         if &#40;prin<=meta&#41; ok=false;
	&#125;

&#125;
return ok;
&#125;
int power&#40;int n&#41;&#123;
    int powerOf10=1;
    for &#40;int i=0;i<n;i++&#41;&#123;
      powerOf10=powerOf10*10;  
    &#125;
    return powerOf10;
&#125;

    







Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες