Skocz do zawartości
MeHow

...:::PODZIAL NA PLIKI I MAKEFILE:::... <- need help ;]

Rekomendowane odpowiedzi

(Poniezej umieszczam kod programu). Otoz mam taki program i chcialbym go podzielic na czesci i dac do roznych plikow. Wiem, ze nalezy zrobic #include "nazwa_pliku.h" , ale nijak mi to nie wychodzi :/ . Chcialbym, zeby program byl podzielony na 4 czesci. W jednym zeby byla struktura, w drugim funkcje int find_free( struct test_t[] ); void czyszczenie( struct test_t[] ); void usun_test( struct test_t[], int*, int ); void sort_nazw( struct test_t*, int, int ); void sort_trud( struct test_t*, int, int ); void sortuj( struct test_t[], int ); void mieszaj( struct test_t[], int ); int jestsplg( char );, a w trzecim funkcje int wybor_z_menu( void ); void wprowadz_test( struct test_t[], int* ); void wyswietl_testy( struct test_t[], int ); void przeprowadz_test( struct test_t[], int ); float ocen( struct test_t[], int, int, char[] ); . Jak to zrobic? Jak potem dorobic do tego makefile'a ?

 

[php:1:3c33461129]

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <ctype.h>

 

 

#define ILOSC_PYTAN_W_TESCIE 5

#define MAX_ILOSC_TESTOW 20

 

 

struct pytanie_t {

char polskie[30];

int ilosc_odpowiednikow;

char angielskie[3][30];

};

 

struct test_t {

char nazwa[80];

char stopien_trudnosci[20];

struct pytanie_t pytanie[iLOSC_PYTAN_W_TESCIE];

};

 

 

 

int find_free( struct test_t[] );

void czyszczenie( struct test_t[] );

int wybor_z_menu( void );

void wprowadz_test( struct test_t[], int* );

void wyswietl_testy( struct test_t[], int );

void usun_test( struct test_t[], int*, int );

void sort_nazw( struct test_t*, int, int );

void sort_trud( struct test_t*, int, int );

void sortuj( struct test_t[], int );

void mieszaj( struct test_t[], int );

void przeprowadz_test( struct test_t[], int );

float ocen( struct test_t[], int, int, char[] );

int jestsplg( char );

void instrukcja( void );

 

main( void )

{

int ile_testow_w_bazie = 0;

int choice;

int nr;

char string[10];

 

struct test_t test[MAX_ILOSC_TESTOW];

czyszczenie( test ); /* inicjalizacja tablicy struktur */

for(;;) {

choice = wybor_z_menu();

switch( choice ) {

case 1: wprowadz_test( test ,&ile_testow_w_bazie);

break;

case 2: sortuj( test, ile_testow_w_bazie );

break;

case 3: wyswietl_testy( test, ile_testow_w_bazie );

break;

case 4: usun_test( test, &ile_testow_w_bazie, ile_testow_w_bazie );

break;

case 5: {

printf("nPodaj numer testu.n");

fgets( string, 9, stdin );

nr = atoi( string );

if((nr > 20) || (nr < 1))

{

printf("nie podales numeru testu");

break;

}

przeprowadz_test( test, nr );

break;

 

}

case 6: exit(0);

}

}

}

 

 

void wprowadz_test( struct test_t test[] , int* wsk) {

int gdzie, i, t, pomoc;

char c[20];

 

gdzie = find_free( test );

 

if( gdzie == -1 ) {

printf("Baza jest pelna...n");

return;

}

while(1)

{

printf("nnPodaj nazwe testu:n");

fgets( test[gdzie].nazwa, 79, stdin );

if(isprint(test[gdzie].nazwa[0]))

break;

}

 

(*wsk)++;

 

while(1)

{

printf("Podaj stopien trudnosci tego testu:n");

fgets( test[gdzie].stopien_trudnosci, 19 , stdin );

if(isprint(test[gdzie].stopien_trudnosci[0]))

break;

}

for( i=0; i<ILOSC_PYTAN_W_TESCIE; i++ ) {

while(1)

{

printf("Pytanie nr %d:n", i+1);

fgets( test[gdzie].pytanie.polskie, 29, stdin );

if(isprint(test[gdzie].pytanie.polskie[0]))

break;

}

while(1)

{

printf("Ile odpowiednikow angielskich ma to slowo?n");

gets( c );

test[gdzie].pytanie.ilosc_odpowiednikow = atoi( c );

if(test[gdzie].pytanie.ilosc_odpowiednikow<=3 && test[gdzie].pytanie.ilosc_odpowiednikow>=1)

break;

}

for( t=1; t<=test[gdzie].pytanie.ilosc_odpowiednikow; t++) {

while(1)

{

printf("Podaj %d odpowiednik:n", t);

fgets( test[gdzie].pytanie.angielskie[t-1], 29, stdin );

if(isprint(test[gdzie].pytanie.angielskie[0] [0]))

break;

}

}

}

}

/* WPROWADZ_TEST */

 

 

int find_free( struct test_t test[] ) {

int t;

 

for(t=0; test[t].nazwa[0] && t<MAX_ILOSC_TESTOW; ++t);

 

if( t==MAX_ILOSC_TESTOW ) return -1; /* brak wolnych miejsc */

return t;

}/* FIND_FREE */

 

 

void czyszczenie( struct test_t test[] ) {

int t;

 

for(t=0; t<MAX_ILOSC_TESTOW; ++t)

test[t].nazwa[0] = '\0';

}/* czyszczenie */

 

 

int wybor_z_menu( void ) {

char s[80];

int c;

 

printf("nnn1. Wprowadz nowe dane.n");

printf("2. Sortuj testy.n");

printf("3. Wyswietl dostepne testy.n");

printf("4. Usun test.n");

printf("5. Przeprowadz test.n");

printf("6. Wyjdz z programu.n");

do {

printf("nPodaj swoj wybor: ");

gets(s);

c = atoi(s);

} while( c<1 || c>6);

 

return c;

}/* WYBOR_Z_MENU */

 

 

void usun_test( struct test_t test[], int* wsk, int ile_testow_w_bazie ) {

int slot, pomoc;

char s[80];

int i = 0;

 

if( ile_testow_w_bazie == 0 ) {

printf("nBaza jest pusta...n");

return;

}

 

printf("nPodaj numer testu, ktory chcesz usunac:n");

gets(s);

slot = atoi(s);

 

if( slot >= 1 && slot <= MAX_ILOSC_TESTOW) {

test[slot-1].nazwa[0] = '\0';

if( ile_testow_w_bazie > 0 )

{

(*wsk)--;

}

printf("nUsunieto test o numerze %d.n", slot);

}

if( ile_testow_w_bazie == 0 )

return;

 

for( i=slot-1; i<MAX_ILOSC_TESTOW-1; i++ ) {

if( test[i+1].nazwa[0] == '\0' )

break;

test = test[i+1];

}

test[ile_testow_w_bazie].nazwa[0] = '\0';

}

 

 

void wyswietl_testy( struct test_t test[], int ile_testow_w_bazie ) {

int i, j;

 

printf("nW bazie dostepne sa nastepujace testy:n");

for( i=0; i<ile_testow_w_bazie; i++ ) {

printf("%d. %s", i+1, test.nazwa);

printf("trudnosc: %s", test.stopien_trudnosci);

for( j=0; j<ILOSC_PYTAN_W_TESCIE; j++ )

printf("t%s", test.pytanie[j].polskie );

}

}

 

 

void sortuj( struct test_t test[], int ile_testow_w_bazie ) {

char s[20];

int t;

 

printf("n1. Sortuj wedlug nazw testow.n");

printf("2. Sortuj wedlug stopnia trudnosci.n");

do {

printf("Wybierz kryterium sortowania:n");

gets( s );

t = atoi( s );

} while( t<1 || t>2 );

 

if( t==1 )

sort_nazw( test, 0, ile_testow_w_bazie );

else

sort_trud( test, 0, ile_testow_w_bazie );

}

 

 

void sort_nazw( struct test_t tab[], int skad, int dokad ) {

int a, b;

struct test_t temp;

 

for( a=skad; a<dokad; a++ )

for( b=skad; b<dokad-1; b++ )

if( strcmp( tab.nazwa, tab[b+1].nazwa ) > 0 ) {

temp = tab;

tab = tab[b+1];

tab[b+1] = temp;

}

}/* SORT_NAZW */

 

 

void sort_trud( struct test_t tab[], int skad, int dokad ) {

int a, b;

struct test_t temp;

 

for( a=skad; a<dokad; a++ )

for( b=skad; b<dokad-1; b++ )

if( strcmp( tab.stopien_trudnosci, tab[b+1].stopien_trudnosci ) > 0 ) {

temp = tab;

tab = tab[b+1];

tab[b+1] = temp;

}

 

 

}

 

 

void mieszaj( struct test_t test[], int numer ) {

int i, index;

struct pytanie_t temp;

int dz = RAND_MAX/ILOSC_PYTAN_W_TESCIE + 1;

 

for( i=0; i < ILOSC_PYTAN_W_TESCIE; i++ ) {

index = rand()/dz;

temp = test[numer].pytanie;

test[numer].pytanie = test[numer].pytanie[index];

test[numer].pytanie[index] = temp;

}

}

 

 

void przeprowadz_test( struct test_t test[], int numer ) {

int i;

char odp[30];

float l_pkt = 0;

float pkt = 0;

 

mieszaj( test, numer-1 );

 

printf("n");

 

if(!isprint(test[numer-1].pytanie[0].polskie[0])) //zabezpieczenie, przed wykonywaniem pustych testow

{

printf("nie ma takiego testun");

return;

}

for(i=0; i<ILOSC_PYTAN_W_TESCIE; i++) {

printf("%sn", test[numer-1].pytanie.polskie);

printf("Twoja odpowiedz: ");

fgets( odp, 29, stdin );

pkt = ocen( test, numer-1, i, odp );

printf("tt%.1f pktn", pkt);

l_pkt += pkt;

}

 

printf("nnZdobyles %.1f punktow.n", l_pkt);

}

 

float ocen( struct test_t test[], int numer, int pyt, char odp[] ) {

int i, j, k, n;

char lan1[30], lan2[30];

 

for (i = 0; i< 30; i++)

{

lan1 = '\0';

lan2 = '\0';

}

 

for(i = 0; i<test[numer].pytanie[pyt].ilosc_odpowiednikow; i++)

if( !strcmp(test[numer].pytanie[pyt].angielskie, odp) )

return 1;

 

n = strlen( odp );

for(i=0, j=0; i<n; i++ )

if( jestsplg( odp ) )

lan1[j++] = odp;

 

 

for(i = 0; i<test[numer].pytanie[pyt].ilosc_odpowiednikow; i++) {

n = strlen( test[numer].pytanie[pyt].angielskie );

for( j=0, k=0; j<n; j++)

if( jestsplg( test[numer].pytanie[pyt].angielskie[j] ) )

lan2[k++] = test[numer].pytanie[pyt].angielskie[j];

if( !strcmp(lan1, lan2) )

return 0.5;

}

return 0;

}

 

 

int jestsplg( char c ) {

if( isalpha( c ) && c != 'a' && c != 'e' && c != 'i' && c != 'o' && c != 'u' && c != 'y' )

return 1;

else

return 0;

}

 

[/php:1:3c33461129]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...