pliki, funkcje, wskaźniki
Ostatnio zmodyfikowano 2017-06-21 15:39
rafalkoterski Temat założony przez niniejszego użytkownika |
pliki, funkcje, wskaźniki » 2017-06-20 20:19:41 prosze o sprawdzenie moich odpowiedzi co do poniższych zadań, z góry dzieki Takie zadania: 1) W pliku nietekstowym jest zapisane 8 liczb, od poczatku odczytano 3 liczby a nastepnie przesunieto wskaźnik o 2 liczby do przodu wzgledem aktualnej pozycji. Ile mozna jeszcze wykonac pojedynczycch operacji odczytu aby eof pozostał ustawiony na 0 ? Moja odpowiedz to 2 takie pojedyncze operacje. dobrze ?
2)Dana jest macierz A[10][20]. Przekaż przedostatni wiersze tej macierzy do funkcji, jako aktualny parametr. Funkcja: void fun(int*wektor). Moja odpowiedź: fun(&A[8]). Dobrze to jeest?
3) Wyzerować drugi element pierwszego składnika zmiennej y. struct str{ float s1[20]; int s2; }; str y;
Moja odpowiedź: y.s1[1]=0.
4) Fragment programu: float a[10][20] for(i=0;i<10;i++) A[i][20]=0 Należy zmienić nawiasy [] na ().
To czwarte zadanie wydaje mi sie troche głupie i nie za bardzo wiem co mam tu zrobić.[/i] |
|
maly7 |
» 2017-06-21 02:05:02 2. Powinno być fun(A[8]). Nazwa tablicy wskazuje na jej pierwszy element, więc A[8] wskazuje na A[8][0]. 3. Raczej dobrze :D 4. Żeby usunąć [] można zrobić np. tak: for( i = 0; i < 10; i++ ) *( *( a + i ) + 19 ) = 0; W podanym kodzie (pomijając, że nazwy tablic się nie zgadzają), 20. element leży poza tablicą, więc nie można się do niego dobrać. Myślę, że chodziło o 19 :D |
|
carlosmay |
» 2017-06-21 02:58:14 1. 3 razy. EOF nie ustawia się na jeden gdy odczyt dojedzie do końca pliku, tylko gdy już jesteśmy na końcu i próbujemy coś jeszcze odczytać. |
|
rafalkoterski Temat założony przez niniejszego użytkownika |
» 2017-06-21 14:43:46 dlaczego napisałeś że w zadnaiu drugim powinno być bez znaku "&" ? |
|
maly7 |
» 2017-06-21 15:39:12 Bo jeśli użyjesz znaku & przy nazwie jakiejś zmiennej to dostaniesz adres tej zmiennej, nazwa tablicy sama w sobie jest adresem pierwszego elementu. Np: int a = 5;
int a[ 5 ];
int a[ 5 ];
int b[ 5 ][ 5 ];
Jeśli podajesz element musisz użyć &, w innym wypadku nie. To samo tyczy się tablic dwuwymiarowych. Najlepszym sposobem na sprawdzenie działania to napisanie sobie jakiegoś prostego kodu i go przetestowanie. Wystarczy skompilować coś takiego: int a[ 5 ][ 5 ]; fun( & a[ 5 ] ); I otrzymasz taki warning: main.cpp: 14: 12: error: cannot convert ‘ int( * )[ 5 ] ’ to ‘ int * ’ for argument ‘ 1 ’ to ‘ void fun( int * ) ’ fun( & a[ 5 ] );
|
|
« 1 » |