Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

проблем с задачка на C++

Featured Replies

Здравейте на всички имам следната задача:Задача 6. Да се напише функция, която връща стойност true ако редицата от цели числа x0, x1, ..., xk-1 има поне два последователни нулеви елемента. Като се използва тази функция, да се напише програма, която намира и извежда номерата на редовете на матрицата A [n x n], от цели числа, които имат поне два последователни нулеви елемента.

Мислих и написах следното нещо

#include<iostream.h>

#include<math.h>

bool function(int q,int s[][30],int red)

{

int r=0;

for(r;r<=q-2;r++)

{if(s[red][r]==s[red][r+1]==0) return true;

if(r==q-2) return false;

}

}

int main()

{int a[30][30];

int n;

cout<<"Enter n";

cin>>n;

if(!cin||n<1||n>29)

{cout<<"bad input";

return 1;}

int i=0;

for(i;i<=n-1;i++)

{for(int p=0;p<=n-1;p++)

{cout<<"a["<<i<<"]["<<p<<"]=";

cin>>a[p];}

}

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

{if(function(n,a[][30],i)==true){cout<<" reda v koito ima 2 nuli e "<<i<<"-ti red"<<"\n";}}

return 0;}

някои път работи програмката друг път не ( при случайно избранио стоиности ) ако някои може да помогне ще съм му много благодарен :blink:

Странно как ти работи програмата, не съм я разглеждал обстойно, но на очи ми се наби следния фрагмент:

if(s[red][r]==s[red][r+1]==0) return true;
операциите в който се изпълняват в последователен ред from left to right, по време на изпълнение, програмата ще провери първо следния израз: s[red][r]==s[red][r+1], и ще върне стойност зависимост дали съждението е вярно или не (т.е. TRUE или FALSE), след което ти сравняваш върнатия резултат със нулата, така при коректен вход (два последователни нулеви елемента) никога няма да проработи програмчето, поне не в този му вид.
#define rowMAX 2

#define colMAX 5


#include <stdio.h>

#include <conio.h>


/*

--- Written on: C ----


With this array values, program will print:


Row: 1

Row: 2

*/


int input[rowMAX][colMAX] = { {1, 0, 0, 3, 0}, {0, 3, 0, 0, 0} }; // initialize array


bool checkN(int curROW)

{

    unsigned curCOL;


    for(curCOL = 0; curCOL < colMAX - 1; curCOL++)

        if( ( input[curROW][curCOL] == 0) && ( input[curROW][curCOL+1] ==0 ) ) return true;


    return false;

}


int main(void)

{

    unsigned curROW;


    for(curROW=0; curROW<=rowMAX-1; curROW++) {

        if( checkN(curROW) == true) printf("Row: %d\n", curROW+1);

    }


    getch();


    return 0;

}

Ако съм разбрал правилно условието, това е кода който ще ти свърши работа, не претендирам, че е оптимизиран, дори напротив, но все пак не е написан по възможно най-хамалския начин, както и да е. Не съм вмъквал коментари, защото реално няма какво толкова да се обяснява, в проверката използвам логически оператори, благодарение на които мога да сравня двата физически елемента в масива. Това, че срещаш в кода изрази от този вид value±1, конкретно в този случай се дължи на факта, че в C/C++ (а и много други езици) адресацията на масивите започва от нула, а не от еденица.

Регистрирайте се или влезете в профила си за да коментирате

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.