Quantcast
Channel: Forum Pasja Informatyki - Najnowsze pytania bez odpowiedzi
Viewing all articles
Browse latest Browse all 22027

rekurencyjna zamiana słów.

$
0
0
#include <iostream>
#include <cstring>
#define MAX_SIZE 30

using namespace std;

void swaps(char *napisy[], int x, int y)
{
    char cos[MAX_SIZE];
    strcpy(cos, napisy[x]);
    strcpy(napisy[x], napisy[y]);
    strcpy(napisy[y], cos);
}
void rekurencja(char *T[],int rozmiar)
{
    static int i=0;
    swaps(T, i, rozmiar-1);
    if(i<rozmiar-1)
    {
        i++;
        rekurencja(T, rozmiar-1);
    }
}


int main()

{
    char Ala[MAX_SIZE]= {"Ala"};
    char ma[MAX_SIZE]= {"ma"};
    char kota[MAX_SIZE]= {"kota"};
    char i[MAX_SIZE]= {"i"};
    char psa[MAX_SIZE]= {"psa"};
    char *T[] = {Ala, ma, kota, i, psa};
    rekurencja(T,5);

    return 0;
}

 

funkcja rekurencja, ma zamieniać słowa za pomocą funkcji swaps, ale ma robić to rekurencyjnie, czy moja funkcja jest rekurencyja?

Jak mogę zmodyfikować tą funkcję, by "wywalić" static int i=0;?

Jeśli wpiszę cout<<T; to wynikiem będzie adres 1 elementu tablicy w której przechowywane jest 5 wskazników na tablice typu char tak? więc T+1 będzie adresem drugiego wskaźnika?

Czy tę wiedzę mogę wykorzystać w swojej funkcji "rekurencja" przesuwając wskaźnik o 1 za pomoc T+1? tzn przy wywolaniu rekurencyjnym rekurencja(T+1, rozmiar-1) moją intencją byłoby przesuniecie wskaźnika na 2 tablice charow i zmniejszeniu tablicy wskaznikow o 1. Niestety tutaj mój program się wywraca i nie do końca wiem jak to naprawic. 

Liczę na Waszą pomoc.

 


Viewing all articles
Browse latest Browse all 22027