Форум программистов, компьютерный форум CyberForum.ru

Определение максимальных элементов массива (С++) - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Упрощение и алгоритм http://www.cyberforum.ru/cpp-beginners/thread432484.html
Здрасте есть рекурентное выражение не удаётся упростить для нахождения итератора, (ВСЯ ПРОБЛЕМА - ЭТО ДВОЙНОЙ ФАКТОРИАЛ) и может поправите алгоритм double a,c,sum; sum = a=c=x; k=1; while (fabs(c)>esp) { c = ??; a*=-c; sum+=a;
C++ ошибки компиляции консоли с++ и zlib 1.1.3, visual studio 2010 Привет, скачал в интернете исходники zlib 1.1.3 (знаю, что последняя версия гораздо больше, но мне нужна именно эта) и в microsoft visual studio 2010 пытаюсь скомпилировать простенькое консольное с++ приложение, все файлы zlib включил в проект (архив со всем проектом http://www.fayloobmennik.net/1448112), но при компиляции лезет ряд ошибок, решение которых мне не удается найти в интернете: ... http://www.cyberforum.ru/cpp-beginners/thread432476.html
Рахработать программу 2 в 1! C++
Разработать две программы. Первая принимает от пользователя два значения времени – строки вида ЦЦ.ЦЦ.ЦЦ, где Ц – это любая цифра из диапазона . Далее она вычисляет полное количество секунд, прошедших между двумя значениями времени, и выводит его на экран. Вторая программа запускает первую в качестве вновь созданного процесса. ЗАРАНЕЕ СпасибоУ) :)
C++ Программа на c++ ( надо проверить )
Программа должна сортировать числа в массиве по возрастанию! Не мало раз проверял в чем касяк, не могу найти=) Если найдете, буду рад услышать ошибку) Вот сама программа: // Программа служит для того,чтобы правильно группировать элементы массива #include <iostream> using namespace std; int massiv = {34,23,1,54,32}; // Обозначаем массив и заполняем его предворительно
C++ перевод из string в int и обратно http://www.cyberforum.ru/cpp-beginners/thread432451.html
как?:)
C++ Списки помогите пожалуйста решить задачу! сформировать список из натуральных чисел. Найти среднее арифмитическое элементов списка и выяснить, есть ли в списке такой элемент. подробнее

Показать сообщение отдельно
Evgeniy_
0 / 0 / 0
Регистрация: 17.11.2011
Сообщений: 7
21.01.2012, 17:03     Определение максимальных элементов массива (С++)
Всем добрый день)
Задача следующая. Даны два массива, в одном 5 элементов, в другом 20. Определить индексы и значения максимальных элементов в каждом массиве.
Всё, в принципе, работает, но никак не хочет выводить максимальные элементы. Перепробовал много способов, в любом случае, выводит все элементы массива.
Если кто-нибудь сможет помочь, буду очень благодарен.
Нахождение максимальных элементов реализуется в процедуре, в блоке minmax.
Сама программа:
Заголовочный файл
Код:
Код
#define myunit_h
#ifdef myunit_h
struct spisok
{
char *name;
char mas;
};
int strimr(char *s);
void scopy(char *d, char *s);
int input(char *fname, spisok *&s,int &n);
void minmax(spisok *s,int n);
void output(spisok *s, int n);
void freenames(spisok *s, int n);
#endif
Исходный код
Код
#include <locale.h> 
#include <stdlib.h>
#include <iomanip>
#include "string"
#include <fstream>
#include <iostream>
#include <conio.h>
#include <string.h>
#include "myunit.h"

using namespace std;
void main()
{
	spisok *s1,*s2;
	setlocale(LC_CTYPE,"Russian");
	system("cls");
	char text1[_MAX_PATH],text2[_MAX_PATH];
	int n1=0,n2=0,i,p=0;
	do
	{
		system("cls");
		printf_s("1 - Ввод 1го массива\n2 - Ввод 2го массива\n");
		printf_s("3 - Вывод 1го массива\n4 - Вывод 2го массива\n");
		printf_s("5 - Вывести по условию 1й список\n6- Вывести по условию 2й список\n");
		printf_s("0 - Выход\n");
		scanf_s("%d",&i);
		system("cls");
		switch(i)
		{
			case 1:
			printf_s("Введите имя файла:");
			scanf_s("%s",text1,_MAX_PATH);
			p=input(text1,s1,n1);
			if(p)
			switch(p)
			{
				case 1:
				printf_s("\nФайл не открыт!");
				break;
				case 2:
				printf_s("\nОшибка при чтении!");
				break;
				case 3:
				printf_s("\nОшибка при выделении памяти!");
				break;
			}
			printf_s("Файл открыт\nPress any key to Return!");
			_getch();
			break;
			case 2:
			printf_s("Введите имя файла:");
			scanf_s("%s",text2,_MAX_PATH);
			p=input(text2,s2,n2);
			if(p)
			switch(p)
			{
				case 1:
				printf_s("\nФайл не открыт!");
				break;
				case 2:
				printf_s("\nОшибка при чтении!");
				break;
				case 3:
				printf_s("\nОшибка при выделении памяти!");
				break;
			}
			printf_s("Файл открыт\nPress any key to Return!");
			_getch();
			break;
			case 3:
			output(s1,n1);
			printf_s("Press any key to Return!");
			_getch();
			break;
			printf_s("Файл открыт\nPress any key to Return!");
			_getch();
			break;
			case 4:
			output(s2,n2);
			printf_s("Press any key to Return!");
			_getch();
			break;
			case 5:
			minmax(s1,n1);
			printf_s("Press any key to Return!");
			_getch();
			break;
			case 6:
			minmax(s2,n2);
			printf_s("Press Key to Return!");
			_getch();
			break;
	}
	} while (i!=0);
	freenames(s1,n1);
	freenames(s2,n2);

}
И сама процедура

Код
#include <iostream>
#include <conio.h>
#include "myunit.h"
#include <locale.h> 
#include <stdlib.h>
#include <iomanip>
#include "string"
#include <fstream>

using namespace std;

int strimr(char *s)
{setlocale(LC_CTYPE,"Russian");
system("CLS");
	int i=strlen(s);
	if(!i)
	return 0;
	i--;
	while ((i>=0)&(s[i]==' ')) i--;
	s[++i]=0;
	return i;
}
void scopy( char *d, char *s)
{setlocale(LC_CTYPE,"Russian");
system("CLS");
	while (*s)
	*d++=*s++;
	*d=0;
}
int input(char *fname, spisok *&s,int &n)
{
	FILE *f;
	if(fopen_s(&f,fname,"r")) 
	return 1;
	if (fscanf_s(f,"%*[ \t\n]")!=EOF)
	while(fscanf_s(f,"%*[^\n]\n")!=EOF) n++;
	if(!n)
	{
		s=NULL;
		fclose(f);
		return 2;
	}
        s=(spisok*)malloc(sizeof(spisok)*n);
	if (!s)
	{
		fclose(f);
		return 3;
	}
	rewind(f);
	char buf[40];
	fscanf_s(f,"%*[ \t\n]");
	for (int i=0;i<n;i++)
	{
		fscanf_s(f,"%40[^\0]%f\n",buf,40,&s[i].mas);
		s[i].name=(char*)malloc(strimr(buf)+1);
	if (!s[i].name)
	{
			fclose(f);
			for (int k=0;k<i;k++)
			free(s[k].name);
			free(s);
			return 3;
	}
	scopy(s[i].name,buf);
	}
	fclose(f);
	return 0;
}
void minmax(spisok *s,int n)
{
	int max=*s;
	printf_s("\nmax:\n");
	for (int i=0;i<n;i++)
	{
	if(s[i].mas>s[max].mas)  s[max].mas=i;
	}
	printf_s("%s\n",s[max].name,s[max].mas);


}
void output(spisok *s, int n)
{ 
	for (int i=0;i<n;i++)
		printf_s("%s\n",s[i].name,s[i].mas);
}
void freenames(spisok *s, int n)
{
	for (int i=0;i<n;i++)
		free(s[i].name);
	free(s);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru