.
Отговор в тема
Резултати от 1 до 8 от общо 8
  1. #1

    Информатика - 9 клас

    Имам да напиша за домашно програма но си нямам и на идея как ще стане.
    Вмомента сме на масиви, и предполагам че задачата ще я има в учебникп по информатика. Та ако може някой да ми помогне ще съм много благодарна.
    Да се състави програма, която проверява дали X се съдържа в редицата !

    благодаря предварително
    Тишината е твоето име на ум
    всеки облак носи твоя парфюм
    всички влакове водят в твоя тунел
    през трупа си все към теб съм поел...

  2. #2
    Мега фен Аватара на Chacho
    Регистриран на
    Nov 2006
    Мнения
    15 573
    #include <iostream>
    using namespace std;

    int main()
    {
    int i, x, n;
    int a[100];
    bool ans=false;

    cout<<"Vuvedete broq na elementite 'n'";
    cout<<"\nn="; cin>>n;

    //Vuvejdane na elementite na masiva

    for (i=0;i<n;i++)
    {
    cout<<"\na["<<i<<"]=";
    cin>>a[i];
    }

    cout<<"\nVuvedete element x";
    cout<<"\nx="; cin>>x;

    //Proverka dali x e sred elementite

    for (i=0;i<n;i++)
    {
    if (a[i]==x)
    {ans=true;}
    }

    if (ans==true)
    {
    cout<<"x e sred elementite";
    }

    else
    {
    cout<<"x ne e sred elementite";
    }

    //Kod, koito kara programata da se zatvori 4ak sled natiskane na enter

    std::cin.ignore(std::numeric_limits<std::streamsiz e>::max(), '\n');
    std::cin.get();

    return 0;

    }





    Това е кодът, не съм го компилирал, може да има някоя грешчица. Ето ти обяснение, как работи програмата.

    1.Въвеждат се елементите на масива по следния начин:

    -Дължината на масива е n. С помощта на променливата i "обхождаме" редицата. С други думи, в първият цикъл for се извършва частта "Въведете a[i]", като i първоначално е 0. Това означава, че пита за a[0] (първия елемент). След като се извърши това, i нараства с 1 и пак се извършва "Въведете a[i]". Това се повтаря докато е вярно i<n. В момента, в който i стане n (демек няма повече елементи, цикълът свършва).

    2.Отново се обхожда масива, за да се провери дали х е сред елементите

    -Отново ползваме цикъл for за i от 0 до n-1 (i<n е същото като i<=n-1). На всяка стъпка обаче, вместо да пита потребителят да въведе елемент a[i], той проверява дали текущият елемент a[i] е равен на х. Тъй като сме цикъл, това става за всеки елемент от масива а. Първоначално променливата аns e false (лъжа). Ако срещне обаче елемент, равен на х, тя става true (истина).

    3.Накрая с помощта на един if - else проверяваме дали след циклите ans е true или false и изкарваме съобщение, дали е намерен такъв елемент.




    Задачата има малък недостатък, който можеш да оправиш. С вторият цикъл for, тя може да намери още на 2-ра позиция в масива елемент, равен на х. След това прави излишни проверки до края на масива, нищо че програмата вече е срещнала такъв елемент. Ползвайки цикъл while, можеш да сложиш друго условие за край на цикъла (вместо за край i>=n).
    Има 10 вида хора. Тези, които могат да четат двоичен код и тези, които не могат.

  3. #3
    #include<iostream.h>
    int main()
    { int n,a[12],x;
    cout<<"Broi elementi na masiva: ";
    cin>>n;
    cout<<"Poredica chisla";
    for(int i=0;i<n;i++)
    cin>>a[i];
    cout<<"x=";
    cin>>x;
    i=0;
    while(a[i]!=x) i++;
    if(a[i]==x) cout<<"Yes";
    else cout<<"No";
    return 0;
    }

  4. #4
    Мега фен Аватара на Chacho
    Регистриран на
    Nov 2006
    Мнения
    15 573
    Имаш грешка в while-a. Условието трябва да е (a[i]!=x) && (i<n), иначе въведе ли се масив, който няма елемент = х, цикълът става безкраен.

    Също така трябва да оформиш тяло на while-а с {}
    Има 10 вида хора. Тези, които могат да четат двоичен код и тези, които не могат.

  5. #5
    Повече от фен
    Регистриран на
    May 2010
    Мнения
    425
    Забелязах, че навсякъде пишеш
    "std::cin.ignore(std::numeric_limits<std::streamsi ze>::max(), '\n');
    std::cin.get();"
    Можеш просто да напишеш system("pause"). Върши същата работа.

  6. #6
    Мега фен Аватара на Chacho
    Регистриран на
    Nov 2006
    Мнения
    15 573
    Препоръчително е да се избягва system("pause"). Това, което пиша, е по-добрият вариант.

    Reasons:

    It's not portable. This works only on systems that have the PAUSE command at the system level, like DOS or Windows. But not Linux and most others...

    It's a very expensive and resource heavy function call. It's like using a bulldozer to open your front door. It works, but the key is cleaner, easier, cheaper. What system() does is:

    suspend your program

    call the operating system

    open an operating system shell (relaunches the O/S in a sub-process)

    the O/S must now find the PAUSE command

    allocate the memory to execute the command

    execute the command and wait for a keystroke

    deallocate the memory

    exit the OS

    resume your program

    There are much cleaner ways included in the language itself that make all this unnessesary.

    You must include a header you probably don't need: stdlib.h or cstdlib
    Има 10 вида хора. Тези, които могат да четат двоичен код и тези, които не могат.

  7. #7
    Повече от фен
    Регистриран на
    May 2010
    Мнения
    425
    За такива прости програми, които се пишат в даскало изобщо не е проблем да се използва system("pause"). Иначе най-добрият вариант е да си пускаш програмата през конзолата.

  8. #8
    много ви благодаря (мечка)
    Тишината е твоето име на ум
    всеки облак носи твоя парфюм
    всички влакове водят в твоя тунел
    през трупа си все към теб съм поел...

Правила за публикуване

  • Вие не можете да публикувате теми
  • Вие не можете да отговаряте в теми
  • Вие не можете да прикачвате файлове
  • Вие не можете да редактирате мненията си