Wątek przeniesiony 2018-09-08 17:11 z C/C++ przez kq.

Program wyświetlający liczbę, której nie podałem – potrzebna pomoc

0

Witam mam problem zadaniem , muszę napisać program w którym trzeba podać zakres , a potem ma wyświetlić liczbę której nie podałem. np zakres 5, podaje liczby 1 5 3 2 i ma wyświetlić 4.
Proszę o pomoc program działa tylko na 20% i nie wiem co robić

#include <iostream>

using namespace std;

int main()
{
    int n=0,tab[n];

    cin >>n;
int s=(n*(n+1))/2;
    for(int i=0;i<n;i++)
    {
        cin >> tab[i];
          s=s-tab[i];
    }

    cout<<s<<endl;
}
1
    int n=0,tab[n];
 
    cin >>n;

C++ nie ma VLA, ale nawet jak by miał to tak się nie zmienia wielkości tablicy. Użyj std::vector. W ogóle ten algorytm zadziała tylko dla bardzo określonych danych.

0

dzieki za odpowiedź ale jestem dopiero początkujący i nie wiem co i jak zrobić żeby to poszło , mógłbyś mi pokazać jak to wpleść w ten kod

0
int n=0,tab[n];

Ta linijka tworzy tablicę długości 0, która nie zmieni swojej wielkości przez zmianę n.

0

Czyli co musze zrobić, nadać n jakaś wartość?

0

Pomijając drobny fakt, że zapis int tab[n] umożliwiony jest tylko przez uprzejmość kompilatora, najpierw wczytaj n, a dopiero potem utwórz tablicę.

Tak czy owak, zastanów się czy w ogóle w tym zadaniu potrzeba tablicy.

0

a na przykład jak można to zadanie zrobić na inny sposób ?

0

Można wykorzystać to, że suma liczb od 1 do n jest równa (n(n+1))/2. Wystarczy obliczyć sumę wprowadzonych liczb i sprawdzić, ile brakuje.
https://pl.wikipedia.org/wiki/Szereg_1_%2B_2_%2B_3_%2B_4_%2B_%E2%80%A6

0

wydaje mi się w moim kodzie coś takiego zastosowałem, może pokazałbyś mi jak usprawnić to żeby przechodziło to przez sprawdzarke

0

Nie potrzebujesz żadnej tablicy. Policz tylko sumę ze wzoru (to już masz) i sumę wprowadzonych liczb.

0

ok kod wygląda teraz tak i mam problem jak zrobic sume wpisywanych liczb

#include <iostream>

using namespace std;

int main()

{
int n,x,s;
    cin>>n;
  for(int i=1;i<n;i++)
  {
      cin>>x;

}
  s=(n*(n+1))/2;

  cout<<s-;
    return 0;
}
0

kodzik działa i przechodzi przez sprawdzarkę, wielkie dzięki :)

#include <iostream>

using namespace std;

int main()

{
int n,x,s,k=0;
    cin>>n;
  for(int i=1;i<n;i++)
  {
      cin>>x;
k=k+x;
}
  s=(n*(n+1))/2;

  cout<<s-k;
    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1