[C++] Wczytywanie liczb i agregowanie ich

kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: kalwi »

Na listach by się dało. Ale to raczej nie to. Podejrzewam, że ten test jest źle napisany, albo polecenie jest nieprecyzyjne.
mich12
Użytkownik
Użytkownik
Posty: 180
Rejestracja: 13 paź 2013, o 13:41
Płeć: Mężczyzna
Podziękował: 29 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: mich12 »

To ja już nie wiem :/
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: Afish »

Odnośnie pierwszego zadania:
1. Po co kombinujecie z tablicami? Jedna pętla, wczytywanie liczby i wypisanie wyniku, nic więcej nie trzeba.
2. „Zasadnicze dane wejściowe” nie muszą być nieujemne, więc wczytywanie ich do typu bez znaku spowoduje błędy.
3. Nie ma podanych zakresów, więc nie wiadomo, czy inty wystarczą. Można próbować long long inty, treść zadania nie sprawia wrażenia, jakby trzeba było bawić się z dowolną precyzją, ale i taka jest możliwość.
4. Jeżeli jest to automatyczna sprawdzarka, to dane wejściowe na 99% są poprawne, więc nie ma potrzeby weryfikacji.
mich12
Użytkownik
Użytkownik
Posty: 180
Rejestracja: 13 paź 2013, o 13:41
Płeć: Mężczyzna
Podziękował: 29 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: mich12 »

@Afish, dzięki!
Właśnie słyszałem że to zadanie da się rozwiązać bez pętli, jednak nie mam pomysłu na to jak to zrobić. Mógłbyś podrzucić tę pętlę?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: Afish »

mich12 pisze:Właśnie słyszałem że to zadanie da się rozwiązać bez pętli, jednak nie mam pomysłu na to jak to zrobić.
Bez pętli? Rekurencyjnie lub skokami, ale czy to nie są koncepcyjnie pętle, to już nie mnie decydować.
mich12 pisze:Mógłbyś podrzucić tę pętlę?
Już w pierwszej wiadomości tego tematu taka pętla się znajduje, wystarczy wywalić niepotrzebne wypisania na strumień wyjścia, upewnić się, że typy zmiennych wystarczą dla zakresów podanych w zadaniu i powinno działać.
mich12
Użytkownik
Użytkownik
Posty: 180
Rejestracja: 13 paź 2013, o 13:41
Płeć: Mężczyzna
Podziękował: 29 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: mich12 »

Kod: Zaznacz cały

//Michał Siczek
#include <iostream>
using namespace std;

int main ()
{
int special;
int input;
int data;

cout << "Wczytaj liczbe specjalna: " << endl;
cin >> special;

cout << "Wczytaj liczba oznaczajaca ilosc danych wejsciowych: " << endl;
input = -1;
while(input < 0)
      cin >> input;

cout << "Wczytuj dane wejsciowe: " << endl;
for (input; input > 0; input--){
	cin >> data;
	
}

if (special % data == 0)
	cout << "TAK" << endl;
else
	cout << "NIE" << endl;
	
return 0;
}

Najchętniej zrobiłbym to jakoś tak, tylko jak zrobić to, żeby słowo TAK lub NIE było wypisywane dla każdej wprowadzonej wartości a nie tylko dla ostatniej wprowadzonej?
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: Afish »

No a co teraz robisz w pętli? Wczytujesz liczbę. A co chcesz robić? Wczytywać liczbę i wypisywać „TAK” lub „NIE”. Czyli jak trzeba poprawić kod? Trzeba przenieść wypisywanie do pętli.
mich12
Użytkownik
Użytkownik
Posty: 180
Rejestracja: 13 paź 2013, o 13:41
Płeć: Mężczyzna
Podziękował: 29 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: mich12 »

Kod: Zaznacz cały

#include <iostream>
using namespace std;

int main ()
{
int setnumber;	
float mark;
cin >> setnumber;

for ( int i = 0; i < setnumber; i++) {
	
	int data [i][2];
	
	cin >> data[i][0];
  	cin >> data[i][1]; 
 	cin >> data[i][2];
  	}
	  

for(int i =0; i < setnumber; i++) {
		
		int data [i][2];
   if ((data [i][1] + data[i][2]) < 50)
   mark = 2.0;
   
   else if((data[i][1]+data[i][2]) >= 50  && (data[i][1]+data[i][2]) < 60)
   mark = 3.0;
   
   else if((data[i][1]+data[i][2]) >= 60  && (data[i][1]+data[i][2]) < 70)
   mark = 3.5;

   else if((data[i][1]+data[i][2]) >= 70  && (data[i][1]+data[i][2]) < 80)
   mark = 4.0;
   
   else if((data[i][1]+data[i][2]) >= 80  && (data[i][1]+data[i][2]) < 90)	      
   mark = 4.5;
   
   else if((data[i][1]+data[i][2]) >= 90  && (data[i][1]+data[i][2]) <= 100)
   mark = 5.0;
   
   cout << data [i][0]<< " " << data [i][1] + data [i][2] << "% ";
   
   if ( mark == 2.0 ) cout << "niedostateczny ";
   if ( mark == 3.0 ) cout << "dostateczny ";
   if ( mark == 3.5 ) cout << "dostateczny plus ";
   if ( mark == 4.0 ) cout << "dobry ";
   if ( mark == 4.5 ) cout << "dobry plus ";
   if ( mark == 5.0 ) cout << "bardzo dobry ";
   cout <<"(" << mark << ")" << endl;
   
   }
}
Mam jeszcze pytanie, czy ktoś widzi w tym kodzie błąd co do 2 zadania? Oto przykładowe dane i wyjście dla programu:
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: kalwi »

Tak, nie umiesz posługiwać się tablicami, ani nie wiesz co to jest zasięg życia zmiennej
mich12
Użytkownik
Użytkownik
Posty: 180
Rejestracja: 13 paź 2013, o 13:41
Płeć: Mężczyzna
Podziękował: 29 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: mich12 »

Czyli nie powinienem deklarować

Kod: Zaznacz cały

int data [i][2]
za każdym razem? Mógłbyś zasugerować w której linijce jest błąd?
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: kalwi »

Nie powinieneś. Linijki 12 i 22 są bez sensu.
MatPiotr
Użytkownik
Użytkownik
Posty: 20
Rejestracja: 14 paź 2016, o 20:46
Płeć: Mężczyzna
Lokalizacja: pzn
Podziękował: 1 raz
Pomógł: 1 raz

[C++] Wczytywanie liczb i agregowanie ich

Post autor: MatPiotr »

Nie wiem, co twój program powinien robić, bo przeczytałem tylko dwa ostatnie twoje posty, ale po pierwsze w pętli nie deklaruj zmiennej ciągle, czyli nie rób

Kod: Zaznacz cały

 int zmienna = 
zamiast tego zadeklaruj na samym początku tą zmienną czyli np. przed

Kod: Zaznacz cały

int main
, a jak chcesz wpisać do niej element to po prostu stosujesz

Kod: Zaznacz cały

zmienna = wartość
np.

Kod: Zaznacz cały

data [i][2] = 5
. Po za tym jak deklarujesz tablicę to piszesz

Kod: Zaznacz cały

typ tablica[ilosc elementow]
i liczysz od 0, czyli jak masz

Kod: Zaznacz cały

int data[2]
to twoja tablica ma tylko indeksy 0, 1, nie możesz więc nic wpisać do komórki numer 2, bo twoja tablica jej nie posiada.
I ponieważ w C++ int main jest traktowana jako funkcja to warto na jej końcu napisać return 0.
kalwi
Użytkownik
Użytkownik
Posty: 1931
Rejestracja: 29 maja 2009, o 11:58
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 145 razy
Pomógł: 320 razy

[C++] Wczytywanie liczb i agregowanie ich

Post autor: kalwi »

MatPiotr pisze:tego zadeklaruj na samym początku tą zmienną czyli np. przed

Kod: Zaznacz cały

int main
Jak chcesz odpowiadać, to przynajmniej odpowiadaj dobrze. ZMIENNYCH GLOBALNYCH SIĘ NIE UŻYWA GDY NIE MA TAKIEJ POTRZEBY
ODPOWIEDZ