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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.11.2009, 21:23   #11
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Гром, огромное спасибо, буду анализировать что я намудрил


И это только первая часть лабы..... За вторую и не садился.
MR_Andrew вне форума Ответить с цитированием
Старый 21.11.2009, 21:24   #12
pproger
C++ hater
Старожил
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
#include "stdio.h"

int main() {
	int i;
	int max_val, min_val;
	int max_index, min_index;
	int mass[10] = { 9, 8, 2, 3, 4, 5, 6, 7, 2, 1 };

	max_val = min_val = mass[0];
	max_index = min_index = 0;

	for (i = 0; i < 10; i++) {
		printf("%d, ", mass[i]);
	}
	printf("\n");

	for (i = 0; i < 10; i++) {
		if (mass[i] > max_val) {
			max_val = mass[i];
			max_index = i;
		}
		else if (mass[i] < min_val) {
			min_val = mass[i];
			min_index = i;
		}
	}

	printf("max_val = %d, max_index = %d\n"
		   "min_val = %d, min_index = %d\n", max_val, max_index, min_val, min_index);

	mass[max_index] = min_val;
	mass[min_index] = max_val;
	
	for (i = 0; i < 10; i++) {
		printf("%d, ", mass[i]);
	}
	printf("\n");

	return 0;
}
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 21.11.2009, 21:36   #13
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

pproger, спасибо, но я пошел по пути Грома Итак, уже веселее. Но! почемуто весь массив заполняет одним значением. Что-то с рандом опять не так... Или я чего-то не вижу...

Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

const int N=80;
int main()
{
int i, D[N];
for(i=0; i<N; i++)
{
randomize();
D[i]=random(151)+50;
}
for (i=0; i<=80; i++)
printf(" %d ", D[i]);

int min, max;
max= D[0];
min= D[0];
for(i=1; i<=80; i++)
{
if (D[i]>max) {max= D[i];}
if (D[i]<min) {min= D[i];}
}
printf(" max= %i min= %i ", max, min);
getchar();
return 0;
}
Пока пойду искать как их местами (мин и макс) поменять и вывести новый массив заново (после замены).
MR_Andrew вне форума Ответить с цитированием
Старый 21.11.2009, 21:57   #14
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

randomize вообще запускают один раз перед использованием random'а. Так что его стоит поместить даже перед первым for'ом. Может это поможет.
И еще здесь
Код:
for (i=0; i<=80; i++)
замените <= на <. Элементы массивов в C/C++ нумеруются начиная с 0. Соответственно, D[N] содержит элементы D[0], ... D[N-1]. Вам нужно проверить элементы со второго по последний (т.к. первый сделали начальным значением), т.е. с 1го по 79й. Поэтому пишем i < 80.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 21.11.2009, 22:01   #15
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Нашел вот такую:

Код:
main()
{
 int a[N], sum;
 clrscr();
 input(a);
 work(a); printf("\n\n");
   for (int i=0; i<N; i++)
	{
	 if (a[i]>=0) printf(" %i ", a[i]);
	 else printf("%i ", a[i]);
	}
вот заумную структуру. Работать будет?
MR_Andrew вне форума Ответить с цитированием
Старый 21.11.2009, 22:05   #16
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Видимо, там где-то определены функции input и work. А вообще это, похоже, совсем из другой оперы.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 21.11.2009, 22:06   #17
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Именно так и вышло
Код:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>

const int N=80;
int main()
{
int i, D[N];
randomize();
for(i=0; i<N; i++)
{

D[i]=random(151)+50;
}
for (i=0; i<80; i++)
printf(" %d ", D[i]);

int min, max;
max= D[0];
min= D[0];
for(i=1; i<80; i++)
{
if (D[i]>max) {max= D[i];}
if (D[i]<min) {min= D[i];}
}
printf(" max= %i min= %i ", max, min);
getchar();
return 0;
}
Но это еще не все...
1. 151+50 - это я см придумал
Код:
D[i]=random(151)+50;
что ему написать,чтоб оно вообще любые брало (интеджер)?
2. Мин и макс поменять местами. Но это сам попробую сейчас, а вот с заполнением...
MR_Andrew вне форума Ответить с цитированием
Старый 21.11.2009, 22:06   #18
MR_Andrew
Форумчанин
 
Регистрация: 05.10.2009
Сообщений: 100
По умолчанию

Цитата:
Сообщение от Гром Посмотреть сообщение
Видимо, там где-то определены функции input и work. А вообще это, похоже, совсем из другой оперы.
тогда пошел еще искать способы поменять местами.
MR_Andrew вне форума Ответить с цитированием
Старый 21.11.2009, 22:16   #19
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

А собственно чтобы потом поменять местами наибольшее и наименьшее, надо запомнить их позиции.
Код:
if (D[i]>max)
 {
 max= D[i];
 n_max = i;
 }
А потом
Код:
D[n_max] = min;
D[n_min] = max;
И в результате, в общем-то, получится то же самое, что и написал pproger.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Старый 21.11.2009, 22:21   #20
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Варианта два: либо пользователь вводит с клавиатуры, либо генерируем рандомом. Ну или читаем с файла, командной строки, еще откуда-нибудь...
Первый:
Код:
for (int i = 0; i < N; i++)
 {
 printf("Enter %d-th number: " i);
 scanf("%d", D[i]);   //Навскидку не помню, D[i] - это адрес или все-таки надо &D[i]?
 }
А второй - почему бы и не тот, что вы сделали? Чем не тестовый вариант?
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
Задание на массивы Алексей777911 Фриланс 12 04.11.2009 14:31
задание на С blackbanny Помощь студентам 2 15.10.2009 09:39
Динамические массивы, определение/задание его длины Paul Hindenburg Общие вопросы C/C++ 1 31.05.2009 12:21