Skocz do zawartości
Ishikawa

[c++].wczytanie Paru Zmiennych W Jednym Wierszu

Rekomendowane odpowiedzi

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

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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]

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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ł!

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

#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 przez whiller

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

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;

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...