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

Licznik a pętla for

2014-11-17 01:42

Rejestracja: 7 lat temu

Ostatnio: 5 lat temu

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);
            }
        }
edytowany 1x, ostatnio: Kadobe, 2014-11-17 01:42

Pozostało 580 znaków

2014-11-17 01:52

Rejestracja: 14 lat temu

Ostatnio: 2 minuty temu

0

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


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-11-17 01:57

Rejestracja: 7 lat temu

Ostatnio: 5 lat temu

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).

Pozostało 580 znaków

2014-11-17 02:07

Rejestracja: 14 lat temu

Ostatnio: 2 minuty temu

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;
     }
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2014-11-17 02:07

Pozostało 580 znaków

2014-11-17 02:10

Rejestracja: 7 lat temu

Ostatnio: 5 lat temu

0

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

Pozostało 580 znaków

2014-11-17 02:14

Rejestracja: 14 lat temu

Ostatnio: 2 minuty temu

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);
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-11-17 12:46

Rejestracja: 7 lat temu

Ostatnio: 5 lat temu

0

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

Pozostało 580 znaków

2014-11-17 13:04

Rejestracja: 14 lat temu

Ostatnio: 2 minuty temu

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.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Pozostało 580 znaków

2014-11-17 13:10

Rejestracja: 7 lat temu

Ostatnio: 5 lat temu

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

edytowany 1x, ostatnio: furious programming, 2014-11-17 17:22

Pozostało 580 znaków

2014-11-17 13:52

Rejestracja: 14 lat temu

Ostatnio: 2 minuty temu

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.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon, 2014-11-17 17:24
To dlatego już z 10 razy poprawiałeś, może tym razem będzie skuteczniej :D - _13th_Dragon 2014-11-17 17:26
Sporo ludzi zapomina pisać ten wyraz razem, dlatego trzeba im czasem przypomnieć ;) - furious programming 2014-11-17 17:27
Osobiście poprawiałeś zamiast przypomnieć, może dlatego tym razem może zadziałać ;P - _13th_Dragon 2014-11-17 17:30

Pozostało 580 znaków

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