Liczba w odwrotnej kolejności.

0
 
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int tabCyfr[1000];
	int i=0;
	int j;
	printf("Jeli chcesz zakonczyc podawanie cyfr Twojej liczby, wpisz -1\n");
	while(tabCyfr[i] != -1)
	{
		i++;
		printf("\nPodaj pierwsza cyfre swojej liczby naturalnej: ");
		scanf("%d", &tabCyfr[i]);	
	}
	printf("Twoja liczba to: %d");
	
	for(j=0; j<i; j++)
	{
		printf("%d", tabCyfr[i]);
	}

	printf("\nTwoja liczba w odwrotnej kolejnosci to: %d", i);
	for(j=i; j>=0; j--)
	{
		printf("%d", tabCyfr[i]);
	}
	printf("\n");
	system("PAUSE");
	return 0;
}

Dlaczego program wypisuje jakieś dziwne wyniki ? Mógłby ktoś poprawić ?

0

Dlaczego program wypisuje jakieś dziwne wyniki ?
Bo robi jakieś dziwne rzeczy. Zdecyduj się, czy wczytujesz liczby, czy cyfry.
Indeksowanie tablic (granice indeksów) kompletnie pomieszane.

0

w pierwszej pętli zmienną "i" powinieneś inkrementować na samym końcu pętli while ponieważ do pierwszego elementu nie zostanie wpisana żadna wartość.

0

A w drugiej i trzeciej pętli powinno być "tabCyfr[j]", a nie "tabCyfr[i]".

1

Zaś tu:
printf("Twoja liczba to: %d");
Wyświetlasz jakieś śmieci ze stosu.

0

Poprawiłem trochę:

 
#include <stdio.h>
#include <stdlib.h>

int main()
{
	int tabCyfr[1000];
	int i;
	int j;
	printf("Jeli chcesz zakonczyc podawanie cyfr Twojej liczby, wpisz -1\n");
	i=0;
	do
	{
		printf("\nPodaj pierwsza cyfre swojej liczby naturalnej: ");
		scanf("%d", &tabCyfr[i]);	
		i++;
	}while(tabCyfr[i] != -1);
	printf("Twoja liczba to: ");
	
	for(j=0; j<i; j++)
	{
		printf("%d", tabCyfr[i]);
	}

	printf("\nTwoja liczba w odwrotnej kolejnosci to: ");
	for(j=i; j>=0; j--)
	{
		printf("%d", tabCyfr[i]);
	}
	printf("\n");
	system("PAUSE");
	return 0;
}

Ale teraz program się nie przerywa jak wpisze -1

0

Czy przypadkiem nie to próbujesz zrealizować?

#include <stdio.h>
 
int main()
  {
   unsigned x;
   printf("Podaj liczbe: ");
   if(scanf("%u",&x)==1)
     {
      printf("Podales liczbe: %d w odwrotnej kolejnosci: ",x);
      do { printf("%c",'0'+x%10); x/=10; } while(x);
      printf("\n");
     }
   else printf("niepoprawne wprowadzenie liczby\n");
   while(getchar()!='\n') {}
   getchar();
   return 0;
  }
0

_13th_Dragon
dokładnie to próbowałem osiągnąć. Mam kilka pytań odnośnie Twojego kodu, napisałem je w komentarzach.

#include <stdio.h>

int main()
  {
   unsigned x;
   printf("Podaj liczbe: ");
   if(scanf("%u",&x)==1) //co oznacza ten warunek
     {
      printf("Podales liczbe: %d w odwrotnej kolejnosci: ",x);
      do { printf("%c",'0'+x%10); x/=10; } while(x); //wyświetlamy reszty z dzielenia przez 10
      printf("\n");
     }
   else printf("niepoprawne wprowadzenie liczby\n");
   while(getchar()!='\n') {} //po co tutaj ta pusta pętla ??
   getchar();
   return 0;
  }

 

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