Dobry,
mianowicie do 24 powinienem dzisiaj skończyć bardzo prosty projekcik. Ale wszystko się pokićkało, że szkoda gadać. A roboty jeszcze sporo z innych rzeczy.
Dokładnie to wczoraj zrobiłem ten program I DZIAŁAŁ! Jednak potem pozmieniałem i nie wiem jakim cudem, po jakimś kompilowaniu i nadpisaniu pliku już nie działało.
-Środowisko: DEV-C++ najnwoszy z kompilatorem gcc (najnowsza beta), a także pod unixem gcc wywalał błędy (nie będę w stanie pokazać logów z gcc pod UNIXem)
-Windows 7 64bit
-Język C
Problem
Zadanie to stworzyć program, gdzie użytkownik wprowadza standardowym wejściem (klawiatura) znaki, które są przypisywane elementom tablicy. Potem używając sortowania przez wybieranie uporządkowuje znaki według ich wartości w kodzie ASCII.
Mój kod mianowicie wygląda tak:
#include
#include
#define MAXTAB 100
void SelectionSort(int n, char t[]);
void swap(char& a, char& b);
int i = 0;
main()
{
char TabWej[MAXTAB];
for(i=0;i
TabWej[i] = ' '; //przypisuje wszedzie spacje, zeby potem wyswietlanie uporzadkowanej tablicy bylo przejrzyste
fgets(TabWej, sizeof(TabWej), stdin); //bezpieczniej niz scanf
for(i=0;i
printf("%c ", TabWej[i]);
printf("\n");
SelectionSort(MAXTAB, TabWej);
for(i=0;i
printf("%c ", TabWej[i]);
printf("\n");
system("pause");
return 0;
}
void swap(char& a, char& b) /* TUTAJ BŁĄD - moja wiedza o wskaźnikach i tablicach jest znikoma, w ogóle w C jestem NAJGORSZYM LAIKIEM - co jest nie tak i jak
{ * poprawic w ogole ta funkcje? Jej zrodlo takze (bo pewnie trzeba bedzie jakos inaczej operowac na a,b,temp*/
char temp = a;
a = b;
b = temp;
}
void SelectionSort(int n, char t[])
{
int j, k;
i = 0;
for(i=0;i
{
k=i;
for(j=i+1;j
if((int)t[j]<(int)t[k]) /* pobiera wartosc znaku ascii danego elementu tablicy */
k=j;
swap(t[k], t[i]);
}
}
A błędy są mianowicie takie:
error: syntax error before & token (6 linia)
error syntax before & token (27linia)
29 linia error ‘a’ undeclared (first use in this func)
29 error: (Each undeclared indentifier is reported only once
29: for each function it appears in.
30: b undeclared
Funkcja powinna porzadkowac ten wprowadzony ciag znakow wedlug znakow ASCII. Mam nadzieje, ze widzicie jakies oczywiste bledy czy cos, prosilbym o pomoc. Na szczescie koncowego programu dzisiaj nie musze wysylac, jednak tez jestem zainteresowany jego ulepszeniem. Nie prosze o gotowe rozwiazania, ale chociaz o porady - co przeczytac, co zmienic. Program ma byc prosty i nieskomplikowany.
Dziekuje i pozdrawiam !