[C++][Schematy blokowe] Wczytywanie i wypisywanie liczb
-
- Użytkownik
- Posty: 5
- Rejestracja: 2 paź 2012, o 19:56
- Płeć: Mężczyzna
- Lokalizacja: Poznań
[C++][Schematy blokowe] Wczytywanie i wypisywanie liczb
Witam, potrzebuję pilnie pomocy, mam bardzo ważne zadanie domowe na programowanie do szkoły, nauczyciel się trochę wkurzył i na czwartek muszę przynieść gotowy program, zadanie brzmi:
Napisać algorytm w postaci schematu blokowego oraz kod programu w języku C++ który czyta z klawiatury liczby z zakresu od 1 do 100, sprawdzi czy są to liczby parzyste oraz wyświetli w odwrotnej kolejności tylko liczby nieparzyste większe od 30, liczby należy oddzielić myślnikiem.
Wiem że dosyć nakombinowanie ale będę bardzo wdzięczny za pomoc:)
Napisać algorytm w postaci schematu blokowego oraz kod programu w języku C++ który czyta z klawiatury liczby z zakresu od 1 do 100, sprawdzi czy są to liczby parzyste oraz wyświetli w odwrotnej kolejności tylko liczby nieparzyste większe od 30, liczby należy oddzielić myślnikiem.
Wiem że dosyć nakombinowanie ale będę bardzo wdzięczny za pomoc:)
Ostatnio zmieniony 3 paź 2012, o 13:15 przez Afish, łącznie zmieniany 1 raz.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
Powód: Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
- Althorion
- Użytkownik
- Posty: 4541
- Rejestracja: 5 kwie 2009, o 18:54
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Podziękował: 9 razy
- Pomógł: 662 razy
[C++]Program oraz schemat blokowy
Na którym etapie masz problem? Nie umiesz wczytać liczb, nie wiesz jak je przechować, jak sprawdzić podane warunki, jak wypisać?
-
- Użytkownik
- Posty: 5
- Rejestracja: 2 paź 2012, o 19:56
- Płeć: Mężczyzna
- Lokalizacja: Poznań
[C++]Program oraz schemat blokowy
Kod: Zaznacz cały
#include <iostream.h>
#include <conio.h>
main()
{
int liczby[10];
cout<<"Podaj pierwsza liczbe:";
cin>>liczby[0];
cout<<"Podaj druga liczbe:";
cin>>liczby[1];
cout<<"Podaj trzecia liczbe:";
cin>>liczby[2];
cout<<"Podaj czwarta liczbe:";
cin>>liczby[3];
cout<<"Podaj piata liczbe:";
cin>>liczby[4];
cout<<"Podaj szosta liczbe:";
cin>>liczby[5];
cout<<"Podaj siodma liczbe:";
cin>>liczby[6];
cout<<"Podaj osma liczbe:";
cin>>liczby[7];
cout<<"Podaj dziewiata liczbe:";
cin>>liczby[8];
cout<<"Podaj dziesiata liczbe:";
cin>>liczby[9];
getch();
}
if (liczba[0]%2==0)
to jest chyba do sprawdzenia parzystości ale nie umiem tego zastosować
Ostatnio zmieniony 2 paź 2012, o 20:38 przez Althorion, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Powód: Poprawa wiadomości.
- Althorion
- Użytkownik
- Posty: 4541
- Rejestracja: 5 kwie 2009, o 18:54
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Podziękował: 9 razy
- Pomógł: 662 razy
[C++]Program oraz schemat blokowy
1. Jak widzę conio.h, to coś we mnie umiera…
2. Wiesz z góry, że będziesz wczytywać dziesięć liczb?
3. Kod to pomieszanie z poplątaniem, dokładniej — krzyżówka C (brak typu dla funkcji czy returna) z C++ (streamy). Nie stosujesz przestrzeni nazw (co jest konieczne tak od 1989 roku jeśli dobrze pamiętam). Jest w ogóle jakikolwiek kompilator który to przełknie?
4. Chciało Ci się dziesięć razy to samo kopiować?
Zacznijmy więc od podstaw, wczytywania danych:
Po tym będziesz miał w pamięci dziesięcioelementową tablicę z liczbami podanymi od użytkownika. To, co Ci zostało do zrobienia to przejrzeć ją w pętli od tyłu (tak jak każą w zadaniu) i za każdym razem, gdy liczba będzie nieparzysta (1 == tablica % 2) oraz większa od 30 wyświetlasz myślnik i tę liczbę. Możesz postarać się, żeby przy pierwszym wyświetleniu nie pokazywać myślnika (np. zapamiętując ten fakt w osobnej zmiennej typu bool).
2. Wiesz z góry, że będziesz wczytywać dziesięć liczb?
3. Kod to pomieszanie z poplątaniem, dokładniej — krzyżówka C (brak typu dla funkcji czy returna) z C++ (streamy). Nie stosujesz przestrzeni nazw (co jest konieczne tak od 1989 roku jeśli dobrze pamiętam). Jest w ogóle jakikolwiek kompilator który to przełknie?
4. Chciało Ci się dziesięć razy to samo kopiować?
Zacznijmy więc od podstaw, wczytywania danych:
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main() {
int tablica[10];
for (int i = 0; i < 10; ++i) {
cout << "Podaj " << (i+1) << ". liczbe ";
cin >> tablica[i];
while (tablica[i] < 0 || tablica[i] > 100) {
cout << "Podales zle dane! Podaj " << (i+1) << ". liczbe ";
cin >> tablica[i];
}
}
return 0;
}
Ostatnio zmieniony 3 paź 2012, o 10:35 przez Althorion, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Powód: Poprawa wiadomości.
-
- Użytkownik
- Posty: 5
- Rejestracja: 2 paź 2012, o 19:56
- Płeć: Mężczyzna
- Lokalizacja: Poznań
[C++]Program oraz schemat blokowy
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main() {
int tablica[10];
for (int i = 0, i < 10, ++i) {
cout << "Podaj " << (i+1) << ". liczbe ";
cin >> tablica[i];
while (tablica[i] < 0 || tablica[i] > 100) {
cout << "Podales zle dane! Podaj " << (i+1) << ". liczbe ";
cin << tablica[i];
}
if (tablica[i] <0 || tablica[i] > 30) %2==0){
cout << tablica[9] << " " << tablica[0] << endl;
}else{
cout << "Brak liczb";
}
}
return 0;
}
Kod: Zaznacz cały
for (int i = 0, i < 10, ++i) {
- Althorion
- Użytkownik
- Posty: 4541
- Rejestracja: 5 kwie 2009, o 18:54
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Podziękował: 9 razy
- Pomógł: 662 razy
[C++]Program oraz schemat blokowy
Program jest zapisany nieczytelnie, co praktycznie uniemożliwia analizę. Zadbaj o ładne wcięcia.
Nonsensowny warunek, zarówno składniowo, jak i logicznie.
Dlaczego akurat te elementy?
Tamta linijka jest faktycznie błędna, miały być średniki, nie przecinki . Szkolny błąd.
if (tablica[i] <0 || tablica[i] > 30) %2==0){
Nonsensowny warunek, zarówno składniowo, jak i logicznie.
cout << tablica[9] << " " << tablica[0] << endl;
Dlaczego akurat te elementy?
Tamta linijka jest faktycznie błędna, miały być średniki, nie przecinki . Szkolny błąd.
-
- Użytkownik
- Posty: 5
- Rejestracja: 2 paź 2012, o 19:56
- Płeć: Mężczyzna
- Lokalizacja: Poznań
[C++]Program oraz schemat blokowy
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main() {
int tablica[10];
for (int i = 0; i < 10; ++i) {
cout << "Podaj " << (i+1) << ". liczbe ";
cin >> tablica[i];
while (tablica[i] < 0 || tablica[i] > 100) {
cout << "Podales zle dane! Podaj " << (i+1) << ". liczbe ";
cin >> tablica[i];
}
if (tablica[i]%2==1){
cout << tablica[i] << endl;
}else{
cout << "liczba parzysta";
}
}
return 0;
}
- Althorion
- Użytkownik
- Posty: 4541
- Rejestracja: 5 kwie 2009, o 18:54
- Płeć: Mężczyzna
- Lokalizacja: Wrocław
- Podziękował: 9 razy
- Pomógł: 662 razy
[C++]Program oraz schemat blokowy
Weź mój kod. Po tamtej pętli, a przed returnem, zrób drugą, od końca tablicy do początku, tak jak pisałem. Wewnątrz niej sprawdzaj konieczne warunki i wtedy wyświetlaj.
-
- Użytkownik
- Posty: 363
- Rejestracja: 24 sie 2012, o 09:27
- Płeć: Mężczyzna
- Lokalizacja: Cieszyn
- Pomógł: 80 razy
[C++]Program oraz schemat blokowy
To może jeszcze małe wyjaśnienie, bo widzę, że masz problem z ogólnym zarysem programu. Cała pętla for w kodzie Althoriona realizuje całe wczytywanie danych. To co Ci zostaje to sprawdzenie i wypisanie, ale to musisz robić już po wczytaniu, więc nie dodawaj już nic do tej pętli for, tylko za nią zrób nową przeglądającą wczytane dane.
-
- Użytkownik
- Posty: 5
- Rejestracja: 2 paź 2012, o 19:56
- Płeć: Mężczyzna
- Lokalizacja: Poznań
[C++][Schematy blokowe] Wczytywanie i wypisywanie liczb
dziękuje wszystkim za pomoc, na szczęście zrobiliśmy ten program na lekcji, tak dla jasności kod działającego programu to:
Kod: Zaznacz cały
#include <iostream>
#include <conio.h>
#include <cstdlib>
using namespace std;
int main(){
int k,x;
int t[10];
for (k=0; k<10; k++) {
cin >>x;
t[k]=x;
}
for (k=0; k<10; k++){
if (t[k]%2>0){
if ( t[k]>30){
cout<<t[k];
}
}
}
return 0;
}