• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wczytywanie n liczb użytkownika do tablicy

Object Storage Arubacloud
0 głosów
4,426 wizyt
pytanie zadane 4 kwietnia 2019 w C i C++ przez abcd Początkujący (290 p.)
#include <iostream>
#include <conio.h>
#include <math.h>
#include <climits>
using namespace std;

int tab[100];
int n;
int main() {
cout<<"Witaj, podaj n liczb, a ja wyznacze ich wartosc max "<<endl<<endl;
for (int i=0; i<100; i++) {
	cout<<"Podaj "<<(i+1)<<" liczbe: ";
cin>>tab[i];
}

getchar();
return 0;
}

Program ma za zadanie wczytać n liczb podanych przez użytkownika do tablicy. Pętla działa, użytkownik może wpisywać liczby, ale jak zapisać w kodzie to żeby użytkownik mógł zakończyć działanie pętli? Czyli wpisze np. 6 liczb, bo tyle chce wpisać i koniec, o więcej liczb program go nie pyta

2 odpowiedzi

+1 głos
odpowiedź 4 kwietnia 2019 przez DeBos123 Nałogowiec (44,950 p.)

Masz w kodzie kilka podstawowych błędów:

  • Wczytujesz od użytkownika za każdym razem 100 liczb, czyli musisz zamienić i<100 na i<n.
  • Nie wczytujesz n.
  • Załączasz biblioteki, których w ogóle nie używasz.

Powinieneś również:

  • Unikać using namespace std; oraz zmiennych globalnych.
  • Lepiej formatować kod, żeby poprawić czytelność.

Co do samej logiki kodu to:

  • Nie musisz w ogóle zapisywać tych liczb do tablicy.
  • Wystarczy zmienna typu int, np. max i wtedy sprawdzasz czy liczba podana przez użytkownika jest większa od max. Jeżeli jest to poprzedniej wartości max już nie potrzebujesz.

Czyli działający kod wyglądałby tak:

#include <iostream>

int main() {
    int n;
    std::cout<<"Witaj, podaj n liczb, a ja wyznacze ich wartosc max "<<std::endl<<std::endl;
    std::cin>>n;
    int max=0;
    for(int i=0;i<n;i++) {
        std::cout<<"Podaj "<<(i+1)<<" liczbe: ";
        int a;
        std::cin>>a;
        if(a>max){
            max=a;
        }
    }
    getchar();
    return 0;
}

 

0 głosów
odpowiedź 4 kwietnia 2019 przez Shimeo7 Obywatel (1,910 p.)
Cześć, kilka uwag

1. nie musisz includować nic poza <iostream>, do wyznaczania najwyżej wartości też to nie jest konieczne,

2. zmienna n jest w tym przypadku zbędna,

3. Czy znasz odgórnie ile liczb masz wprowadzić do tablicy?
komentarz 4 kwietnia 2019 przez abcd Początkujący (290 p.)
Nie znam odgórnie ile liczb mam wprowadzić. Treść zadania do tego programu brzmi: Obliczyć max dla n liczb podanych przez użytkownika(tablica)
komentarz 4 kwietnia 2019 przez Shimeo7 Obywatel (1,910 p.)
Obliczyć? A nie przypadkiem znaleźć max wartości w tablicy?
komentarz 4 kwietnia 2019 przez abcd Początkujący (290 p.)
Takie jest polecenie, wprowadza w błąd. Chodzi o znalezienie max w tablicy
komentarz 4 kwietnia 2019 przez Shimeo7 Obywatel (1,910 p.)
I ostatnie pytanie, czy zakończenie wczytywania liczb ma się zakończyć po wprowadzeniu liczby np. 666, czy po każdym wprowadzeniu liczby komputer szuka największej wartości?
komentarz 4 kwietnia 2019 przez abcd Początkujący (290 p.)
Zakończenie wczytywania liczb ma się zakończyć po wprowadzeniu liczby np. 666 a komputer dopiero wtedy szuka największej wartości z tych liczb, które użytkownik podał
komentarz 4 kwietnia 2019 przez Shimeo7 Obywatel (1,910 p.)
edycja 4 kwietnia 2019 przez Shimeo7

Ok, jak wrócę do domu(16-17) to Ci to zrobię, jeśli nie będzie za późno.

Ale tak na szybko jak chcesz to może wywalić pętle for, ustawić tablicę, aby miała rozmiar 50, o ile nie ma warunku, że naprawdę dowolna ilość liczb

i zrobić takie coś

while(cin>>wprowadzana_liczba && wprowadzana_liczba!=666 
{
    //tutaj wsadzasz ją do tablicy
    //inkrementujesz index tablicy
}

Po pętli while możesz zrobić funkcję, która zwraca int, a tym intem jest największa wartość w tablicy, więc do tej funkcji musisz przekazać tablice i jej rozmiar i tam utworzyć zmienną, która będzie przechowywać największą aktualną wartość, po czym ją zwrócić. 

Jak będą problemy to potem wstawię kod z wyjaśnieniem (około 17). Chyba, że ktoś inny mnie uprzedzi.

komentarz 4 kwietnia 2019 przez Hiskiel Pasjonat (22,830 p.)

@Shimeo7, nie. Nie rozwiązujemy za innych. Pomagamy tu tylko, zobacz do regulaminu. Poza tym zwróć uwagę na zmienne globalne.

komentarz 4 kwietnia 2019 przez Shimeo7 Obywatel (1,910 p.)
Ok to powiedzmy, że kodem będzie komentarz co należałoby zrobić. W tym przypadku zmienne globalne nic nie zepsują, aczkolwiek tak, należy uważać ze zmiennymi globalnymi, gdyż mogą narobić niezłego smrodu.

Podobne pytania

+1 głos
2 odpowiedzi 840 wizyt
pytanie zadane 3 grudnia 2020 w C i C++ przez Wodnica Nowicjusz (160 p.)
0 głosów
1 odpowiedź 572 wizyt
pytanie zadane 24 stycznia 2020 w C i C++ przez Jan Patryk Kowalski Obywatel (1,880 p.)
0 głosów
2 odpowiedzi 5,939 wizyt
pytanie zadane 21 listopada 2018 w C i C++ przez Świeżak01 Nowicjusz (180 p.)

92,556 zapytań

141,404 odpowiedzi

319,560 komentarzy

61,942 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...