x-kom hosting

[C++] Program zwracający z tablicy cyfry o parzystych liczbach

kuuba2
utworzono
utworzono

Witam, niestety moja wiedza na temat C++ jest bardzo mała, dlatego zwracam się do kogoś z prośbą o 'naprawę' tego kodu, aby program działał poprawnie. Dziękuję bardzo za pomoc.

[code]
#include<iostream.h>
#include<stdlib.h>

using namespace std;

int n, x, y, t, i;
int ilosc=20;
int A[20];
char z;


int main()
{
do
{
cout<<"Ile liczb chcesz wprowadzić? (liczba musi byc <="<<ilosc<<")<<endl;
cin>>n;
}
while (n>ilosc)
{
cout<<"Podana ilosc nie spełnia warunku. Wprowadź nową wartość: ";
cin>>n;
}


cout<<"Czy chcesz aby liczby zostały wprowadzone losowo? (T - tak) : ";
cin>>z;
cout<<endl;


if(z=='T' || z=='t')
{
for(i=0; i<n; i++) A[i]=rand();
}
else
{
for(i=0; i<n; i++)
{
cout<<"Wprowadz "<<i+1<<" liczbe: ";
cin>>A[i];
}
}

cout<<"Wprowadzone liczby to : ";
for(i=0; i<n; i++) cout<<A[i]<<", ";

cout<<endl<<"Liczby ze wszystkimi cyframi parzystymi to: ";

x1=0;

for(i=0;i<n;i++)
{
y=A[i]
for(t=0;t<10;t++)
{
if(y%2==0)
x++;
else
x=0;
y=A[i]/10;
}
}

return 0;
}
[/code]

wojtex5
komentarz
komentarz

poprawiłem kod.
poprawki i uwagi wrzuciłem w komentarze
[code]#include<iostream>
#include<stdlib.h>

using namespace std;

int n, x, y, t, i;
int ilosc=20;
int A[20];
char z;


int main()
{
do
{
cout<<"Ile liczb chcesz wprowadzić? (liczba musi byc <="<<ilosc<<")"<<endl; //tu był błąd składni - brakowało zamknięcia cudzysłowia po ")".
if(n>ilosc) cout<<"Podana ilosc nie spełnia warunku. Wprowadź nową wartość: ";
cin>>n;
} while (n>ilosc);

/*pętla do...while składa się z:
słowa "do", instrukcji, słowa "while" i warunku - nie ma nic ponad to - czyli nie możesz dodać kolejnych instrukcji po słowie while.

prawdopodobnie pomyliło ci się z pętlą "while" - tu jest tylko słowo "while", warunek w nawiasach i instrukcje w klamrach, gdy są konieczne
*/


cout<<"Czy chcesz aby liczby zostały wprowadzone losowo? (T - tak) : ";
cin>>z;
cout<<endl;


if(z=='T' || z=='t')
{
for(i=0; i<n; i++) A[i]=rand();
}
else
{
for(i=0; i<n; i++)
{
cout<<"Wprowadz "<<i+1<<" liczbe: ";
cin>>A[i];
}
}

cout<<"Wprowadzone liczby to : ";
for(i=0; i<n; i++) cout<<A[i]<<", ";

cout<<endl<<"Liczby ze wszystkimi cyframi parzystymi to: ";

x=0; //tu miałeś błąd składni - próbowałeś ustawić x1 - a takiej zmiennej nie ma (nie zadeklarowałeś jej);
bool czy_parzysta=true; // do sprawdzania możesz używać wartości logicznych - czyli boolean (true/false) albo ewentualnie liczb - dzisiejsze procesory szybciej operują na liczbach niż na boolach;
for(i=0;i<n;i++)
{
czy_parzysta=true; //przyjmujesz że każda liczba z tablicy ma parzyste cyfry.
y=A[i];
for(t=0;t<10;t++)
{
if(y%2!=0) //sprawdzasz czy cyfra NIE jest parzysta - patrz wartość początkową zmiennej czy_parzysta - true
{czy_parzysta=false;break;} // jeśli cyfra NIE jest parzysta to ustawiasz czy_parzysta na false i kończysz pętlę, bo już więcej nie musisz sprawdzać - wystarczy że jedna cyfra jest nieparzysta.
else
y/=10; //podziel przez 10 i przypisz - przechodzisz do kolejnej cyfry.
}
if(czy_parzysta==true) cout<<A[i]<<" "; //jeśli liczba ma wszystkie parzyste cyfry to ją wyświetla.
}
system("pause"); // pauza, żeby zobaczyć wyniki.
return 0;
}
[/code]

  • 3 tygodnie później...
kuuba2
komentarz
komentarz (edytowane)

Wielkie dzięki! Działa idealnie!

Z takim pytaniem i prośbą, czy potrafiłby ktoś przerobić ten program tak, aby dane były wprowadzane do tablicy za pomocą wskaźnika?

wojtex5
komentarz
komentarz

po przerobieniu program wygląda tak: [code]#include<iostream>
#include<stdlib.h>

using namespace std;

int n, x, y, t, i;
int ilosc=20;
int A[20];
char z;
int*liczba; //deklaracja wskaźnika na liczbę typu int

int main()
{
do
{
cout<<"Ile liczb chcesz wprowadzić? (liczba musi byc <="<<ilosc<<")"<<endl; //tu był błąd składni - brakowało zamknięcia cudzysłowia po ")".
if(n>ilosc) cout<<"Podana ilosc nie spełnia warunku. Wprowadź nową wartość: ";
cin>>n;
} while (n>ilosc);


cout<<"Czy chcesz aby liczby zostały wprowadzone losowo? (T - tak) : ";
cin>>z;
cout<<endl;
if(z=='T' || z=='t')
{
for(i=0; i<n; i++)
{
liczba=&A[i]; //pobranie do wskaźnika adresu aktualnego elementu tablicy A
*liczba=rand(); //wylosowanie wartości i wstawienie jej do komórki zaadresowanej przez wskaźnik liczba
}
}
else
{
for(i=0; i<n; i++)
{
liczba=&A[i]; //pobranie do wskaźnika adresu aktualnego elementu tablicy A
cout<<"Wprowadz "<<i+1<<" liczbe: ";
cin>>*liczba;//pobranie wartości z klawiatury i wstawienie jej do komórki zaadresowanej przez wskaźnik liczba
}
}

cout<<"Wprowadzone liczby to : ";
for(i=0; i<n; i++) cout<<A[i]<<", ";

cout<<endl<<"Liczby ze wszystkimi cyframi parzystymi to: ";

x=0; //tu miałeś błąd składni - próbowałeś ustawić x1 - a takiej zmiennej nie ma (nie zadeklarowałeś jej);
bool czy_parzysta=true; // do sprawdzania możesz używać wartości logicznych - czyli boolean (true/false) albo ewentualnie liczb - dzisiejsze procesory szybciej operują na liczbach niż na boolach;
for(i=0;i<n;i++)
{
czy_parzysta=true; //przyjmujesz że każda liczba z tablicy ma parzyste cyfry.
y=A[i];
for(t=0;t<10;t++)
{
if(y%2!=0) //sprawdzasz czy cyfra NIE jest parzysta - patrz wartość początkową zmiennej czy_parzysta - true
{czy_parzysta=false;break;} // jeśli cyfra NIE jest parzysta to ustawiasz czy_parzysta na false i kończysz pętlę, bo już więcej nie musisz sprawdzać - wystarczy że jedna cyfra jest nieparzysta.
else
y/=10; //podziel przez 10 i przypisz - przechodzisz do kolejnej cyfry.
}
if(czy_parzysta==true) cout<<A[i]<<" "; //jeśli liczba ma wszystkie parzyste cyfry to ją wyświetla.
}
system("pause"); // pauza, żeby zobaczyć wyniki.
return 0;
}
[/code]

najpierw deklarujesz wskaźnik na liczbę typu int.
później przy każdym obrocie pętli pobierany jest adres komórki pamięci i-tego elementu tablicy.
i do tej komórki wstawiana jest wartość pobrana z klawiatury.

  • 3 tygodnie później...
kuuba2
komentarz
komentarz (edytowane)

zakończone

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.