Ishikawa Opublikowano 25 Grudnia 2005 Zgłoś Opublikowano 25 Grudnia 2005 no więc mam tablice dynamiczna i w zaleznosci od jej rozmiaru, chce wczytac do niej w programie dana ilosc zmiennych! Z tym ze: -zmienne te, to liczby -wpisywane sa w jednym wierszu, oddzielone spacjami juz mnie cholera bierze! Probowalem z getch(), ale to nie dziala na liczby, szukalem w necie, nie ma nic! Kompletnie! Prosilbym o pomoc Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kfgz Opublikowano 25 Grudnia 2005 Zgłoś Opublikowano 25 Grudnia 2005 Nie jestem do końca pewien ale przy dynamicznej tablicy, wczytanie do niej zmiennych w jednym wierszu jest niewykonalne. Najprościej będzie jak to zrobisz w pętli np. for z użyciem cin lub scanf. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Ishikawa Opublikowano 25 Grudnia 2005 Zgłoś Opublikowano 25 Grudnia 2005 No ale w tym rzecz, ze nie moge tego zrobic, bo cin i scanf wymagaja entera do zatwierdzenia kazdej zmiennej po kolei chyba ze znam ilosc zmiennych z gory a niestety tak nie jest. Chodzi o to, ze najpierw podaje rozmiar tablicy potem wartosc kazdego jej elementu po kolei oddzielone spacja, np. rozmiar:4, elementy: 1 2 3 4[enter] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
kfgz Opublikowano 25 Grudnia 2005 Zgłoś Opublikowano 25 Grudnia 2005 Możesz pobrać jedną zmienną typu char w której liczby byłyby rozdzielone np. przecinkami a następnie rozdzielić ten łańcuch na zmienne. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Ishikawa Opublikowano 25 Grudnia 2005 Zgłoś Opublikowano 25 Grudnia 2005 :/ mmm, dzięki za sugestie ale mało przekonywujące rozwiązanie... może ktoś, zna jakiś inny sposób? Przydałoby się, żeby to było za pomocą standardowych bibliotek chociaż niekoniecznie... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Mujahideen Opublikowano 25 Grudnia 2005 Zgłoś Opublikowano 25 Grudnia 2005 Nie mam pojęcia co to jest tablica dynamiczna i czy Ci o to chodzi co poniżej napiszę, ale jeśli chodzi o wczytywanie liczb w jednym wierszu to można to zrobić tak: #include <stdio.h>#include <conio.h>main(){ int a,b,c,d; printf("\n Podaj cztery liczby (oddziel je spacjami):\n "); scanf("%d %d %d %d",&a,&b,&c,&d); printf("\n Wczytales nastepujace liczby:\n %d %d %d %d",a,b,c,d); getch(); return 0;} Teraz to odnosząc do twojej treści można to troche głupio wykonać w oparciu o instrukcję warunkową switch: #include <stdio.h>#include <conio.h>main(){ int a[5],i,n; printf("\n Podaj ilosc elementow tablicy (od 1 do 5):\n "); scanf("%d",&n); switch(n) { case 1: printf("\n Podaj element tablicy a[0]:\n "); scanf("%d",&a[0]); break; case 2: printf("\n Podaj elementy tablicy (oddziel je spacjami): a[0] a[1]:\n "); scanf("%d %d",&a[0],&a[1]); break; case 3: printf("\n Podaj elementy tablicy (oddziel je spacjami): a[0] a[1] a[2]:\n "); scanf("%d %d %d",&a[0],&a[1],&a[2]); break; case 4: printf("\n Podaj elementy tablicy (oddziel je spacjami): a[0] a[1] a[2] a[3]:\n "); scanf("%d %d %d %d",&a[0],&a[1],&a[2],&a[3]); break; case 5: printf("\n Podaj elementy tablicy (oddziel je spacjami): a[0] a[1] a[2] a[3] a[4]:\n "); scanf("%d %d %d %d %d",&a[0],&a[1],&a[2],&a[3],&a[4]); break; default: printf("\n Wczytales niepoprawna ilosc elementow tablicy a!"); } if(n>=1&&n<=5) for(i=0;i<n;i++) printf("\n a[%d] = %d",i,a[i]); getch(); return 0;} Takie to mi się nasunęło rozwiązanie, joł! Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
whiller Opublikowano 26 Grudnia 2005 Zgłoś Opublikowano 26 Grudnia 2005 (edytowane) #include <stdio.h>#include <string.h>voidwytnij(char *ciag, int *tablica){ char odstepy[] = " "; //mozna podac wieksza ilosc spearatorow np. \t itd. int i = 0; char *element; for(element = strtok( ciag , odstepy ); element != NULL; // taki dluzszy for =] element = strtok ( NULL , odstepy )) { tablica[i] = atoi(element); // konwersja stringa na integer i++; }}intmain(){ char ciag[50]; // zakladam ze nie bedzie wiecej niz 200 znakow :P int i , ilosc; int *tablica; printf("Podaj ilosc elementow : "); scanf("%d",&ilosc); getchar(); // do czyszczenia buforka tablica = (int *) malloc( ilosc * sizeof(int) ); // dynamiczna alokacja pamieci :) printf("Podaj ciag liczb oddzielonych spacjami : "); gets(ciag); // zczytanie stringa z liczbami wytnij(ciag,tablica); getchar(); free(tablica);return 0;} Program nie ma zadnych zabezpieczen, ale dziala jako tako. O funkcji strtok znalazlem w pewnej ksiazeczce i tego fora przepisalem, niedokladnie wiem do konca o co w nim biega, a dokladnie nie rozumiem tego element = strtok ( NULL , odstepy ). Sama funkcja strtok wycina z ciagu elementy oddzielone separatorami :). Ja zawsze sie meczylem samemu piszac do tego funkcje, przelatujac przez tablice w poszukiwaniu spacji itd. itd. ... Tak wiec, jak ktos moglby mi dokladnie objasnic jak ten for dziala to bylbym wdzieczny :) pozd. Edytowane 26 Grudnia 2005 przez whiller Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
hary Opublikowano 26 Grudnia 2005 Zgłoś Opublikowano 26 Grudnia 2005 Nie mam pojęcia co to jest tablica dynamiczna i czy Ci o to chodzi co poniżej napiszę, ale jeśli chodzi o wczytywanie liczb w jednym wierszu to można to zrobić tak: Tablica dynamiczna to taka ktorej wielkosc wprowadza sie podczas dzialania programu. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Svisstack Opublikowano 1 Stycznia 2006 Zgłoś Opublikowano 1 Stycznia 2006 int z[???]; void wczytaj(int ilosc_zmiennych) { for(int i=0;i<ilosc_zmiennych;i++) { scanf("%d ", &z); } return; } mam nadzieje ze o to CI chodzi:) przykladowo jak wywolasz funckcje z zmiena ilosc_zmiennch==100 to dokladnie wczyta 100 zmiennych w tablicy z od 0 do 99; Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...