Страница 1 из 1

2 части в одну

Добавлено: 22 фев 2010, 20:48
Евгений Александрович
функцию сортировки массива структур поместить в отдельный файл. (программа состоит из 2ух частей: отсновная и
функция сортировки, которую необходимо связять с основной). Возникают ошибки. ЧТо у меня не так?!
1ая часть:

Код: Выделить всё

#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include "summa2.cpp"
 int kol_domov;
  struct fond{
	 	char adr[50];
	int number;
	int number_of_the_contract;
};
static fond list[20],temp[20];
extern void ENTER()
{
	register int a;
	printf(" Kak mnogo domov?!:\n");
	scanf("%i",&kol_domov);
	for(a=0;a<kol_domov;a++){
		printf("Enter adress:\n");
		scanf("%s",&list[a].adr);
		printf("Enter number of house:\n");
		scanf("%i",&list[a].number);
		printf("Vvedite number of the contact:\n");
			scanf("%d",&list[a].number_of_the_contract);
	}
}
	extern void print(){
		register int a;
		printf("\n");
		for(a=0;a<kol_domov;a++){
			printf("%d%10s%18d%16d",a,list[a].adr,list[a].number,list[a].number_of_the_contract);

			printf("\n");getch();}
	}
	 int read(){
			register int a;
			printf("Enter number of the contact: ");
			auto int choice1;
			scanf("%i",&choice1);
			for(a=0;a<kol_domov;a++);
			{
				if(choice1==list[a].number_of_the_contract){
		
			printf("# adress number number_of_the_contact");
		for(a=0;a<kol_domov;a++){
			printf("%d%10s%18d%16d",a,list[a].adr,list[a].number,list[a].number_of_the_contract);
printf("\n");
}
				}
				else printf("Have not find");
				
			}
			return 0;
	}
	
	 int menu()
{
    int choice;
   printf("***MAIN MENU***\n\n\n");
  printf ( "1 - vvod dannyx\n");
    printf( "2 - READ(search)\n");
	printf("3 - show\n");
    printf( "4 - EXIT\n");
	printf("5 - sort\n");
  printf(":");
     scanf("%i",&choice);
        return choice;
}		
 int main(){
	auto int c;
	void ENTER();
	void print();
	void sort();
	extern int read();
	int menu();
	for(; ;) {
int choice=menu();
			switch(choice)
{
	case (1):ENTER();
				break;
			case (2): read();
				break;
			case (3): print();
				break;
			case (4): return 0;
				break;
			case (5): sort(); break;
			default: printf("Error~!");
				break;
			}}
	}
	
2ая часть(то,что необходимо добавить к основному):

Код: Выделить всё

#include <stdio.h>
#include <conio.h>
 void sort(){
				register int a,b;
				 int kol_domov;
				printf("   FIRST LIST: ");
for(a=1;a<kol_domov;a++) 
for(b=kol_domov-1;b>=a;b--)
{
	
if(list[b-1].number_of_the_contract>list[b].number_of_the_contract)
{
	temp[b]=list[b-1];
list[b-1]=list[b];
list[b]=temp[b];
}
printf("   NEW \n");

getch();
}}

Re: 2 части в одну

Добавлено: 23 фев 2010, 01:28
Newbie
#include "summa2.cpp"

Re: 2 части в одну

Добавлено: 23 фев 2010, 03:14
IceFlame
Вообще тут ужас, летящий на крыльях ночи. Хотя бы отступы расставили.
А так проблема в том, что структура fond и соотв.переменные list и temp используются в файле summa2.cpp, но еще не объявлены.
Надо сделать что-то вроде этого:

Код: Выделить всё

struct fond
    {
    char adr[50];
    int number;
    int number_of_the_contract;
};
static fond list[20],temp[20];
#include "summa2.cpp"
Хотя проще тупо скопировать листинг второго файла, ибо включать сами файлы с кодом глупо.

Re: 2 части в одну

Добавлено: 23 фев 2010, 20:13
Евгений Александрович
Большое спс за помощь, но у меня возникла новая проблема:
при активизации сортировки выдает только значение под первым номером(Нулевую по спису строку игнорирует).
Как правильны вывести мою сортировку? Делал еще так(безуспешно):

Код: Выделить всё

void sort(){
				register int a,b;
				extern int kol_domov;
				for(b=1;b<kol_domov;b++)
				for(a=0;a<kol_domov-b;a++) 
{
	
if(list[a].number_of_the_contract>list[a+1].numbera_of_the_contract)
{
	temp[b]=list[a];
list[a]=list[a+1];
list[a+1]=temp[b];
}
}
for(a=0;a<kol_domov;a++){
	printf("%d%10s%18d%16d",a,list[a].adr,list[a].number,list[a].number_of_the_contract);}
 getch();
 }