Skocz do zawartości

Sir

Członkowie
  • Postów

    1
  • Dołączył

  • Ostatnio

Wszystko napisane przez Sir

  1. 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
×
×
  • Utwórz nowe...