Wątek przeniesiony 2014-11-17 10:24 z C/C++ przez ŁF.

Licznik a pętla for

0

Witam, problem polega na tym, że zmienna "ile" jest inkrementowana przez cały czas, przez co warunek kończący pętlę for się zmienia. W jaki sposób mogę najpierw obliczyć wartość zmiennej ile, a dopiero później kontynuować działanie programu? Dodam, że całość musi być zawarta w takiej pętli, którą prezentuję poniżej. Z góry bardzo dziękuję za jakąkolwiek pomoc.

             while(fscanf(dane,"%c",&liczba)&&liczba!=10){
			ile++;
			printf("%c",liczba);
			liczba_int=atoi(&liczba);
			for(i=1;i<=ile;i++){
				ciag2[i]=liczba_int;
				printf("(%d)",liczba_int);
			}
		}
0

Taka pętla nie ma żadnego sensu.
Pytanie też brzmi mało sensownie, może powiedz co próbujesz zrobić.

0

Muszę zamienić liczby zapisane w pliku z postaci binarnej do dziesiętnej. W tej pętli czytam plik wierszami, zapisując każdy z elementów do tablicy. Natomiast licznik "ile" ma za zadanie zliczyć ile tych elementów istnieje (znaków w danym wierszu).

0

Konwertuj na bieżąco, po kiego ci ta tablica:

int ch;
unsigned value=0;
while((ch=getchar())!=EOF)
  {
   if((ch=='0')||(ch=='1')) value=value<<1+ch-'0';
   else if(ch=='\n')
     {
      printf("%d\n",value);
      value=0;
     }
  }
0

Zadanie tego wymaga. Stąd stosuję tablicę i w całym programie jedynym problemem jest właśnie ten licznik.

0

W takim razie reprezentacja binarna liczby która może pomieścić podstawowy typ nie może przekroczyć 64 bity czyli:

char line[65];
while(fscanf(data," %64s",line)==1)
  {
   int ile=strlen(line);
  }
0

Czy w tej postaci, którą podałem nie ma szans tego poprawić? Bez używania strlen.

0

Możesz wpisywać znak po znaku (aczkolwiek jest to bez sensu). Musisz jedynie użyć stałej tablicy na maksymalny możliwy rozmiar lub bawić się w dynamiczne przydzielanie z poszerzaniem.

0

Problem jest tego typu, że gdy wpisuję dla przykładu liczbę 1111 do tablicy (po jednym znaku), to do tablicy zapisywane jest coś takiego:

t[0]=1
t[1]=11
t[2]=111
t[3]=1111

Dlaczego tak się dzieje?

dodanie znacznika <code class="c"> - @furious programming

0

Tak się dzieje dlatego że masz niepoprawny kod.
Albo zapisujesz nie po jednym znaku albo niepoprawnie wyświetlasz.
Podaj kod lub zgłoś się na forum wróżbitów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1