Skocz do zawartości

Danon

Użytkownicy
  • Postów

    8
  • Dołączył

  • Ostatnia wizyta

Odpowiedzi opublikowane przez Danon

  1. Witam

    Mam do was pytanie i mam nadzieję że będziecie mi w stanie pomóc... W jaki sposób za pomocą języka C mogę zrobić zczytywanie macierzy ala Matlab czyli dokładniej rzecz ujmując:

    w konsoli programu wpisujemy [ 1 2 3; 3 4 5 ; 5 6 7] i z tego otrzymujemy tablice 2 wymarową:

    1 2 3

    3 4 5

    5 6 7

     

    Mój sposób nie jest ani optymalny ani dokładny :(

    GML

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

     

    #define N 100

    #define W 1000

     

    int wczytaj()

    {

    int i=0 , j=0 , lock=0, wiersze=0;

    int znaki=0 , wyraz=0 , send_wiersze=0;

    int send_wyraz=0;

    float a[N][N];

    char ci[W];

    char c;

    printf("\n\n>>");

     

    while(i < N)

    {

    c = getch();

    printf("%c",c);

     

    if(c==13)

    {

    break; // wyjście z pętli

    }

     

    else if(c==8 && znaki>0) //Backspace - poprawa ostatniej liczby niestety tylko ostatniej :(

    {

    printf(" %c",8);

    znaki--;

    }

     

    else if(c>='0' && c<='9'|| c=='.' || c=='-') //zczytywanie tylko cyfr i "." "-"

    {

    ci[znaki] = c; //Znak ląduje do stringu

    znaki++;

    i++;

    }

     

    else if( c==';' )

    {

    if(znaki==0) // zabezpieczenie gdy mamy [3 4; 5 6_; 3 4] gdyż zczytywało spację "6_;" jako kolejny wyraz ( "_" - spacja )

    {

    if(wyraz!=0)

    {

    wyraz-=1;

    }

    }

     

    if(lock==0) //Moja dziwna blokada ilosci elementów kolejnych wierszy

    {

    send_wyraz = wyraz;

    }

     

    if(send_wyraz != wyraz && lock==1)

    {

    printf("Blad w liczbie wierszy!");

    system("pause");

    return -1;

    }

     

    if(znaki!=0) // w razie gdy użytkownik wpisze "6;" ma nastąpić dodanie elementu do tablicy "a"

    {

    sscanf(ci, "%f", &a[wiersze][wyraz]);

    //printf("a= %.2f ",a[wiersze][wyraz]);

    }

     

    wiersze++;

    //printf("w= %d ",wiersze);

    ci[znaki]=' ';

     

    for(j=0; j<=wyraz; j++) // zapełnienie wiersza zerami

    {

    a[wiersze][j]=0;

    }

     

    lock=1;

    wyraz=0;

    i++;

    znaki=0;

     

    }

     

    else if(c==' ') //po wciśnięciu spacji

    {

    if(znaki!=0) // gdy istnieją jakieś cyfry

    {

    ci[znaki]=' ';

    sscanf(ci, "%f", &a[wiersze][wyraz]); //dodaj do tablicy "a" kolejny element

    // printf("a= %.2f ",a[wiersze][wyraz]);

    i++;

    znaki=0;

    wyraz++;

    }

    }

    else

    {

    printf(" ");

    }

    }

     

    macierz_podaj(wiersze+1,send_wyraz+1,a); // wysłanie ilości wierszy i kolumn wraz z tablicą "a"

    return 0;

    }

     

    Naprawdę będę bardzo wdzięczny za pomoc :)

    Pozdro Danon :)

×
×
  • Dodaj nową pozycję...