logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

C++ Program do generacji i badania kodów splotowych

32paxon 10 Cze 2009 23:07 1247 5
REKLAMA
  • #1 6640957
    32paxon
    Poziom 2  
    Posty: 3
    W C++ ma to być "program do generacji i badania kodów splotowych". Ma on wykrywać błędy na wyjściu. Pomoże mi ktoś? Co jest z tym programem nie tak że liczy liczby rzeczywiste a nie wektory? I czy on jest odpowiedni do wykrywania błędów w kodzie?

    /*************** OUTPUT ****************** 
    | Convolutional Code |
    Enter The No. Of Generator Sequences : 2 
    Enter The No. Of Bits In Each Generator Sequence : 3 
    Enter The Values Of G0 : 
    1 
    1 
    1 
    Enter The Values Of G1 : 
    1 
    0 
    1 
    Enter The No. Of Message Bits : 8 
    Enter The Message Bits : 
    1 
    1 
    0 
    1 
    1 
    0 
    1 
    1 
    |The Code Vectors Are|
    | 
    | 1 1 0 | 
    | 0 1 0 | 
    | 0 1 0 | 
    | 0 0 0 |
    | 0 1 0 |
    | 0 1 0 |
    | 0 0 0 |
    | 0 1 0 
    */ 
    #include<stdio.h> 
    #include<conio.h> 
    int main(void) 
    { 
    int i,j,k,n,gb,mb,g[10][10],x[10][10],c[10],m[10],t[10]; 
    for(i=0;i< 10;i++) 
    { 
    for(j=0;j< 10;j++) 
    g[i][j]=0;x[i][j]=0;c[i]=0;m[i]=0;t[i]=0; 
    } 
    printf("\t\t\t| Convolutional Code |"); 
    printf("\n\nEnter The No. Of Generator Sequences\t: "); 
    scanf("%d", &n); 
    printf("Enter The No. Of Bits In Each Generator Sequence\t: "); 
    scanf("%d",&gb); 
    for(i=0;i< n;i++) 
    { 
    printf("\n\nEnter The Values Of G %d\t:\n",i); 
    for(j=0;j< gb;j++) 
    scanf("%dt",&g[i][j]); 
    } 
    printf("\nEnter The No. Of Message Bits\t: "); 
    scanf("%d",&mb); 
    printf("Enter The Message Bits\t:\n"); 
    for(i=0;i< mb;i++) 
    scanf("%d",&c[i]); 
    for(i=0;i< mb;i++) 
    { 
    for(j=0;j< gb;j++) 
    { 
    t[j]=m[j]; 
    if(j==0) 
    m[j]=c[i]; 
    else 
    m[j]=t[j-1]; 
    } 
    for(k=0;k< gb;k++) 
    { 
    for(j=0;j< gb;j++) 
    { 
    if(g[k][j]==1) 
    x[k][i]=x[k][i]^m[j]; 
    } 
    } 
    } 
    printf("\n\n| The Code Vectors Are: | \n"); 
    for(i=0;i< mb;i++) 
    { 
    printf("| \n| "); 
    for(j=0;j< gb;j++){ 
    printf("%d\t",x[j][i]); 
    } 
    } 
    getch(); 
    }


    Kod proszę umieszczać w znacznikach code. Temat poprawiłem - krzychoocpp
  • REKLAMA
  • #2 6641785
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    Jeżeli masz zadane wartości, to nie musisz ich wpisywać. Tablicę wektorów możesz zapisać jako tablicę stringów i operować na jej poszczególnych char'ach, np:
    string st="12345";
    st[1]:='2';
    int liczba=st[1]-48; //=2
    
    #include<iostream>
    #include<conio.h>
    using namespace std;
    int main()
    {
        int val_GO[3]={1,1,1};
        int val_G1[3]={1,0,1};    
        int mess_bits[8]={1,1,0,1,1,0,1,1};
        string code_vec[8]={"110","010","010","000","010","010","000","010"};
        cout<<"code vectors[1]= "<<code_vec[1]<<endl;
        int aa=code_vec[1][1]-48;
        cout<<"code vectors[1][1]*mess_bits[0]= "<<aa*mess_bits[0]<<endl;    
        cout<<"press any key";
        getch();
        return 0;
    }
    
  • REKLAMA
  • #3 6642769
    32paxon
    Poziom 2  
    Posty: 3
    Dziękuje za odpowiedź ale niestety nadal nie jest chyba to co powinno być :(
  • REKLAMA
  • #4 6645539
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    Twój kod jest niejasny. Aby cokolwiek powiedzieć, musisz dokładnie określić warunki tworzenia wektora wynikowego: które wartości wejściowe porównujesz, mnożysz czy dodajesz. Dla jasności kodu, nazwy zmiennych deklaruj adekwatnie do ich przeznaczenia. Np:
    int wektor_wynikowy[12];
    Poza tym przy zależnej od deklaracji pojemności (wielkości) tablic, aż prosi się o wprowadzenie zmiennych dynamicznych.
  • REKLAMA
  • #5 6648093
    32paxon
    Poziom 2  
    Posty: 3
    Chodzi mi o wykrywanie błędów w kodzie splotowym na wyjsciu. mniej wiecej aby na wyjściu można było sprawdzić czy jest kodem błędnym.
  • #6 6649365
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    
    for(i=0;i< mb;i++) 
    { 
    for(j=0;j< gb;j++) 
    { 
    t[j]=m[j]; 
    if(j==0) 
    m[j]=c[i]; 
    else 
    m[j]=t[j-1]; 
    } 
    for(k=0;k< gb;k++) 
    { 
    for(j=0;j< gb;j++) 
    { 
    if(g[k][j]==1) 
    x[k][i]=x[k][i]^m[j]; 
    } 
    } 
    }
    

    Ta część kodu wymaga wyjaśnienia. Na jakiej zasadzie tworzysz tablicę x[][]? Dlaczego używasz fcji XOR? Dlaczego The Code Vectors jest 2-wymiarowy? Wiele niejasności.
REKLAMA