Програма на C++ с масиви

Задавайте Вашите въпроси, относно софтуера който вече имате инсталиран на компютъра си и имате проблеми с него или как сте разрешили даден проблем.
Публикувай отговор
entox
Новак
Новак
Мнения: 5
Регистриран на: Нед Фев 19, 2006 1:18 am
Обратна връзка:

Програма на C++ с масиви

Мнение от entox »

Задача 1: Да се напише програма, която въвежда от клавиатурата цяло число 1<n<11, поредица от цели числа а0, а1......аn-1 и цяло число х. Програмата проверява дали х се съдържа в редицата и извежда подходящо съобщение (примерно ДА, НЕ).

Ако на някой ме му представлява проблем.. :) и ако може да има обяснение кво става на всеки ред.
Благодарим предварително :))
Аватар
zvezda
Потребител
Потребител
Мнения: 278
Регистриран на: Вто Ное 25, 2008 19:40 pm

Re: Програма на C++ с масиви

Мнение от zvezda »

Мога да ти напиша псевдокод, ако искаш, но не съм запозната със синтаксиса на C++.
Коя част от задачата те затруднява или не си чел изобщо по въпроса? Ако е второто, ти препоръчвам да го направиш. Задачката е лесна.
entox
Новак
Новак
Мнения: 5
Регистриран на: Нед Фев 19, 2006 1:18 am
Обратна връзка:

Re: Програма на C++ с масиви

Мнение от entox »

ми аз знам, че не е трудна но по мое време ни мъчиха с паскал.. ако беше на паскал щях да я направя.. но на братовчедката която сега е 10 клас учат Ц++, а от Ц нямам и понятие...
Аватар
zvezda
Потребител
Потребител
Мнения: 278
Регистриран на: Вто Ное 25, 2008 19:40 pm

Re: Програма на C++ с масиви

Мнение от zvezda »

След като го учи в училище, би трябвало поне да е наясно със синтаксиса и може би я затруднява логиката в задачата? Поразгледай й учебниците/записките от часовете.

Псевдокодът:

Код за потвърждение: Избери целия код

func containsX(){
n = read(); //чете се числото n
a[n]; //създава се масив с n елемента

for(i = 0; i < n; i++)
{
  a[i] = read(); //четеш n поредни числа и ги запаметяваш в масива
}

x = read(); //четеш числото x

found = false; // булева променлива, обозначаваща дали сме намерили x в масива
for(i = 0; i < n; i++)
{
   if(x == a[i]) // обхождаме масива и проверяваме всяка една стойност за равенство с x
   {
     found = true; // намерили сме числото, булевата променлива става със стойност true
     break; // излизаме от цикъла, тъй като сме намерили числото
   }
}

if(found == true)
{
  print("YES"); // ако я има в масива, променливата е true и отпечатваме на екрана съобщение
}
else
{
  print("NO"); // иначе отпечатваме, че не е намерена
}


}
Аватар
admin
Site Admin
Site Admin
Мнения: 3591
Регистриран на: Съб Май 11, 2002 9:43 am
skype: john.doe.12
Местоположение: Earth
Обратна връзка:

Re: Програма на C++ с масиви

Мнение от admin »

Код за потвърждение: Избери целия код

#include <iostream>

using namespace std;

int main (void)
{
    int inp, i;
    int arr[10];
    for (i = 0; i < 10; i++)
    {
        cout << "Vavedete chislo za " << i << " : ";
        cin >> arr[i];
        
    }
    cout << "Masiva e vaveden uspeshno, vavedete chisloto x koeto ste tarsim w masiwa: ";
    cin >> inp;
    for (i = 0; i < 10; i++)
    {
        if (inp == arr[i])
        {
                cout << "found" << endl;
        } else {
                cout << "not found" << endl;
        }
    }
    system("pause");
}

"There is no 'patch' for stupidity."
Аватар
zvezda
Потребител
Потребител
Мнения: 278
Регистриран на: Вто Ное 25, 2008 19:40 pm

Re: Програма на C++ с масиви

Мнение от zvezda »

Админ, така ще ти изписва not found за всяко несъвпадение между x и число от масива.
Също не въвеждаш число n, а приемаш, че n e 10.
dakatamen
Начинаещ
Начинаещ
Мнения: 68
Регистриран на: Нед Сеп 27, 2009 8:33 am
skype: dan_1231

Re: Програма на C++ с масиви

Мнение от dakatamen »

#include<iostream.h>
void main()
{
int n,x;
int arr[10];
cout<<"broi elementi na masiva: ";
cin>>n;
for (int i=0;i<n;i++)
{
cout<<"Vavedete chislo za "<<i<<" : ";
cin>>arr;

}
cout<<"Masiva e vaveden uspeshno, vavedete chisloto x koeto ste tarsim w masiwa: ";
cin>>x;
for(i=0;i<n;i++)
{
if (x==arr)
{
cout<<"found"<<endl; return ;
}
}
cout<<"not found"<<endl;

return;
}

Може да съм допуснал грешка, ама провери.
Аватар
admin
Site Admin
Site Admin
Мнения: 3591
Регистриран на: Съб Май 11, 2002 9:43 am
skype: john.doe.12
Местоположение: Earth
Обратна връзка:

Re: Програма на C++ с масиви

Мнение от admin »

Ами то условието ти е такова: 1<n<11 т.е. максималния размер е 10
премести нот фоунд по надолу и махни елза и си готов.
"There is no 'patch' for stupidity."
Аватар
zvezda
Потребител
Потребител
Мнения: 278
Регистриран на: Вто Ное 25, 2008 19:40 pm

Re: Програма на C++ с масиви

Мнение от zvezda »

admin написа:Ами то условието ти е такова: 1<n<11 т.е. максималния размер е 10
премести нот фоунд по надолу и махни елза и си готов.
т.е. може и да се зададе 7 като размер, а не 10.
С местене на нот фаунд най-долу става само ако ползваш return преди това. Иначе при намерен елемент ще ти изкара и двете.


На dakatamen решението ми изглежда коректно, но нека човекът си го види.
Аватар
nefelen
Модератор
Модератор
Мнения: 996
Регистриран на: Нед Май 30, 2004 12:29 pm
skype: nefelen
Местоположение: -=mysteryland=-
Обратна връзка:

Re: Програма на C++ с масиви

Мнение от nefelen »

слагаш още една променлива, която да стане 1 при изпълнение на if (x== arr)
след това правиш още един if(поменлива==1) {cout << "found" << endl;} else { cout << "not found" << endl;}
варианти много :) Може така и брояч да си сложиш, колко пъти x е в масива примерно
if (x== arr) {s++;}}
cout << "found " <<s<<" times" <<endl;
s0 lItTlE tImE, s0 lItTlE t0 d0
dakatamen
Начинаещ
Начинаещ
Мнения: 68
Регистриран на: Нед Сеп 27, 2009 8:33 am
skype: dan_1231

Re: Програма на C++ с масиви

Мнение от dakatamen »

nefelen написа:слагаш още една променлива, която да стане 1 при изпълнение на if (x== arr)
след това правиш още един if(поменлива==1) {cout << "found" << endl;} else { cout << "not found" << endl;}
варианти много :) Може така и брояч да си сложиш, колко пъти x е в масива примерно
if (x== arr) {s++;}}
cout << "found " <<s<<" times" <<endl;


На една олимпиада бях сложил един такъв иф с брояч и много яко ме изгърбиха проверяващите.
Тва по принцип не се приема за рационално решение.
Аватар
zvezda
Потребител
Потребител
Мнения: 278
Регистриран на: Вто Ное 25, 2008 19:40 pm

Re: Програма на C++ с масиви

Мнение от zvezda »

dakatamen написа:
nefelen написа:слагаш още една променлива, която да стане 1 при изпълнение на if (x== arr)
след това правиш още един if(поменлива==1) {cout << "found" << endl;} else { cout << "not found" << endl;}
варианти много :) Може така и брояч да си сложиш, колко пъти x е в масива примерно
if (x== arr) {s++;}}
cout << "found " <<s<<" times" <<endl;


На една олимпиада бях сложил един такъв иф с брояч и много яко ме изгърбиха проверяващите.
Тва по принцип не се приема за рационално решение.

Ако визираш брояча, принципно прави някакви излишни неща, да, но не е невярно решение.
Мислех, че на олимпиадите по информатика проверката става просто с автоматични тестове. :) (което също също би могло да ти намали точките, разбира се, в случай че програмата ти се забави твърде много на даден тест)
Аватар
nefelen
Модератор
Модератор
Мнения: 996
Регистриран на: Нед Май 30, 2004 12:29 pm
skype: nefelen
Местоположение: -=mysteryland=-
Обратна връзка:

Re: Програма на C++ с масиви

Мнение от nefelen »

Да на олимпиадите казва ти какъв е входа и какво трябва да изкара и те после си пускат още 1-2 теста(да не би да не си направил само cout<< :D). А такава глупост са тези ученически олимпиади по информатика, че думи нямам чак :cheers:
s0 lItTlE tImE, s0 lItTlE t0 d0
Аватар
DMXDMX
Старо куче медалист
Старо куче медалист
Мнения: 553
Регистриран на: Нед Яну 15, 2006 23:47 pm

Re: Програма на C++ с масиви

Мнение от DMXDMX »

За да е по-коректно въвеждането на размера на масива трябва да се добави един while

Код за потвърждение: Избери целия код

int n=0;
while(n<=1 && n>=11)
{ 
cout<<"Vyvedete n, koeto e 1<n<11";
cin>>n;
}
Публикувай отговор