Sir Napisano Sierpień 14, 2021 Zgłoś Udostępnij Napisano Sierpień 14, 2021 Aplikacja z grubsza pobiera dowolną ilość dowolnych dany do dynamicznie zarządzanej tablicy wykorzystującej wskaźniki/pointer-y. Potem obraca tablicę i wypisuje. Chciałbym zaimplementować funkcję „odwróć“ w tym kodzie. Jest aktualnie zakomentowana, abyście mogli skompilować kod. Program teraz działa po zaaplikowaniu alternatywy, więc można go odpalić i ogarnąć szybko koncepcję. A potem przerobić... oczywiście, aby rozwiązać problem. #include <stdio.h> #include <stdlib.h> #include <limits.h> #include <string.h> #define int unsigned short int #define MAX_STR_LEN 1024*1024 //MB /*char** odwroc(char** pptr,int n){ char *p; for (int i= 0, j=n-1; i<j; j=n-++i-1) p= *(pptr+i); *(pptr+i)= *(pptr+j) *(pptr+j)= p; } return pptr; }*/ main(){ int n; printf("Ile wartosci chcesz wpisac do tablicy? "); scanf("%hu", &n); getchar(); system("cls"); char *tablica[n]; printf("Wypisz %hu wartosci dowolnego typu. Zatwierdz kazda wciskajac ENTER.\n",n); //Wczytywanie for (int i=0;i<n;i++){ //Pobieranie printf("%4hu: ",i+1); char str[MAX_STR_LEN]; int strLen; for (strLen= 0; strLen<MAX_STR_LEN; strLen++){ char c= getchar(); //Analiza c if (c=='\n' || c==EOF){ str[strLen]= '\0'; strLen++; break; } str[strLen]= c; } //Dodawanie tablica[i]= new char[strLen]; strcpy(tablica[i],str); } puts("\nOdwracam twoja tablice."); //! odwroc(tablica, n); char *p; for (int i= 0, j=n-1; i<j; j=n-++i-1){ ///printf("Zamieniam '%s' z '%s'.\n", tablica[i],tablica[j]); p= tablica[i]; tablica[i]= tablica[j]; tablica[j]= p; } puts("Oto zawartosc twojej tablicy:"); //Odczytywanie for (int i= 0; i<n; i++){ printf("%4hu: ",i+1); puts(tablica[i]); } printf("\n\nNacisnij ENTER aby zakonczyc prace programu."); getchar(); return 0; } Możliwe że nie rozumiem mechaniki pointer-to-pointer. Po skompilowaniu wersji z odkomentowaną funkcją „odwróć“ przy pomocy MinGW 9.2.0 program zwraca 4 błedy w: pptr problem.cpp: In function 'char** odwroc(char**, short unsigned int)': pptr problem.cpp:13:10: error: 'i' was not declared in this scope 13 | *(pptr+i)= *(pptr+j) | ^ pptr problem.cpp:13:21: error: 'j' was not declared in this scope 13 | *(pptr+i)= *(pptr+j) | ^ pptr problem.cpp:15:2: warning: no return statement in function returning non-void [-Wreturn-type] 15 | } | ^ pptr problem.cpp: At global scope: pptr problem.cpp:17:2: error: expected unqualified-id before 'return' 17 | return pptr; | ^~~~~~ pptr problem.cpp:18:1: error: expected declaration before '}' token 18 | } | ^ Proszę o pomoc (wskazówka, link do odpowiedzi). You can write in English. a.exe Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.