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

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

Kaldata.com - Форуми

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

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

Добре дошли!

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

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

 

C++ Задача

Featured Replies

Здравейте. От една книжка си намерих следната задачка, която ме гърчи:

Да се създаде матрица с размери n на m и да се запълни с числата от 1 до n.m в алтернативен ред. Да се дефинират и използват подходящи функции. Пример:

n=3

m=4

Изход

1 ,2 , 3

6 ,5 , 4

7 ,8 , 9

12,11,10

Стигнах до тук

#include <iostream.h>

int m,n;

int* fillstraight(int rownumber, int cols)
// Връща показател, тъй като масив не може да се върне.
// Запълва реда в прав ред (1,2,3,4,5...)
{
    int a[cols];
    int* pointer=&a;
    for (int i=0;i<cols;i++)
    {
        a[i]=rownumber*cols+1+i;
    }
    return pointer;
}

int* fillreverse (int rownumber, int cols)
// Запълва реда в обратен ред (5,4,3,2,1...)
{
    int a[cols];
    int* pointer=&a;
    for (int i=0;i<cols;i++)
    {
        a[i]=(rownumber+1)*cols-i;
    }
    return pointer;
}

int main()
{
    cout<<"n=";
    cin>>n;
    cout<<"m=";
    cin>>m;
    int a[n][m];
    for (int i=0;i<n;i++)
    // Обхождаме всички редове на масива и
    // ги запълваме в подходящия ред
    {
        if (i%2==0)
        a[i]=*fillstraight(i,m);
        else
        a[i]=*fillreverse(i,m);
    }
    for (int i=0;i<n;i++)
    // Извеждаме масива
    {
        for (int j=0;j<m;j++)
        {
            cout<<a[i][j]<<",";
        }
        cout<<endl;
    }
    return 0;
}

Получавам следните грешки

"cannot convert `int (*)[((unsigned int)((int)cols))]' to `int*' in initialization " на редове 10 и 22

"incompatible types in assignment of `int' to `int[((unsigned int)((int)m))]'" на редове 42 и 44

ОООО боже, матрица незнаеш ли какво означава !?

Масива ти трябва да е двумерен a[m][n]

Правиш прост вложен цикъл единия цикъл да върви по редовете, другия по колоните и зпаълваш с прост алгритъм за въвеждане на числа който да не надвишава м*н !?

мнооого редове безмислен код ..

int a[m][n];

int i,j;

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

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

{

a[j]=i*j (примерен алгоритъм за запълване) ,а ти там трябва даси направиш дадения ти алгоритъм..

}

а така го извеждаш ...

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

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

{

cout<<a[j];

}

Редактирано от Frontline (преглед на промените)

  • Автор

ОООО боже, матрица незнаеш ли какво означава !?

Масива ти трябва да е двумерен a[m][n]

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

Правиш прост вложен цикъл единия цикъл да върви по редовете, другия по колоните и зпаълваш с прост алгритъм за въвеждане на числа който да не надвишава м*н !?

мнооого редове безмислен код ..

Това за вложения цикъл ми дойде на акъла, но в условието на задачата се иска да се използват функции.

Ами да аргумента към функцията ти е само m и n? Алгоритъма го правиш при деления на числото m ако остатъка е 0 почваш да обръщаш реда на обратно.. до като пак стигне число коеот при деление с m има остатък 0 .. много ме имаш 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18 при 1 2 3 4 при 4%4==0 следва обръщане .... при м 8%4=0 пак следва обръщане и така... дано да си схванал идеята .. много нечленоразделно пиша... ама мнооого ми а спи :Д мързи да я пиша задачата в момента. "cannot convert `int (*)[((unsigned int)((int)cols))]' to `int*' in initialization " на редове 10 и 22 "incompatible types in assignment of `int' to `int[((unsigned int)((int)m))]'" на редове 42 и 44 това ще рече ,че не можеш да конвертираш различни типове.... не са несъвместими ....

  • Автор

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

  • Автор

С цикъл и воид функция ?

Сега пробвах и стана :) Благодарско :)

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

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

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

Дарение

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

Бюлетин

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

Профил

Навигация

Търсене

Търсене

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

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