[C++][Schematy blokowe] Wczytywanie i wypisywanie liczb

Aragorn202
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 2 paź 2012, o 19:56
Płeć: Mężczyzna
Lokalizacja: Poznań

[C++][Schematy blokowe] Wczytywanie i wypisywanie liczb

Post autor: Aragorn202 »

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:)
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.
Awatar użytkownika
Althorion
Użytkownik
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

Post autor: Althorion »

Na którym etapie masz problem? Nie umiesz wczytać liczb, nie wiesz jak je przechować, jak sprawdzić podane warunki, jak wypisać?
Aragorn202
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 2 paź 2012, o 19:56
Płeć: Mężczyzna
Lokalizacja: Poznań

[C++]Program oraz schemat blokowy

Post autor: Aragorn202 »

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

}
Tyle na razie udało mi się zrobić, ale nie wiem jak ustawić, aby w tablicy dalo sie wprowadzic tylko liczbe z zakresu od 1 do 100 i żeby potem sprawdzić czy każda liczba jest liczba czy jest parzysta

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.
Awatar użytkownika
Althorion
Użytkownik
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

Post autor: Althorion »

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:

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;
}
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).
Ostatnio zmieniony 3 paź 2012, o 10:35 przez Althorion, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Aragorn202
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 2 paź 2012, o 19:56
Płeć: Mężczyzna
Lokalizacja: Poznań

[C++]Program oraz schemat blokowy

Post autor: Aragorn202 »

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;
}
tyle udało mi sie zrobić dalej, tylko jest problem bo w tym ci mi napisałeś wyskakuje błąd, a dokładniej w:

Kod: Zaznacz cały

for (int i = 0, i < 10, ++i) {
i wyświetla sie że coś nie tak z funkcją int main
Awatar użytkownika
Althorion
Użytkownik
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

Post autor: Althorion »

Program jest zapisany nieczytelnie, co praktycznie uniemożliwia analizę. Zadbaj o ładne wcięcia.

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.
Aragorn202
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 2 paź 2012, o 19:56
Płeć: Mężczyzna
Lokalizacja: Poznań

[C++]Program oraz schemat blokowy

Post autor: Aragorn202 »

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;
}
    
Udało mi sie poprawić wszystkie błędy tak że program się uruchamia, tylko po wprowadzeniu 10 znaku kończy działanie, wiem że w tej mojej części jest błąd ale nie mam już pomysłów jak go naprawić.
Awatar użytkownika
Althorion
Użytkownik
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

Post autor: Althorion »

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.
royas
Użytkownik
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

Post autor: royas »

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.
Aragorn202
Użytkownik
Użytkownik
Posty: 5
Rejestracja: 2 paź 2012, o 19:56
Płeć: Mężczyzna
Lokalizacja: Poznań

[C++][Schematy blokowe] Wczytywanie i wypisywanie liczb

Post autor: Aragorn202 »

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;
}
Awatar użytkownika
Althorion
Użytkownik
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++][Schematy blokowe] Wczytywanie i wypisywanie liczb

Post autor: Althorion »

Program ten wczytuje wszystkie liczby, nie tylko te dodatnie mniejsze od stu.
ODPOWIEDZ