С++, Функции, Неполучаеться засунуть код в функцию

С++ програмирование функции

Я написал прогу каторая выводит количество неповторяющихся в массиве чисел:

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

int main()
{
int n;
printf ("Vvedite razmernost massiva: ");
scanf ("%d", &n);

float *A;
A = (float*)malloc(n*sizeof(float));
if(!A)
{
printf("*** Nepravilno!!! ***");
}

int r = 0 ;
for (int i = 0; i < n; i++)
{
r++;
printf ("%d element: \t", r);
scanf("%d", &A[i]);
}

int m, q, i = 0;
for (q = 0 ; q < n; q++ )
{
bool f = true;
for (m = 0; m < n; m++ )
{
if ((q != m) && (A[q] == A[m]))
{
f = false;
}
}
if (f) i++;
}

printf("\nKolichestvo chisel katorie ne povtoryautsa: %d", i);
scanf("%d", &m);

}


НО эту задачку нада сделать по принципу модульности, тобиш разсовать все методы по разным функциям. Я в функциях не очень панимаю... Начал с того, что попыталься засунуть ввод массива в соответствующую функцию:

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


int Vvid(float *A, int n)
{
int i, r=0;
for (i = 0; i < n; i++)
{
r++;
printf ("%d element: \t", r);
scanf("%d", &A[i]);
}

return A[i];
}

int main()
{
int n, m, q, i, a = 0;;
bool f;
float *A;

printf ("Vvedite razmernost massiva: ");
scanf ("%d", &n);

A = (float*)malloc(n*sizeof(float));
if(!A)
{
printf("*** Nepravilno!!! ***");
}

Vvid(A, n);

for (q = 0 ; q < n; q++ )
{
f = true;
for (m = 0; m < n; m++ )
{
if ((q != m) && (A[q] == A[m]))
{
f = false;
}
}
if (f) a++;
}

printf("\nKolichestvo chisel katorie ne povtoryautsa: %d", i);
scanf("%d", &m);

}


Оно компилируеться, но в конце выводит неправильное i. Обьясните мне пожалуйста, что я сделал не так и как все правильно распределить по функциям.
Ответы:
Найди одно отличие.
Ошибка здесь:
for (q = 0 ; q < n; q++ )
{
f = true;
for (m = 0; m < n; m++ )
{
if ((q != m) && (A[q] == A[m]))
{
f = false;
}
}
if (f) a++;
}
в конце - это на печать в конце ьфшт() или по возврате из функции?
В первом случае у тебя всегда будет 0, поскольку i  вообще нигде не меняется в теле main().
А в конце Vvid() значение i всегда равно n, каким оно устанавливается по выходе из цикла.


15 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.