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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2009, 22:28   #1
bars1984
Пользователь
 
Регистрация: 10.05.2009
Сообщений: 32
По умолчанию одномернные массивы

найти максимальное значение среди отрицательных элементов, расположенных до первого элемента равного Т

как в программе ввести элемент Т? Язык Си
bars1984 вне форума Ответить с цитированием
Старый 11.05.2009, 22:30   #2
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Код:
var
t:integer;
//-------------
WriteLn('Vvedite t');
ReadLn(t);
Извиняюсь перепутал ))
Levsha100 вне форума Ответить с цитированием
Старый 11.05.2009, 22:35   #3
bars1984
Пользователь
 
Регистрация: 10.05.2009
Сообщений: 32
По умолчанию

Я написала программу, но она не правильно работает
пожалуйста, найдите ошибки

Код:
#include <stdio.h>

int main()
{
	int n, a[20], i, k, max, T, index;

	printf("Enter n:\n");
		scanf("%d", &n);
	
	printf("Enter T:\n");
	scanf("%d", &T);

	for( i=0; i<n; i++)
		scanf("%d", &a[i]);


	for(i=0; a[i]!=T && i<n; i++)
	
		k=i;
		if( k==n)
			printf("No otr\n");
			else
			if(k==0)
				printf("T per\n");
			else
				index = -1;

			for(i=0; a[i]>=0 && i<n; i++)
				if(i==n)
					printf("otr no\n");
				else
			max = a[i];

		for(; i<n; i++)
			if(a[i]>max && a[i]<0)
				max = a[i];
			
			printf( "Enter max is %d\n", max );
			return 0;

}

Последний раз редактировалось Stilet; 12.05.2009 в 10:44.
bars1984 вне форума Ответить с цитированием
Старый 11.05.2009, 22:52   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
#include <stdio.h>
#include <conio.h>

int main()
{
int n, a[20], i, k, max, T;

printf("Enter n:\n");
scanf("%d", &n); // вводим n

for( i=0; i<n; i++)
scanf("%d", &a[i]);  // вводим элементы

printf("Enter T:\n");
scanf("%d", &T);  // вводим T

for(k=-1,i=0; i<n && k==-1; i++)
 if(a[i]==T) k=i;

if(k==-1) printf("Net elementa = T\n");
else
  for(max=-1,i=0; i<k; i++)
   if(a[i]<0 && (max==-1 || a[i]>a[max])) max=i;

if(max>-1) printf("max = %d\n",a[max]);
else printf("Net otricatelnyh elementov\n");

getch();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.05.2009, 22:57   #5
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
Радость

Вопрос совершенно не в тему: В языке Си есть библиотека <iostream>? Можно ли выводить инфу в консоль так
Код:
 std::cout<<a;
?
Levsha100 вне форума Ответить с цитированием
Старый 11.05.2009, 22:59   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Levsha100
Вопрос совершенно не в тему: В языке Си есть библиотека <iostream>? Можно ли выводить инфу в консоль так
В чистом Си - нельзя. Это библиотека C++.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.05.2009, 23:19   #7
bars1984
Пользователь
 
Регистрация: 10.05.2009
Сообщений: 32
По умолчанию

for(k=-1,i=0; i<n && k==-1; i++)
if(a[i]==T) k=i;

что обозначает к=-1, откуда -1?
bars1984 вне форума Ответить с цитированием
Старый 11.05.2009, 23:23   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
что обозначает к=-1, откуда -1?
-1 Означает, что нужный индекс еще не найден.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 11.05.2009, 23:50   #9
bars1984
Пользователь
 
Регистрация: 10.05.2009
Сообщений: 32
По умолчанию

for(k=-1,i=0; i<n && k==-1; i++)
if(a[i]==T) k=i;

if(k==-1) printf("Net elementa = T\n");
else
for(max=-1,i=0; i<k; i++)
if(a[i]<0 && (max==-1 || a[i]>a[max])) max=i;



мне трудно понять эту часть программы
пожалуйста объясните по этапно что делается
bars1984 вне форума Ответить с цитированием
Старый 11.05.2009, 23:55   #10
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
for(k=-1,i=0; i<n && k==-1; i++)
 if(a[i]==T) k=i;
Нужно найти индекс элемента, который равен T.
Вначале k=-1, что значит, что элемент еще не найден. Перебираем элементы.
Если a[i]==T, то запоминаем индекс (k=i) и выходим из цикла.

Код:
if(k==-1) printf("Net elementa = T\n");
Если k=-1, значит в массиве нет элемента равного T.

Код:
else
  for(max=-1,i=0; i<k; i++)
   if(a[i]<0 && (max==-1 || a[i]>a[max])) max=i;
иначе продолжаем.
Нужно найти максимум среди отрицательных элементов. В max будем хранить индекс.
Сначала нам не известно, есть ли в массиве отрицательные элементы. Поэтому сделаем max = -1
Просматриваем массив до элемента с индексом k.
Если встретили отрицательный элемент, то
если max = -1 (еще ничего не запомнили) ИЛИ если текущий элемент больше того, что запомнили, то запоминаем его индекс.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны одномерные массивы А и В. Сформировать массивы, состоящие из элемент LyaLya Помощь студентам 15 20.12.2009 14:12
Массивы AlexLAN Паскаль, Turbo Pascal, PascalABC.NET 0 26.11.2008 18:05
Массивы в С\С++ Zahar11 Помощь студентам 4 31.05.2008 00:35