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

Proste dodawanie spoj

Object Storage Arubacloud
0 głosów
338 wizyt
pytanie zadane 27 stycznia 2017 w C i C++ przez chucksqll Stary wyjadacz (12,930 p.)
edycja 27 stycznia 2017 przez Arkadiusz Waluk

Witam.

Wiem, że pytanie były już podobne pytania, jakkolwiek dręczy mnie dlaczego w moim kodzie nie dziala poprawnie ilość testów. Z góry dziękuję.

#include <iostream>

using namespace std;

int x,n;

int main()

{cin>>x;

for(int i=0;i<x;i++)

{

cin>>n;

float liczby[n],suma=0;

for(i=0;i<n;i++)

{cin>>liczby[i];

}

for(int i=0;i<n;i++)

{

suma=suma+liczby[i];

}

cout<<suma;

}

 

return 0;

}

1 odpowiedź

0 głosów
odpowiedź 27 stycznia 2017 przez Bosswell Nałogowiec (36,470 p.)

Zacznijmy od tego, że:

cin>>n;

float liczby[n];

Coś takiego jest niemożliwe i jedynie na codeblocks to zadziala. Tablice musisz alokować dynamicznie.

Po za tym radzę używać typu double, a nie float, ze względu na precyzje.

int n;
cin>>n;

double* liczby = new double[n];

 

Jak już zakończysz działanie programu nie zapomnij zwolnić pamięci

delete [] liczby;

 

A co do głównego pytania. Pętla tak się zachowuje, ponieważ we wnętrzu pętli głównej inkrementujesz zmienną "i", która odpowiada za pętle z ilością testów. Musisz zmienić nazwę zmiennej.

 Wczytywanie i sumowanie danych możesz zrobić w jednej pętli. 

 for(int j=0;j<n;j++)
  {
       cin>>liczby[j];
       suma += liczby[j];
  }

Staraj się pisać kod bardziej przejrzysty.  

komentarz 27 stycznia 2017 przez koczurekk Gaduła (3,420 p.)
1. VLA działa na dowolnym kompilatorze z rodziny GCC, Clangu chyba też, IDE nie ma tu nic do rzeczy.

2. double i float nie robią dużej żadnej różnicy przy normalnych liczbach a to pierwsze działa znacznie wolniej, po double sięga się kiedy jest potrzebne.

3. Swoim zaleceniem co do zwalniania pamięci sugerujesz błędne podejście do dynamicznej alokacji, powinien użyć std::vector<float> buffer(n) i nawet nie tykać new i delete, w C++ surowych wskaźników używa się w ostateczności.

4. Powinieneś wspomnieć o tym, że nie używa się zmiennych globalnych a część użytych przez niego typów jest zła (np. n powinno być bez znaku).

Popraw to to może cofnę downvote, teraz twoja odpowiedź jest bezużyteczna.
komentarz 27 stycznia 2017 przez niezalogowany
Autor pytania jest początkującym w programowaniu, więc zalecenie do tworzenia dynamicznej tablicy przez wskaźnik jest jak najbardziej uzasadnione - powinien umieć sprawnie się nimi posługiwać.
komentarz 27 stycznia 2017 przez koczurekk Gaduła (3,420 p.)
Tak było przed C++11, teraz raw pointerów można się uczyć dodatkowo / na wysokim poziomie, nie mają żadnych zastosowań dla początkującego programisty + często ludzie się przez nie poddają uważając za zbyt trudne. W C wskaźniki to podstawy, ale w C++ używa się ręcznie tyle co w Javie.
komentarz 27 stycznia 2017 przez niezalogowany
Jak najbardziej się z tym zgadzam, że nie są często używane, ale nie wyklucza to, że nie powinien umieć się nimi posługiwać. Wskaźniki zawsze będą trudne, póki solidnie się ich nie przećwiczy ;)
komentarz 27 stycznia 2017 przez koczurekk Gaduła (3,420 p.)
Dokładnie, nie mówię żeby się ich nie uczył, po prostu zalecam odsunięcie tego w czasie aż będzie dobrze rozumiał funkcję i obiektówkę, więc będzie mógł się nauczyć wskaźników raz a porządnie (a nie na raty) + z dużym zapasem wiedzy i doświadczenia łatwiej przyswaja się takie techniczne tematy.

Podobne pytania

0 głosów
1 odpowiedź 784 wizyt
pytanie zadane 4 czerwca 2017 w C i C++ przez Michał Biernacki Użytkownik (670 p.)
0 głosów
2 odpowiedzi 872 wizyt
pytanie zadane 26 sierpnia 2016 w C i C++ przez prownnie Początkujący (280 p.)
0 głosów
4 odpowiedzi 635 wizyt
pytanie zadane 22 lipca 2016 w C i C++ przez hakiros54 Obywatel (1,160 p.)

92,568 zapytań

141,420 odpowiedzi

319,620 komentarzy

61,954 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!

...