Тема: Перевантаження функцій

допоможіть будь ласка правилььно вивести результат
Написати реалізацію перевантажених функцій:

int func(double* arr, int length);
int func(char* str);

Функція func переставляє всі елементи у зворотному порядку

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
#include <iostream>

int func(double* arr,int lenth)
{ 
    int s;
    double temp = 0.0;
    for (s = 0; i < lenth / 2; i++)
{
    temp = arr[];
    arr[] = arr[lenth - - 1];
    arr[lenth - 1 - ] = temp;
    std::cout << arr[];
}
    
    return 0;
}

int func(char* str)
{
    int length = strlen(str);
    for (int c = 0; c < (length - 1) / 2; c++)
    {
        char tmp = str[c];
        str[c] = str[length - c - 1];
        str[length - c - 1] = tmp;
    }
    std::cout << "\n";
    return 0;
}

int main()
{
    //введення з клавіатури динамічного масиву arr
    double* arr; int lenth, i;
    std::cout << "Enter the number of elements: ";
    std::cin >> lenth;
    arr = (double*)malloc(lenth * sizeof(double));
    if (arr != 0) {
        for (i = 0; i < lenth; i++)
            std::cin >> arr[];
        for (i = 0; i < lenth; i++)
            std::cout << "value for " << i << " index is " << arr[] << std::endl;
        free(arr);
    }
    //ввід з клавіатури рядка str
    int n;
    std::cout << "enter the number of symbols: ";
    std::cin >> n;// + нуль-символ
    char* str = new char[n];
    std::cin >> str;
    std::cout << str;

    double res1;
    char res2;
    res1 = func(arr, lenth);
    res2 = func(str);
    std::cout << res1;
    std::cout << res2;
    return 0;
}

2

Re: Перевантаження функцій

Стільки синтаксичних помилок! Це не ваш код.
Мені цікаво, коли ви його скопіювали в IDE невже вам не видало ніяких повідомлень про помилки? Чи ви його в блокноті писали?

3

Re: Перевантаження функцій

Спершу спробуйте написати дві різні функції, відлагодьте їх, а потім уже переходьте до перевантаження.

4

Re: Перевантаження функцій

koala написав:

Спершу спробуйте написати дві різні функції, відлагодьте їх, а потім уже переходьте до перевантаження.

на форум не дає нормально скопіювати, програма моя. за умовою мені потрібно ввести масив і рядок з клавіатури, не знаю як написати правильний вивід.

5

Re: Перевантаження функцій

Вибачте, у вас, схоже, проблема трохи в іншому. Ви написали певний код. Можливо, він схожий на те, що вам треба, можливо, ні, але ви цілком здатні спробувати його запустити і отримати повідомлення про помилки. І значну частину цих помилок ви маєте бути здатні виправити. Чому ви кажете, що "не знаєте, як написати правильний вивід", якщо перша помилка, про яку каже компілятор - це використання непроголошеної змінної i? Ви не знаєте, як проголошувати змінні, чи не знаєте, яка саме там має бути змінна? Який це має стосунок до "правильного виводу"? Зробіть максимум того, що можете, а далі ми вам допоможемо. Якщо це - ваш максимум, то, боюся, допомогти ми зможемо лише порадою прочитати підручник, бо інакше доведеться для вас цілий підручник писати тут, на форумі.

6

Re: Перевантаження функцій

koala написав:

Вибачте, у вас, схоже, проблема трохи в іншому. Ви написали певний код. Можливо, він схожий на те, що вам треба, можливо, ні, але ви цілком здатні спробувати його запустити і отримати повідомлення про помилки. І значну частину цих помилок ви маєте бути здатні виправити. Чому ви кажете, що "не знаєте, як написати правильний вивід", якщо перша помилка, про яку каже компілятор - це використання непроголошеної змінної i? Ви не знаєте, як проголошувати змінні, чи не знаєте, яка саме там має бути змінна? Який це має стосунок до "правильного виводу"? Зробіть максимум того, що можете, а далі ми вам допоможемо. Якщо це - ваш максимум, то, боюся, допомогти ми зможемо лише порадою прочитати підручник, бо інакше доведеться для вас цілий підручник писати тут, на форумі.

там має бути i  я знаю де та при копіюванні на форум сайт просто не дозволяє мені надіслати(
в першому коді немає помилок крім пропущених i які я спеціально прибрала для того аби хоч викласти код,
суть в тому шо при компіляції першого коду виводиться взагалі не те, і я була б вдячна аби хтось вказав на мої помилки

7

Re: Перевантаження функцій

На цьому сайті викладайте код у тегах code (кнопка <>). Або викладіть на якийсь обмінник ( https://pastebin.pl/ , наприклад, а сюди - посилання). По навмисно зіпсованому коду ми точно допомогти не зможемо.

8

Re: Перевантаження функцій

koala написав:

Вибачте, у вас, схоже, проблема трохи в іншому. Ви написали певний код. Можливо, він схожий на те, що вам треба, можливо, ні, але ви цілком здатні спробувати його запустити і отримати повідомлення про помилки. І значну частину цих помилок ви маєте бути здатні виправити. Чому ви кажете, що "не знаєте, як написати правильний вивід", якщо перша помилка, про яку каже компілятор - це використання непроголошеної змінної i? Ви не знаєте, як проголошувати змінні, чи не знаєте, яка саме там має бути змінна? Який це має стосунок до "правильного виводу"? Зробіть максимум того, що можете, а далі ми вам допоможемо. Якщо це - ваш максимум, то, боюся, допомогти ми зможемо лише порадою прочитати підручник, бо інакше доведеться для вас цілий підручник писати тут, на форумі.

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
#include <iostream>
#include <string.h>
int func(double* arr, int lenth)
{
    int i;
    double temp = 0.0;
    for (i = 0; i < lenth / 2; i++)
    {
        temp = arr[i];
        arr[i] = arr[lenth - i - 1];
        arr[lenth - 1 - i] = temp;
        std::cout << arr[i];
    }

    return 0;
}

int func(char* str)
{
    int length = strlen(str);
    for (int c = 0; c < (length - 1) / 2; c++)
    {
        char tmp = str[c];
        str[c] = str[length - c - 1];
        str[length - c - 1] = tmp;
    }
    std::cout << "\n";
    return 0;
}

int main()
{
    double* arr; int lenth, i;
    std::cout << "Enter the number of elements: ";
    std::cin >> lenth;
    arr = (double*)malloc(lenth * sizeof(double));
    if (arr != 0) {
        for (i = 0; i < lenth; i++)
            std::cin >> arr[i];
        for (i = 0; i < lenth; i++)
            std::cout << "value for " << i << " index is " << arr[i] << std::endl;
        free(arr);
    }
    int n;
    std::cout << "enter the number of symbols: ";
    std::cin >> n;// + нуль-символ
    char* str = new char[n];
    std::cin >> str;
    std::cout << str;

    double res1;
    char res2;
    res1 = func(arr, lenth);
    res2 = func(str);
    std::cout << res1;
    std::cout << res2;
    return 0;
}

9 Востаннє редагувалося koala (22.02.2022 12:52:27)

Re: Перевантаження функцій

Ви звільняєте масив arr перед тим, як його використовуєте.
У вас є виведення елементів масиву arr - до того, як ви викликаєте func. Перенесіть (чи скопіюйте) його після виклику.
І, мабуть, вам буде легше поки що зробити ці функції void. Ви все одно повертаєте щось непотрібне, нащо вам його ще й виводити?

10

Re: Перевантаження функцій

koala написав:

Ви звільняєте масив arr перед тим, як його використовуєте.
У вас є виведення елементів масиву arr - до того, як ви викликаєте func. Перенесіть (чи скопіюйте) його після виклику.
І, мабуть, вам буде легше поки що зробити ці функції void. Ви все одно повертаєте щось непотрібне, нащо вам його ще й виводити?

за умовою мають бути int
так краще, але виводить лише перше число(

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
#include <iostream>
#include <string.h>
int func(double* arr, int lenth)
{
    int i;
    double temp = 0.0;
    for (i = 0; i < lenth / 2; i++)
    {
        temp = arr[i];
        arr[i] = arr[lenth - i - 1];
        arr[lenth - 1 - i] = temp;
        std::cout << arr[i];
    }

    return 0;
}

int func(char* str)
{
    int length = strlen(str);
    for (int c = 0; c < (length - 1) / 2; c++)
    {
        char tmp = str[c];
        str[c] = str[length - c - 1];
        str[length - c - 1] = tmp;
    }
    std::cout << "\n";
    return 0;
}

int main()
{
    double* arr; int lenth, i;
    std::cout << "Enter the number of elements: ";
    std::cin >> lenth;
    arr = (double*)malloc(lenth * sizeof(double));
    if (arr != 0) {
        for (i = 0; i < lenth; i++)
            std::cin >> arr[i];
        
    }
    int n;
    std::cout << "enter the number of symbols: ";
    std::cin >> n;// + нуль-символ
    char* str = new char[n];
    std::cin >> str;
    std::cout << str;

    double res1;
    char res2;
    res1 = func(arr, lenth);
    res2 = func(str);
    std::cout << res1;
    std::cout << res2;
    free(arr);
    return 0;
}

11 Востаннє редагувалося koala (22.02.2022 13:46:01)

Re: Перевантаження функцій

darinagaponova написав:

за умовою мають бути int

Знаєте, у чому між нами різниця? У тому, що ви знаєте умову, а ми - ні. У це ми можемо дуже довго гратися: ми вам пораду, як краще, а ви - "ні, за умовою має бути не так". Хочете отримати допомогу - наводьте всю умову, а не по краплі у той момент, коли вам кажуть щось, що їй суперечить.
І, вибачте, я не буду повторювати те, що вже написав. Перечитайте ще раз. Якщо не розумієте - перепитайте. Але ви не зробили того, що я написав, і ніяк цього не пояснили. Це дуже поганий спосіб спілкування.

12

Re: Перевантаження функцій

koala написав:
darinagaponova написав:

за умовою мають бути int

Знаєте, у чому між нами різниця? У тому, що ви знаєте умову, а ми - ні. У це ми можемо дуже довго гратися: ми вам пораду, як краще, а ви - "ні, за умовою має бути не так". Хочете отримати допомогу - наводьте всю умову, а не по краплі у той момент, коли вам кажуть щось, що їй суперечить.
І, вибачте, я не буду повторювати те, що вже написав. Перечитайте ще раз. Якщо не розумієте - перепитайте. Але ви не зробили того, що я написав, і ніяк цього не пояснили. Це дуже поганий спосіб спілкування.

ось повна умова:Написати реалізацію перевантажених функцій:
int func(double* arr, int length);
int func(char* str);
Функція func переставляє всі елементи у зворотному порядку
при цьому ввід має бути реалізований через клавіатуру
я до цього намагалась зробити void але тоді як вивести?

13

Re: Перевантаження функцій

Функції приймають покажчики на змінні (на масиви, в цьому випадку). Тобто всі зміни, що відбуваються всередині функції, будуть відбуватися там, куди ці покажчики вказують.

double arr[] = {1,2,3};
func(arr, 3);
//тепер в arr буде 3,2,1

Значення, що їх повертають ці функції, гадаю, можна просто проігнорувати.

14

Re: Перевантаження функцій

koala написав:

Функції приймають покажчики на змінні (на масиви, в цьому випадку). Тобто всі зміни, що відбуваються всередині функції, будуть відбуватися там, куди ці покажчики вказують.

double arr[] = {1,2,3};
func(arr, 3);
//тепер в arr буде 3,2,1

Значення, що їх повертають ці функції, гадаю, можна просто проігнорувати.

я переробила без динамічного масиву та все одно не так((

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <string.h>
int func(double* arr, int lenth)
{
    int i;
    double temp = 0.0;
    for (i = 0; i < lenth / 2; i++)
    {
        temp = arr[i];
        arr[i] = arr[lenth - i - 1];
        arr[lenth - 1 - i] = temp;
        std::cout << arr[i];
    }

    return 0;
}

int func(char* str)
{
    int n = strlen(str);
    for (int c = 0; c < (n - 1) / 2; c++)
    {
        char tmp = str[c];
        str[c] = str[n - c - 1];
        str[n - c - 1] = tmp;

    }
    std::cout << "\n";
    return 0;
}

int main() {
    std::cout << "fill out array: ";
    int res1, res2;
    double arr[5];
    char str[5];
    for (int i = 0; i < 5; i++) {
        std::cin >> arr[i];
    }
    std::cout << "fill out string : ";
    for (int i = 0; i < 5; i++) {
        std::cin >> str[i];
    }
    
    res1 = func(arr, 5);
    res2 = func(str);
    std::cout << res1;
    std::cout << res2;
    return 0;
}

15

Re: Перевантаження функцій

Замініть

    std::cout << res1;
    std::cout << res2;

на виведення str та arr.

16

Re: Перевантаження функцій

koala написав:

Замініть

    std::cout << res1;
    std::cout << res2;

на виведення str та arr.

не працює

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <iostream>
#include <string.h>
int func(double* arr, int lenth)
{
    int i;
    double temp = 0.0;
    for (i = 0; i < lenth / 2; i++)
    {
        temp = arr[i];
        arr[i] = arr[lenth - i - 1];
        arr[lenth - 1 - i] = temp;
        std::cout << arr[i];
    }

    return 0;
}

int func(char* str)
{
    int n = strlen(str);
    for (int c = 0; c < (n - 1) / 2; c++)
    {
        char tmp = str[c];
        str[c] = str[n - c - 1];
        str[n - c - 1] = tmp;
        std::cout << str[c];
    }
    std::cout << "\n";
    return 0;
}

int main() {
    std::cout << "fill out array: ";
    int res1, res2;
    double arr[5];
    char str[5];
    for (int i = 0; i < 5; i++) {
        std::cin >> arr[i];
    }
    std::cout << "fill out string : ";
    for (int i = 0; i < 5; i++) {
        std::cin >> str[i];
    }
    
    res1 = func(arr, 5);
    res2 = func(str);
    std::cout << arr;
    std::cout << str;
    return 0;
}

17

Re: Перевантаження функцій

По-перше, ніколи не описуйте, чого код НЕ робить. Описуйте, що він робить замість того, що вам треба. Не "не працює", а "компілятор повідомляє про помилку", "програма виводить некоректне значення" чи ще щось.

По-друге, ось це:

        for (i = 0; i < lenth; i++)
            std::cout << "value for " << i << " index is " << arr[i] << std::endl;

ваш код? Ви його писали? Ви знаєте, що він робить?

18

Re: Перевантаження функцій

Допоможіть із завданням.

Написати реалізацію перевантажених функцій:
         int func(double*arr, int length);
         int func(char*str);
    Функція повертає кількість елементів, які більші за своїх сусідів,
що стоять між мінімальним і максимальним елементами масиву.

19

Re: Перевантаження функцій

Чим вам допомогти?

20

Re: Перевантаження функцій

Ось основа, але ніяк не можу написати реалізацію самої функції.

#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;

int func(double* arr, int length);
int func(char* str);

int main()
{
    SetConsoleOutputCP(1251);
    int res1 = 0;
    auto int res2 = 0;
    static double arr[5] = { 1.1, 2.2, 3.3, 4.4, 5.5 };
    char str[] = "ABCDE";
    res1 = func(arr, 5);
    res2 = func(str);
    system("pause");
    return 0;
}

int func(double* arr, int length)
{
    
}

int func(char* str)
{
    
}