Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2009, 16:05   #11
quartzz
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 14
По умолчанию

error C4716: 'fill_array' : must return a value

-ошибка указывает на конец блока fill_array.
quartzz вне форума Ответить с цитированием
Старый 28.06.2009, 16:11   #12
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну так заголовок функции вы изменили, но от этого ничего возвращать она не будет, пока сами не пропишете.
Вам нужно возвращать указатель на int, вот и добавьте
Код:
return mas;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.06.2009, 16:17   #13
quartzz
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 14
По умолчанию

Всё равно ситуация прежняя - ничего не сортирует по возрастанию, массив остаётся прежним. Выкладываю ВЕСЬ код программы из Visual Studio 2005. Может быть посмотрите на своём компиляторе, где там не так что-то.

Код:
#include "stdafx.h"
#include <iostream>
#include <cmath>


using namespace std;
static int size = 0;
static int *mas = NULL;

  int* fill_array()
 
{
	cout << "Vvedite razmer massiva : ";
	cin >> size;
	cout << endl;
	
	mas = new int [size];
	for (int i = 0; i < size; i++)
	{
		cout << "Vvedite element massiva " << (i + 1) << ": ";
		cin >> mas[i];
	}
   cout << endl;
   return mas;
  }

void view_array()
{
	cout<<"Nomer elementa massiva :\tZnachenije elementa massiva : \n";
	for(int i=0; i<size; i++)
  {
    cout<<i<<"                        \t"<< mas[i]<<"\n";
  }

}

void find_numbers()
{
	 cout<<"Vvedite iskomoe chislo ";
     int find;
	 cin>>find; //искомое число записывается в переменную find.
	 int count=0; //начальное кол-во искомых элементов инициализируется нулём.
    
	for(int i=0;i<size;i++)// проходит по всему массиву (от нуля до size).
    {
        if(mas[i]==find)/*если элемент массива совпадает с искомым
						- увеличиваем счётчик на 1.*/
        {
          count++;
        }
    } 
    cout<<"\nKolichestvo iskomih chisel v massive - "<<count;
    cout<<endl;
}



  void delete_null()
{
	
    int n,i,k; 
    n=size;// размер исходного массива
    k = -1; 
  for(i=0; i<n; i++)
      if(mas[i]==0)  // ищем нулевой элемент
     {
       k = i;  // запоминаем его индекс.
       break;
     }  
		  
	      if(k>-1) // если нулевой элемент был найден
     {
          n--;  // уменьшаем размер массива
         for(i=k;i<n;i++) 
          mas[i]=mas[i+1];  // и сдвигаем все, что правее нуля, влево
     } else // в противном случае выводим :
		  {
	        cout << "Nulevoj element ne bil najden, massiv ostalsa bez izmenenij " <<endl;
	      } 
   
		  cout << "Znachenije massiva na dannij moment :     ";
	   
		  for(i=0; i<n; i++)//до n (n - уменьшенное значение массива.
	   {
		   cout<<mas[i]<<" "; //выводим массив на текущий момент
	   }
      
	   cout<<endl; //переход на новую строчку
   }


  void elements(int* mas, int size)

 
 {
	 int k = 0;
     int i = 0;
     int temp1 = 0;
	 int temp2 = 0;
	 
	 while (k<size)  // выполняется столько раз, сколько всего записей в массиве (size).
   {
      while (i<size-1) //выполняется на 1 раз меньше, т.к. появляется лишний символ.
	{
	   if (mas[i]>mas[i+1]) //сравниваем два рядом стоящих числа. если 2-ое число меньше  
          
 	   {
	     temp1 = mas[i];   // большее число
	     temp2 = mas[i+1]; // меньшее число
	     mas[i] = temp2;  // меняем местами большее и меньшее числа.
	     mas[i+1] = temp1;
	   }
	      i++;
	 }
    i=0;
    k++;
   }

    
 }


int main()
{
	fill_array();
	int action;
	while (true)
	{
		action = 0;
		cout << "Viberete dejstvije: " << endl;
		
		while ( action < 1 || action > 5)
		{
			cout << "1: Pokazatj massiv" << endl;
		    cout << "2: Najti kol-vo zadannogo elementa v massive" << endl;
			cout << "3: Udalitj nulevoj element massiva" << endl;
			cout << "4: Perestavitj elementi massiva po vozrastaniju" << endl;
			cout << "5: Zakritj programmu" << endl;
			cin >> action;
			cout << endl;
			switch (action)
			{
			case 1:
				view_array();
				break;
			
			case 2:
				find_numbers();
				break;
			
			case 3:
				delete_null();
				break;
			
			case 4:
				void elements();
				break;
			
			case 5:
				exit(0);
				break;
			default:
				cout << "Viberete dejstvije: " << endl;
			}
		}
		cout << endl;
	}

	return 0;
}
quartzz вне форума Ответить с цитированием
Старый 28.06.2009, 16:24   #14
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
  void elements(int* mas, int size)
если у вас массив глобальный, то и незачем передавать его в качестве аргумента.
К тому же вы все равно ему ничего не передаете при вызове (вас должно было насторожить уже то, что все компилится без проблем).
Код:
case 4:
  void elements();
  break;
смотрим на эти строчки и ищем подвох. Не замечаете? void уберите.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.06.2009, 16:33   #15
quartzz
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 14
По умолчанию

действительно, просто скопировал в блок свич не убрав, поставил там
Код:
case 4:
				int elements();
				break;
но всё также - никакой сортировки не происходит.
quartzz вне форума Ответить с цитированием
Старый 28.06.2009, 16:40   #16
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А теперь подумайте, что вы сделали.
При вызове функции не нужно указывать ее тип.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.06.2009, 16:49   #17
quartzz
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 14
По умолчанию

я это сделал потому что если не указывать появляется ошибка :

error C2660: 'elements' : function does not take 0 arguments.
quartzz вне форума Ответить с цитированием
Старый 28.06.2009, 17:01   #18
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Правильно, потому что у вас функция принимает 2 аргумента, а передаете вы 0. Передайте 2 аргумента и все скомпилится.
MaTBeu вне форума Ответить с цитированием
Старый 28.06.2009, 17:22   #19
quartzz
Пользователь
 
Регистрация: 26.05.2009
Сообщений: 14
По умолчанию

сделал так
Код:
case 4:
				elements(mas,size);
				break;
и всё отлично сортирует! всё, программа готова. Всем огромное спасибо! Буду надеятся что прокатит =)
quartzz вне форума Ответить с цитированием
Старый 28.06.2009, 17:28   #20
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

quartzz, пара замечаний.
Как я уже сказал, раз у вас массив глобальный, то вам незачем передавать его в качестве параметра.
В функции fill_array вы возвращаете ваш массив (mas), но нигде этим не пользуетесь, т.к. не ничему не присваиваете то, что возвращает функция:
Код:
fill_array();
Аналогично и с elements().
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
поиск одинаковых элементов одномерного массива и их количества MyQwErTy Помощь студентам 2 28.02.2009 17:17
Сортировка одномерного массива введенного с клавиатуры по возрастанию sande Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 18.01.2009 20:31
из одномерного массива сделать матрицу Шико Паскаль, Turbo Pascal, PascalABC.NET 8 28.05.2008 08:26
Сортировка одномерного массива (ASM & C) voron Помощь студентам 0 02.12.2007 13:41