kuuba2 utworzono 2 grudnia 2010 utworzono 2 grudnia 2010 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 2 grudnia 2010 komentarz 2 grudnia 2010 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]
kuuba2 komentarz 18 grudnia 2010 Autor komentarz 18 grudnia 2010 (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 18 grudnia 2010 komentarz 18 grudnia 2010 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.
Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!
Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.