Функции

  • Автор темы PROGamer
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

PROGamer

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

#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);
}

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);
}

return A;
}

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. Обьясните мне пожалуйста, что я сделал не так и как все правильно распределить по функциям.
 
D

Dimmuborgir

Гость
#2
Код:
scanf("%d", &A[i]);
и это при том что A указатель на float не кажется ли вам несколько некорректным в данном коде? :)

а еще:

Код:
A = (float*)malloc(n*sizeof(float));
if(!A)
{ 
printf("*** Nepravilno!!! ***");
}
думаете что printf прекратит выполнение программы? :) логично было воспользоваться оператором return в этом случае.
 
Статус
Закрыто для дальнейших ответов.