1

Тема: Проблема з функцією

Простим називається число, що має тільки два дільники – саме число й одиницю. Дано натуральне число n та послідовність натуральних чисел a1, a2, …, an. Визначити функцію ідентифікації простого числа та за допомогою неї знайти середнє арифметичне простих чисел – членів заданої послідовності.
Мій перший код з функціями

#include "pch.h"
#include <iostream>
float is_simple(int a, int is_prime )
{
    int num,k;
    is_prime = 1;
    for (int j = 2;j < a;++j)
        if (a%j == 0)
            is_prime = 0;
    if (is_prime == 1) 
    {
        k++;
        num += a;
    }
    return num / k;
}    
int main()
{
    
    unsigned int n;
    int a,is_prime;
    setlocale(LC_CTYPE, "ukr");
    printf("Введiть n=");
    scanf_s("%i", &n);
    for (int i = 1;i <= n;i++)
    {
        printf("Введiть a%d =", i);
        scanf_s("%d", &a);
    }
    printf("Середнє арифметичне простих=%f", is_simple(a, is_prime));
    return 0;
}

Помилки:
Ошибка    C4700    использована неинициализированная локальная переменная "k"
Ошибка    C4700    использована неинициализированная локальная переменная "is_prime"
Ошибка    C4700    использована неинициализированная локальная переменная "num"
Я не знаю чому вилазять такі помилки, через які не запускається програма. Допожіть знайти причину та вирішит проблему.

2

Re: Проблема з функцією

grinyuk309 написав:

Я не знаю чому вилазять такі помилки, через які не запускається програма. Допожіть знайти причину та вирішит проблему.

Не знаєте, але і не хочете знати.
Невже простіше поставити питання тут і чекати відповіді хтозна скільки ніж самому загуглити?

3

Re: Проблема з функцією

Скажіть, ви англійську знаєте? Бо виглядає, що російську ви не розумієте, але чомусь використовуєте саме російську версію IDE. Ставте англійську, воно з усіх боків вам буде корисно.

Задача про Котигорошка

Котигорошко зустрів трьох друзів, які пішли із ним. Згодом один друг пішов деінде. Скільки друзів тепер іде з Котигорошком?
Підказка: два - неправильна відповідь

Відповідь

На два більше, ніж було до початку задачі

Подякували: grinyuk309, plusxx2

4 Востаннє редагувалося ur_naz (20.11.2019 14:13:26)

Re: Проблема з функцією

яка різниця якою мовою читати, якщо розуму немає?

bool is_prime (unsigned n) {/*...Далі сам...*/}

Це ж такий сором, бо тут навіть глибоких знань не треба

5

Re: Проблема з функцією

grinyuk309 написав:

Мій перший код з функціями

ur_naz написав:

Це ж такий сором, бо тут навіть глибоких знань не треба

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

6

Re: Проблема з функцією

koala написав:

Скажіть, ви англійську знаєте? Бо виглядає, що російську ви не розумієте, але чомусь використовуєте саме російську версію IDE. Ставте англійську, воно з усіх боків вам буде корисно.

Задача про Котигорошка

Котигорошко зустрів трьох друзів, які пішли із ним. Згодом один друг пішов деінде. Скільки друзів тепер іде з Котигорошком?
Підказка: два - неправильна відповідь

Відповідь

На два більше, ніж було до початку задачі

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

7

Re: Проблема з функцією

Все майже правильно (надання типу - це проголошення, ініціалізація - то надання значення). Продовжуйте.

8

Re: Проблема з функцією

koala написав:

Все майже правильно (надання типу - це проголошення, ініціалізація - то надання значення). Продовжуйте.

Отже потрібно просто ініціалізувати ці зімінні локальні зміннні в тілі функції:

#include "pch.h"
#include <iostream>
float is_simple(int a)
{
    static int num=0, k=0;
    int is_prime = 1;
    for (int j = 2;j < a;++j)
        if (a%j == 0)
            is_prime = 0;
    if (is_prime == 1) 
    {
        k++;
        num += a;
    }
    return num / k;
}    
int main()
{    
    unsigned int n;
    int a, is_prime;
    setlocale(LC_CTYPE, "ukr");
    printf("Введiть n=");
    scanf_s("%i", &n);
    for (int i = 1;i <= n;i++)
    {
        printf("Введiть a%d =", i);
        scanf_s("%d", &a);
    }
    printf("Середнє арифметичне простих=%f", is_simple(a));
    return 0;
}


В випадку якщо останнє число просте, то програма виводить його хоч мала б виводити сер. арифметичне, а якщо останнє число не просте, то просто після натиску Enter  нічого більше не виводить, а навпроти рядка return num / k; вилазить примітка:Integer division by zero. ділення на нуль, тобто  k=0
Введiть n=4
Введiть a1 =5
Введiть a2 =6
Введiть a3 =7
Введiть a4 =7
Середнє арифметичне простих=7.000000

Йду продовжувати...

9

Re: Проблема з функцією

У мене таке враження, що ви неправильно сприймаєте поняття змінної в програмуванні. Змінна — це приблизно як шматочок дошки, де можна написати якесь число, а можна стерти та написати нове. Старі значення змінна не пам'ятає. Кожен scanf знищує попереднє значення.
І хто вам порадив використовувати static?

10

Re: Проблема з функцією

koala написав:

У мене таке враження, що ви неправильно сприймаєте поняття змінної в програмуванні. Змінна — це приблизно як шматочок дошки, де можна написати якесь число, а можна стерти та написати нове. Старі значення змінна не пам'ятає. Кожен scanf знищує попереднє значення.
І хто вам порадив використовувати static?

static я використав щоб просто подивиись, що він робить і забув прибрати

#include "pch.h"
#include <iostream>
float is_simple(int a)
{
    int num=0, k=0, is_prime = 1;
    for (int j = 2;j < a;++j)
        if (a%j == 0)
            is_prime = 0;
    if (is_prime == 1) 
    {
        k++;
        num += a;
    }
    return num / k;
}    
int main()
{    
    unsigned int n;
    int a;
    setlocale(LC_CTYPE, "ukr");
    printf("Введiть n=");
    scanf_s("%i", &n);
    for (int i = 1;i <= n;i++)
    {
        printf("Введiть a%d =", i);
        scanf_s("%d", &a);
    }
    printf("Середнє арифметичне простих=%f", is_simple(a));
    return 0;
}

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

11 Востаннє редагувалося wander (20.11.2019 20:07:25)

Re: Проблема з функцією

grinyuk309 написав:

static я використав щоб просто подивиись, що він робить і забув прибрати

Ем..
Зрозумійте одними питаннями на форумі і тиканням пальцем в небо не вивчити мову. Ваші питання це те, що розбирається в кількох перших главах будь-якої книжки по С++ для новачків.

12

Re: Проблема з функцією

adziri написав:
grinyuk309 написав:

static я використав щоб просто подивиись, що він робить і забув прибрати

Ем..
Зрозумійте одними питаннями на форумі і тиканням пальцем в небо не вивчити мову. Ваші питання це те, що розбирається в кількох перших главах будь-якої книжки по С++ для новачків.

Добре, порекомендуйте книгу, якщо можете.

13

Re: Проблема з функцією

grinyuk309 написав:
adziri написав:
grinyuk309 написав:

static я використав щоб просто подивиись, що він робить і забув прибрати

Ем..
Зрозумійте одними питаннями на форумі і тиканням пальцем в небо не вивчити мову. Ваші питання це те, що розбирається в кількох перших главах будь-якої книжки по С++ для новачків.

Добре, порекомендуйте книгу, якщо можете.

https://www.amazon.com/Primer-5th-Stanl … amp;sr=8-1
https://www.amazon.com/C-Programming-La … amp;sr=8-1

Вибирайте, яка більше сподобається. Перша чуть більше, як кажуть підходить для новачків, друга нібито більш складна (просто від творця С++), раджу полистати обидві і вибрати ту яка більше сподобається/здасться більш зрозумілою.

Подякували: grinyuk3091

14

Re: Проблема з функцією

adziri написав:
grinyuk309 написав:
adziri написав:

Ем..
Зрозумійте одними питаннями на форумі і тиканням пальцем в небо не вивчити мову. Ваші питання це те, що розбирається в кількох перших главах будь-якої книжки по С++ для новачків.

Добре, порекомендуйте книгу, якщо можете.

https://www.amazon.com/Primer-5th-Stanl … amp;sr=8-1
https://www.amazon.com/C-Programming-La … amp;sr=8-1

Вибирайте, яка більше сподобається. Перша чуть більше, як кажуть підходить для новачків, друга нібито більш складна (просто від творця С++), раджу полистати обидві і вибрати ту яка більше сподобається/здасться більш зрозумілою.

Дякую

15

Re: Проблема з функцією

adziri написав:
grinyuk309 написав:
adziri написав:

Ем..
Зрозумійте одними питаннями на форумі і тиканням пальцем в небо не вивчити мову. Ваші питання це те, що розбирається в кількох перших главах будь-якої книжки по С++ для новачків.

Добре, порекомендуйте книгу, якщо можете.

https://www.amazon.com/Primer-5th-Stanl … amp;sr=8-1
https://www.amazon.com/C-Programming-La … amp;sr=8-1

Вибирайте, яка більше сподобається. Перша чуть більше, як кажуть підходить для новачків, друга нібито більш складна (просто від творця С++), раджу полистати обидві і вибрати ту яка більше сподобається/здасться більш зрозумілою.

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

16 Востаннє редагувалося wander (20.11.2019 21:57:02)

Re: Проблема з функцією

grinyuk309 написав:
adziri написав:
grinyuk309 написав:

Добре, порекомендуйте книгу, якщо можете.

https://www.amazon.com/Primer-5th-Stanl … amp;sr=8-1
https://www.amazon.com/C-Programming-La … amp;sr=8-1

Вибирайте, яка більше сподобається. Перша чуть більше, як кажуть підходить для новачків, друга нібито більш складна (просто від творця С++), раджу полистати обидві і вибрати ту яка більше сподобається/здасться більш зрозумілою.

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

Боюсь в українському перекладі цих книг немає. Принаймні я не зустрічав.
Ці книжки є у вільному доступі як на англійській так і на російській мові. Раджу брати англійською.

17

Re: Проблема з функцією

adziri написав:
grinyuk309 написав:
adziri написав:

https://www.amazon.com/Primer-5th-Stanl … amp;sr=8-1
https://www.amazon.com/C-Programming-La … amp;sr=8-1

Вибирайте, яка більше сподобається. Перша чуть більше, як кажуть підходить для новачків, друга нібито більш складна (просто від творця С++), раджу полистати обидві і вибрати ту яка більше сподобається/здасться більш зрозумілою.

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

Боюсь в українському перекладі цих книг немає. Принаймні я не зустрічав.
Ці книжки є у вільному доступі як на англійській так і на російській мові. Раджу брати англійською.

Без сумніву, я погоджуюсь з вами, але я ще навіть шкільну програму не закінчив іне дуже скоро зможу вільно  читати англійською.)

18

Re: Проблема з функцією

grinyuk309 написав:
adziri написав:
grinyuk309 написав:

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

Боюсь в українському перекладі цих книг немає. Принаймні я не зустрічав.
Ці книжки є у вільному доступі як на англійській так і на російській мові. Раджу брати англійською.

Без сумніву, я погоджуюсь з вами, але я ще навіть шкільну програму не закінчив іне дуже скоро зможу вільно  читати англійською.)

Вільно ніхто і не заставляє, хороший привід підтягнути паралельно англійську чи не так?
В любому випадку ви все ще можете знайти та взяти російський переклад.

19

Re: Проблема з функцією

adziri написав:
grinyuk309 написав:
adziri написав:

Боюсь в українському перекладі цих книг немає. Принаймні я не зустрічав.
Ці книжки є у вільному доступі як на англійській так і на російській мові. Раджу брати англійською.

Без сумніву, я погоджуюсь з вами, але я ще навіть шкільну програму не закінчив іне дуже скоро зможу вільно  читати англійською.)

Вільно ніхто і не заставляє, хороший привід підтягнути паралельно англійську чи не так?
В любому випадку ви все ще можете знайти та взяти російський переклад.

Це вже друга причина вивчити англійську(перша-ЗНО з англ.) жаль тільки катастрофічно бракує часу

20

Re: Проблема з функцією

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

Мій перший код з функціями

ur_naz написав:

Це ж такий сором, бо тут навіть глибоких знань не треба

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

мені здається, ща просто глузувати з дурня не є етичним.
Але неможливо допомогти, якщо немає розуміння задачі, тобто структур даних і алгорітму.
я дав йому вірний заголовок функції, але він все одно продовжує своє.
Можна б було написати йому увесь код, але нащо? Чи літали б ви літаком для якого ПЗ написано ось такими?

Його біда в тому, що ві зразу взявся за написання коду і навіть не розібрав завдання. Тому він, як сліпе кошеня тикається об стіну. Якщо йому не забракло клепки скачати Visual Studio, тоді має вистачити розуму на розуміння нащо та функція is_prime і на те, щоб не видумувати велосипедів а взяти її з інету.