..::HULK:.. Napisano Styczeń 24, 2008 Zgłoś Share Napisano Styczeń 24, 2008 Mam program który nie chce się skompilować Dev-C++pojawia się błąd i nie wiem jak go poprawić. Błędy które mam po kompilacji: expected constructor, destructor, or type conversion before '(' token expected `,' or `;' before '(' token In function `int main()': `fileOpen' cannot be used as a function `fileOpen' cannot be used as a function opis działania programu Jest to program wczytuje z pliku tekstowego losowania Dużego Lotka, wypisuje do drugiego pliku losowania narastajaco, ze względu na sumę wylosowanych liczb. Jeśli kilka losowań ma ta sama sumę to ustawiamy je ze względu na sumę pierwszych pięciu wylosowanych liczb. Jeśli nadal istnieją losowania z ta sama suma to ustawiamy je ze względu na sumę 4 pierwszych liczb Oto ten program #include <stdio.h> // Zmienne z adresami plikow char fileOpenAddress[99], fileWriteAddress[99]; char fileMode; char fileOpen; //char fileOpen(char); // Zmienna bufora odczytu pliku char fileLine[512]; // Zmienna komunikatu informujacego o bledzie char *fileError = " Blad odczytu pliku. \n"; // Zmienne trypow otwierania pliku char *read = "czytaj", *write = "zapisz"; // Inne przydatne zmienne int line = 0, k, l, change; // Struktura 'lot' zawierajaca rozdzielony // plik na wartosci typu char struct { char nr[6][2]; } lot[9999]; // Struktura 'lots' zawierajaca przekonwertowana // strukture 'lot' z wartosci typu char na typ int // oraz 'tmp' jako schowek podczas sortowania struct { char id[5]; char date[15]; int nr[6]; int sum[6]; } lots[9999], tmp[1]; // Funkcja zamienia miejscami dwa // sasiednie elemety struktury int structSort() { tmp[0] = lots[l]; lots[l] = lots[l+1]; lots[l+1] = tmp[0]; change=1; } // Funkcja ukladajaca strukture wg // algorytmu sortowania babelkowego int fileSort() { for (k=0; k<line-1; ++k) { change=0; for (l=0; l<line-1-k; l++) { // Porownanie dwoch sasiednich sum // wszystkich wylosowanych liczb if (lots[l+1].sum[5] < lots[l].sum[5]) { structSort(); } // Porownanie dwoch sasiednich sum // pierwszych pieciu wylosowanych liczb else if (lots[l+1].sum[5] == lots[l].sum[5] && lots[l+1].sum[4] < lots[l].sum[4]) { structSort(); } // Porownanie dwoch sasiednich sum // pierwszych czterech wylosowanych liczb else if (lots[l+1].sum[5] == lots[l].sum[5] && lots[l+1].sum[4] == lots[l].sum[4] && lots[l+1].sum[3] < lots[l].sum[3]) { structSort(); } // Porownanie dwoch sasiednich sum // pierwszych trzech wylosowanych liczb else if (lots[l+1].sum[5] == lots[l].sum[5] && lots[l+1].sum[4] == lots[l].sum[4] && lots[l+1].sum[3] == lots[l].sum[3] && lots[l+1].sum[2] < lots[l].sum[2]) { structSort(); } // Porownanie dwoch sasiednich sum // pierwszych dwoch wylosowanych liczb else if (lots[l+1].sum[5] == lots[l].sum[5] && lots[l+1].sum[4] == lots[l].sum[4] && lots[l+1].sum[3] == lots[l].sum[3] && lots[l+1].sum[2] == lots[l].sum[2] && lots[l+1].sum[1] < lots[l].sum[1]) { structSort(); } // Porownanie dwoch sasiednich wartosci // pierwszej wylosowanej liczby else if (lots[l+1].sum[5] == lots[l].sum[5] && lots[l+1].sum[4] == lots[l].sum[4] && lots[l+1].sum[3] == lots[l].sum[3] && lots[l+1].sum[2] == lots[l].sum[2] && lots[l+1].sum[1] == lots[l].sum[1] && lots[l+1].sum[0] < lots[l].sum[0]) { structSort(); } } if(!change) break; } } // Glowna funkcja wykonujaca // operacje na plikach fileOpen(fileMode) //<<============PIERWSZY BłąD { int i, state, position, z, b, lin, a; FILE *in, *out; // Dowiazanie do pliku losowan in = fopen(fileOpenAddress, fileMode); // Dowiazanie do przetworzonego pliku out = fopen(fileWriteAddress, fileMode); // Sprawdza czy funkcja zostala // wywolana w celu zapisu do pliku if(fileMode == write) { // Wywolanie funkcji sortujacej fileSort(); for(lin=0; lin<line; lin++) { // Sprawdza czy linijka nie jest pusta if((int)lots[lin].id[0] != 0) { // Zapisanie pola 'id' do pliku for(z=0; z<5; z++) { fprintf(out, "%c", lots[lin].id[z]); } fprintf(out, "\t"); // Zapisanie pola 'date' do pliku for(z=0; z<15; z++) { fprintf(out, "%c", lots[lin].date[z]); } // Zapisanie pol liczb do pliku for(b=0; b<6; b++) { // Sprawdza czy liczba jest prawdilowa if(lots[lin].nr[b] >= 1 && lots[lin].nr[b] <= 49) { fprintf(out, "\t%d", lots[lin].nr[b]); } // Jesli liczba jest spoza przedzialu // zostaje zapisana zamiast niej etykieta else { fprintf(out, "\tL_%d", b+1); } } fprintf(out, "\n"); } } } // Sprawdza czy funkcja zostala // wywolana w celu odczytu z pliku else if(fileMode == read) { while(feof(in) == 0) { // Odczytanie jednego wiersza fgets(fileLine, 512, in); // Ustawienie zapisu na pierwszy // znak pierwszego pola state = 1; position = 0; // Sprawdza czy wiersz nie jest pusty if(fileLine[0] != '\t') { line++; state=1; // Przetworzenie wiersza for(i=0; fileLine[i] != ''; i++) { // Jesli aktualnie przetwarzanym znakiem // jest tabulacja to przelacza na zapis // do pierwszego znaku nastepnego pola if(fileLine[i] == '\t' || fileLine[i] == '\n') { state++; position = 0; } else { // Sprawdza do jakiego pola przepisywac znaki switch(state) { case 1: { // Przepisanie aktualnego znaku do // odpowiedniego miejsca w polu 'id' lots[line].id[position] = fileLine[i]; position++; break; } case 2: { // Przepisanie aktualnego znaku do // odpowiedniego miejsca w polu 'date' lots[line].date[position] = fileLine[i]; position++; break; } default: { // Przepisanie aktualnego znaku do // odpowiedniego miejsca w polu z liczba lot[line].nr[state-3][position] = fileLine[i]; // Sprawdza czy liczba jest dwucyfrowa if(lot[line].nr[state-3][1] != NULL) { // Przelicza dwucyfrowa liczbe z typu char na int lots[line].nr[state-3] = (((int)lot[line].nr[state-3][0]-48) * 10) + ((int)lot[line].nr[state-3][1]-48); } else { // Przelicza cyfre z typu char na int lots[line].nr[state-3] = ((int)lot[line].nr[state-3][0])-48; } position++; break; } } } } // Sprawdza czy liczby mieszcza sie w zakresie 1-49 if(lots[line].nr[0] >= 1 && lots[line].nr[0] <= 49 && lots[line].nr[1] >= 1 && lots[line].nr[1] <= 49 && lots[line].nr[2] >= 1 && lots[line].nr[2] <= 49 && lots[line].nr[3] >= 1 && lots[line].nr[3] <= 49 && lots[line].nr[4] >= 1 && lots[line].nr[4] <= 49 && lots[line].nr[5] >= 1 && lots[line].nr[5] <= 49) { // Podliczenie wszystkich potrzebnych sum lots[line].sum[0] = lots[line].nr[0]; lots[line].sum[1] = lots[line].nr[0] + lots[line].nr[1]; lots[line].sum[2] = lots[line].nr[0] + lots[line].nr[1] + lots[line].nr[2]; lots[line].sum[3] = lots[line].nr[0] + lots[line].nr[1] + lots[line].nr[2] + lots[line].nr[3]; lots[line].sum[4] = lots[line].nr[0] + lots[line].nr[1] + lots[line].nr[2] + lots[line].nr[3] + lots[line].nr[4]; lots[line].sum[5] = lots[line].nr[0] + lots[line].nr[1] + lots[line].nr[2] + lots[line].nr[3] + lots[line].nr[4] + lots[line].nr[5]; } else { // Wyzerowanie wszystkich sum lots[line].sum[0] = lots[line].sum[1] = lots[line].sum[2] = lots[line].sum[3] = lots[line].sum[4] = lots[line].sum[5] = 0; } } } } else if(in == NULL) { // Zwrocenie bledu odczytu pliku fprintf(stderr, fileError); return 1; } } // Glowna funkcja programu main() { printf("Podaj sciezke do pliku wynikow Duzego Lotka:\n # "); scanf("%s", &fileOpenAddress); fileOpen(read); //<<<<<<<<<===========TU KOLEJNY printf("Podaj sciezke do zapisu przetworzonych wynikow:\n # "); scanf("%s", &fileWriteAddress); fileOpen(write); //<<<<<<<===================I TU return 0; } Próbowałem zmienic to na funkcje ale było to samo, a srednik nic nie daje Link do komentarza Udostępnij na innych stronach More sharing options...
TSr Napisano Styczeń 24, 2008 Zgłoś Share Napisano Styczeń 24, 2008 Mam program który nie chce się skompilować pojawia się błąd Jeśli już zakładasz temat to się bardziej przyłóż do opisu problemu. Jeki błąd? Jaki kompilator? Jakie parametry kompilacji? Który fragment kodu jest podejrzany? - bo raczej nikt tego nie przeanalizuje w całości. Ubuntu.pl user #10593 Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Styczeń 24, 2008 Zgłoś Share Napisano Styczeń 24, 2008 true, true wrzuc to co ci kompilator wyrzucas pozatym dopasuj temat do formatu podanego w regulaminie Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
sazian Napisano Styczeń 24, 2008 Zgłoś Share Napisano Styczeń 24, 2008 //==================== //tu pojawia się pierwszy błąd //==================== fileOpen(fileMode) // <<<===== błąd brakuje średnika a co do pozostałych to coś mi się wydaje że funkcja fileOpen wymaga więcej niż jednego argumentu Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.