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

Kod (c++) na pseudokod

Object Storage Arubacloud
–2 głosów
2,016 wizyt
pytanie zadane 15 kwietnia 2018 w C i C++ przez Rhesus Nowicjusz (190 p.)

Oto i kod wyznaczający wszystkie permutację  bez powtórzeń na zbiorze n-element-owym.

Czy potrafił by ktoś zapisać go w pseudokodzie(czyli zrozumiale) z góry dzięki
 

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <fstream>
#include <cstdlib>
#define q 30

using namespace std;
void swap(char *x, char *y)
{
char temp;
temp = *x;
*x = *y;
*y = temp;
}
void permute(char *a, int l, int r)

{
string linia;
fstream plik;

int i;
if (l == r)
{
plik.open("plik.txt", ios::out | ios::app);
if(plik.good() == true)
{
cout<<a<<endl;
plik <<a<<endl;
plik.close();
}
}
else
{
for (i = l; i <= r; i++)
{

swap((a+l), (a+i));
permute(a, l+1, r);
swap((a+l), (a+i));
}
}

}
int main()
{
char str[q];
cout<<"Podaj wyraz n elementowy z zakresu 30"<<endl;
cin>>str;
int n = strlen(str);
permute(str, 0, n-1);
return 0;
}

 

komentarz 15 kwietnia 2018 przez SimiVoid Pasjonat (19,790 p.)

Nie musisz tworzyć funkcji swap. Jest ona dostępna w bibliotece standardowej.

#include <algorithm>

int x, y; // x i y mogą być dowolnego typu

std::swap(x, y);

 

2 odpowiedzi

+1 głos
odpowiedź 15 kwietnia 2018 przez Rhesus Nowicjusz (190 p.)

Wiem jednak jest to dość prosta funkcja więc nie trudno napisać 3 linijki (ale nie ona jest tu problemem)

Napisałem taki pseudokod czy jest on poprawny?:

Pseudokod:
#define p 30
MAIN(funkcja typu int)
Start
wyświetl: podaj wyraz p elementowy z zakresu do 30
char str[p] // Tworzy miejsca w tablicy str na elementy które poda użytkownik 
read str //Zczytuje elementy podane przez użtkownika i zapisuje je do tablicy
permute(str,0,n,n-1) //Odwołuje się do fuknkcji permute która sortuje tak elementy aż uzyska wszystkie możliwe permutacje bez powtórzeń
Koniec
FUNKCJA PERMUTE(jest to funkcja typu void)
char *a
int l
int r
jeśli l==r to
	wypisz a
else
dla (i=l ; i<=r ; i=i+1)
	zamień((a+1),(a+i));
	Rekurencyjnie odwołaj się od siebię dla (a,l+1,r)
	zamień((a+1),(a+i));
FUNKCJA ZAMIEŃ jest to w języku funkcja swap znajdująca się w bibliotece algorithm. Przypisuje wartość obiektu a obiektowi b i wartość obiektu b obiektowi a.

 

0 głosów
odpowiedź 16 kwietnia 2018 przez Beginer Pasjonat (22,110 p.)

Z grubsza rzecz biorąc Twój opis (peudokod) jest poprawny. Zrobiłem tylko niewielką korektę.


******************** Pseudokod ******************
#define q 30

MAIN(funkcja typu int)
Start
wyświetl napis:: Podaj wyraz n-elementowy nie dłuższy niż 30 znaków
char str[q]  //tworzy tablicę znaków (30-elementową) 
cin >> str   //wczytuje wyraz z konsoli i zapisuje w tablicy znaków
permute(str, 0, n-1)   //wywołanie funkcji  wypisującej permutacje liter bez powtórzeń
Koniec

FUNKCJA PERMUTE  //funkcja typu void
char *a
int l
int r
jeśli l==r to
    wypisz a
else
dla (i = l ; i <= r ; i = i+1)
    zamień((a+1),(a+i));
    Rekurencyjnie odwołuje się od siebie dla (a,l+1,r)
    zamień((a+1),(a+i));
FUNKCJA ZAMIEŃ   //funkcja swap z biblioteki algorithm. Zamienia wzajemnie wartości: a i b

 

komentarz 16 kwietnia 2018 przez Rhesus Nowicjusz (190 p.)
Dzięki ;D

Podobne pytania

0 głosów
1 odpowiedź 76 wizyt
pytanie zadane 14 marca w Algorytmy przez Doge Gaduła (3,370 p.)
+1 głos
1 odpowiedź 234 wizyt
0 głosów
1 odpowiedź 395 wizyt
pytanie zadane 14 października 2021 w Algorytmy przez ramazin Nowicjusz (120 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!

...