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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2008, 13:48   #11
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Счастье

Плиз выкинь проверочные файлы...
StarWorm вне форума Ответить с цитированием
Старый 24.11.2008, 13:49   #12
mmka
Пользователь
 
Регистрация: 15.11.2008
Сообщений: 11
По умолчанию

Цитата:
Кароч... Я бы заполнял так...
Либо массив структур... Либо три двумерных массива:
два char** и один int** Сортировка бы заключалась в том, что менять указатели!!! А потом обратно в файл это все запихать (после сортировки)!!!
Мне бы код... теоритически я могу представить.. но с с++ знаком лишь неделю( все операторы перемешались и уже отличить vb, php, tb, sql не могу.. сам с++ не замнимаюсь( ... я бы уже подогнал под себя...
Может кто такое уже делал?

Цитата:
Плиз выкинь проверочные файлы...
в смысле исходники? вот.
опттимизации и логичности мне не надо. главное чтобы работало.
results.txt для работы программы.
в best.txt записывается одна из функций программы.
в temp.txt промежуточные вещи для функций 1-4.

структура такая: чел вводит
1 - для просмотра results.txt - сделано
2 - для добавления в results.txt - сделано
3 - для удаления строчки - сделано
4 - редатирования - сделано
5 - для сортировки - не сделано(
Вложения
Тип файла: txt 12312.txt (6.5 Кб, 163 просмотров)
Тип файла: txt best.txt (65 байт, 149 просмотров)
Тип файла: txt results.txt (121 байт, 159 просмотров)

Последний раз редактировалось mmka; 24.11.2008 в 13:56.
mmka вне форума Ответить с цитированием
Старый 24.11.2008, 14:03   #13
como
Форумчанин
 
Регистрация: 26.07.2008
Сообщений: 116
По умолчанию

Цитата:
Сообщение от mmka Посмотреть сообщение
> Плиз выкинь проверочные файлы...

в смысле исходники? вот.
Теперь, пожалуйста, закинь их обратно Программа у тебя мощная! Я думаю, что слишком сложно еще на твоем уровне заниматься сортировкой по отдельным словам.
como вне форума Ответить с цитированием
Старый 24.11.2008, 14:05   #14
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

Ну на, посмотри примерно!
Код:
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <conio.h>

struct My
{
	char str1[255];
	char str2[255];
	int arr[3];
};

using namespace std;

int main()
{
	My** myArr=new My*[100];
	for(int i=0;i<100;i++)
		myArr[i]=new My;
	
	char filename1[]="C:/1.txt";
	char* token;
	ifstream file1(filename1);
	if(!file1)
	{
		cerr<<"Error!!!\n";
		getch();
		return 0;
	}
	char str[255];
	int countWord=0;
	int countStr=0;
	while(file1.getline(str,255,'\n'))
	{
		countWord=0;
		token = strtok(str," ");
		countWord++;
		strcpy(myArr[countStr][0].str1,token);
		while(token != NULL)
		{
			token = strtok(NULL," ");
			countWord++;
			if(countWord==2)
				strcpy(myArr[countStr][0].str2,token);
			else if(countWord==3)
				myArr[countStr][0].arr[0]=atoi(token);
			else if(countWord==4)
				myArr[countStr][0].arr[1]=atoi(token);
			else if(countWord==5)
				myArr[countStr][0].arr[2]=atoi(token);
			else
				countStr++;
		}
	}
	for(int i=0;i<countStr;i++)
		cout<<myArr[i][0].str1<<" "<<myArr[i][0].str2<<" "<<myArr[i][0].arr[0]<<" "<<myArr[i][0].arr[1]<<" "<<myArr[i][0].arr[2]<<"\n";
	
	
	getch();
	return 0;
}
А с сортировкой то - это чел выбирает, по 1,2 или 3 столбцу сортировать???
P.S. это я тебе все данные загнал в массив структур!

Последний раз редактировалось StarWorm; 24.11.2008 в 14:07.
StarWorm вне форума Ответить с цитированием
Старый 24.11.2008, 14:08   #15
mmka
Пользователь
 
Регистрация: 15.11.2008
Сообщений: 11
По умолчанию

Цитата:
Теперь, пожалуйста, закинь их обратно Программа у тебя мощная! Я думаю, что слишком сложно еще на твоем уровне заниматься сортировкой по отдельным словам.
Да, а отчисление не рано получается? Я бы с удовольствием не занимался.
Цитата:
Ну на, посмотри примерно!
Сейчас буду изучать...
mmka вне форума Ответить с цитированием
Старый 24.11.2008, 14:22   #16
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Счастье

Вот тебе прога...
Функции сам пиши... Ну типо вывод структуры на экран, или забивка в файл...
Код:
#include "stdafx.h"
#include <fstream>
#include <iostream>
#include <conio.h>

struct My
{
	char str1[255];
	char str2[255];
	int arr[3];
};

using namespace std;

int max3(int a,int b,int c)
{
	if(a>b && a>c)return a;
	else if(b>a && b>c)return b;
	else return c;
}

void sortStruct(My** myArr,int dimCount,int stolbec)
{
	switch(stolbec)
	{
	case 1:
		for(int i=0;i<dimCount-1;i++)
			for(int j=i+1;j<dimCount;j++)
				if(strcmp(myArr[i][0].str1,myArr[j][0].str1)>0)
				{
					My* tmp=myArr[i];
					myArr[i]=myArr[j];
					myArr[j]=tmp;
				}
		break;
	case 2:
		for(int i=0;i<dimCount-1;i++)
			for(int j=i+1;j<dimCount;j++)
				if(strcmp(myArr[i][0].str2,myArr[j][0].str2)>0)
				{
					My* tmp=myArr[i];
					myArr[i]=myArr[j];
					myArr[j]=tmp;
				}
		break;
	case 3:
		for(int i=0;i<dimCount-1;i++)
			for(int j=i+1;j<dimCount;j++)
			{
				int tmp1=max3(myArr[i][0].arr[0],myArr[i][0].arr[0],myArr[i][1].arr[2]);
				int tmp2=max3(myArr[j][0].arr[0],myArr[j][0].arr[0],myArr[j][1].arr[2]);
				if(tmp1>tmp2)
				{
					My* tmp=myArr[i];
					myArr[i]=myArr[j];
					myArr[j]=tmp;
				}
			}
	}
}

int main()
{
	My** myArr=new My*[100];
	for(int i=0;i<100;i++)
		myArr[i]=new My;
	
	char filename1[]="C:/1.txt";
	char* token;
	ifstream file1(filename1);
	if(!file1)
	{
		cerr<<"Error!!!\n";
		getch();
		return 0;
	}
	char str[255];
	int countWord=0;
	int countStr=0;
	while(file1.getline(str,255,'\n'))
	{
		countWord=0;
		token = strtok(str," ");
		countWord++;
		strcpy(myArr[countStr][0].str1,token);
		while(token != NULL)
		{
			token = strtok(NULL," ");
			countWord++;
			if(countWord==2)
				strcpy(myArr[countStr][0].str2,token);
			else if(countWord==3)
				myArr[countStr][0].arr[0]=atoi(token);
			else if(countWord==4)
				myArr[countStr][0].arr[1]=atoi(token);
			else if(countWord==5)
				myArr[countStr][0].arr[2]=atoi(token);
			else
				countStr++;
		}
	}
	for(int i=0;i<countStr;i++)
		cout<<myArr[i][0].str1<<" "<<myArr[i][0].str2<<" "<<myArr[i][0].arr[0]<<" "<<myArr[i][0].arr[1]<<" "<<myArr[i][0].arr[2]<<"\n";
	sortStruct(myArr,countStr,1);
	cout<<"\n";
	for(int i=0;i<countStr;i++)
		cout<<myArr[i][0].str1<<" "<<myArr[i][0].str2<<" "<<myArr[i][0].arr[0]<<" "<<myArr[i][0].arr[1]<<" "<<myArr[i][0].arr[2]<<"\n";
	sortStruct(myArr,countStr,2);
	cout<<"\n";
	for(int i=0;i<countStr;i++)
		cout<<myArr[i][0].str1<<" "<<myArr[i][0].str2<<" "<<myArr[i][0].arr[0]<<" "<<myArr[i][0].arr[1]<<" "<<myArr[i][0].arr[2]<<"\n";
	sortStruct(myArr,countStr,3);
	cout<<"\n";
	for(int i=0;i<countStr;i++)
		cout<<myArr[i][0].str1<<" "<<myArr[i][0].str2<<" "<<myArr[i][0].arr[0]<<" "<<myArr[i][0].arr[1]<<" "<<myArr[i][0].arr[2]<<"\n";
	
	
	getch();
	return 0;
}
Можешь проверить!
Вот в этой функции забыл сделать, если числа одинаковые... Сам поправишь
Код:
int max3(int a,int b,int c)
{
	if(a>b && a>c)return a;
	else if(b>a && b>c)return b;
	else return c;
}

Последний раз редактировалось StarWorm; 24.11.2008 в 14:24.
StarWorm вне форума Ответить с цитированием
Старый 24.11.2008, 14:33   #17
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
Смех

вместо:
int tmp1=max3(myArr[i][0].arr[0],myArr[i][0].arr[0],myArr[i][1].arr[2]);
int tmp2=max3(myArr[j][0].arr[0],myArr[j][0].arr[0],myArr[j][1].arr[2]);
надо:
int tmp1=max3(myArr[i][0].arr[0],myArr[i][0].arr[1],myArr[i][1].arr[2]);
int tmp2=max3(myArr[j][0].arr[0],myArr[j][0].arr[1],myArr[j][1].arr[2]);
StarWorm вне форума Ответить с цитированием
Старый 24.11.2008, 15:07   #18
mmka
Пользователь
 
Регистрация: 15.11.2008
Сообщений: 11
По умолчанию

Запустить не могу. Одну библиотеку нашел. Перестал на 1 ругаться.
Вторую тоже нашел. (altstr.h) однако продолжает ругаться (кинул в C Builder 6\Include\) (ругается stdafx.h)
mmka вне форума Ответить с цитированием
Старый 24.11.2008, 15:16   #19
StarWorm
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 233
По умолчанию

значит просто выкинь этот файл! (убери инклуд этот) он нужен для VS2005 и выше!
StarWorm вне форума Ответить с цитированием
Старый 24.11.2008, 15:30   #20
mmka
Пользователь
 
Регистрация: 15.11.2008
Сообщений: 11
По умолчанию

сделал как вы сказали
Вот что получилось (все ненужное удалил (лишнее))
В итоге он при запуске 4 раза выводит строчки в сортировке...
Хотелось бы узнать что раньше делала прога? Хотя бы примерно..
ps да бог с ними с числами...
Код:
   #include <iostream.h>
#include <fstream.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>
#include <windows.h>
#include <iomanip.h>
#include <locale>
#include <fstream>
#include <iostream>





struct My
{
	char str1[255];
	char str2[255];
	int arr[3];
};

using namespace std;

int max3(int a,int b,int c)
{
	if(a>b && a>c)return a;
	else if(b>a && b>c)return b;
	else return c;
}

void sortStruct(My** myArr,int dimCount,int stolbec)
{
	switch(stolbec)
	{
	case 1:
		for(int i=0;i<dimCount-1;i++)
			for(int j=i+1;j<dimCount;j++)
				if(strcmp(myArr[i][0].str1,myArr[j][0].str1)>0)
				{
					My* tmp=myArr[i];
					myArr[i]=myArr[j];
					myArr[j]=tmp;
				}
		break;
	case 2:
		for(int i=0;i<dimCount-1;i++)
			for(int j=i+1;j<dimCount;j++)
				if(strcmp(myArr[i][0].str2,myArr[j][0].str2)>0)
				{
					My* tmp=myArr[i];
					myArr[i]=myArr[j];
					myArr[j]=tmp;
				}
		break;
	case 3:
		for(int i=0;i<dimCount-1;i++)
			for(int j=i+1;j<dimCount;j++)
			{
				int tmp1=max3(myArr[i][0].arr[0],myArr[i][0].arr[1],myArr[i][1].arr[2]);
				int tmp2=max3(myArr[j][0].arr[0],myArr[j][0].arr[1],myArr[j][1].arr[2]);
				if(tmp1>tmp2)
				{
					My* tmp=myArr[i];
					myArr[i]=myArr[j];
					myArr[j]=tmp;
				}
			}
	}
}


void main()
{
 FILE *f;
 const int r=100;
 char S[r];
 int bestresult;
 int k,d,b,er,n,nomerstroki;
 char newstr[50]="";
 char badfam[50]="";
 char best[10]="";
  char buf[100]="";
 char buffer[15];
 char familia[30]="";
 char strana[30]="";
 int numb=10;
 int abcd=5;
 int err=0;
 char massiv[10];
 clrscr();


 uslovie: if (numb!=0) {
 cout<<"\nVvedite 1 esli vam nygno chtobi prosmotret' fail results.txt i zapisat v fail best.txt lushcgo prigyna\n Vvedite 2 esl vi hotite
 dobavit uchastnika v fail results.txt \n Vvedite 3 esli vi hotite udalit' uchastnika \n vvedite 4 esli hotite otredactirovat  
uchastnika \n vvedite 5 esli hotite prosmotret results.txt v sortirovke\n"; cin>>numb;

if (numb==5)
{
cout<<"\nVvedite 1 esli hotite otsortirovat po familii, 2 - po strane, 3 - po lucheshemy prigky\n";  cin>>badfam;

	My** myArr=new My*[100];
	for(int i=0;i<100;i++)
		myArr[i]=new My;
	
	char filename1[]="C:/temp.txt";
	char* token;
	ifstream file1(filename1);
	char str[255];
	int countWord=0;
	int countStr=0;
	while(file1.getline(str,255,'\n'))
	{
		countWord=0;
		token = strtok(str," ");
		countWord++;
		strcpy(myArr[countStr][0].str1,token);
		while(token != NULL)
		{
			token = strtok(NULL," ");
			countWord++;
			if(countWord==2)
				strcpy(myArr[countStr][0].str2,token);
			else if(countWord==3)
				myArr[countStr][0].arr[0]=atoi(token);
			else if(countWord==4)
				myArr[countStr][0].arr[1]=atoi(token);
			else if(countWord==5)
				myArr[countStr][0].arr[2]=atoi(token);
			else
				countStr++;
		}
	}
	for(int i=0;i<countStr;i++)
		cout<<myArr[i][0].str1<<" "<<myArr[i][0].str2<<" "<<myArr[i][0].arr[0]<<" "<<myArr[i][0].arr[1]<<" "<<myArr[i][0].arr[2]<<"\n";
	sortStruct(myArr,countStr,1);
	cout<<"\n";
	for(int i=0;i<countStr;i++)
		cout<<myArr[i][0].str1<<" "<<myArr[i][0].str2<<" "<<myArr[i][0].arr[0]<<" "<<myArr[i][0].arr[1]<<" "<<myArr[i][0].arr[2]<<"\n";
	sortStruct(myArr,countStr,2);
	cout<<"\n";
	for(int i=0;i<countStr;i++)
		cout<<myArr[i][0].str1<<" "<<myArr[i][0].str2<<" "<<myArr[i][0].arr[0]<<" "<<myArr[i][0].arr[1]<<" "<<myArr[i][0].arr[2]<<"\n";
	sortStruct(myArr,countStr,3);
	cout<<"\n";
	for(int i=0;i<countStr;i++)
		cout<<myArr[i][0].str1<<" "<<myArr[i][0].str2<<" "<<myArr[i][0].arr[0]<<" "<<myArr[i][0].arr[1]<<" "<<myArr[i][0].arr[2]<<"\n";



goto uslovie;
}


}
              getch();
              }
mmka вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как ускорить загрузку списка ListBox из txt-файла? Dux Компоненты Delphi 24 30.10.2008 19:02
Сформировать список строк L1, считав его из файла input.txt Gaika Помощь студентам 4 03.07.2008 07:33
Запись из файла txt или mdb в базу данных DerSky БД в Delphi 6 09.06.2008 12:50
Разделение txt файла на несколько htm Tiger16 Фриланс 3 17.04.2008 22:40
как считать данные с Txt файла? Alar Общие вопросы Delphi 0 29.10.2006 20:12