Страница 1 из 4
Помогите пожалуйста С++... массивы одномерные..
Добавлено: 22 фев 2008, 13:20
d1mkoo
Здравствуйте уважаемые программисты

это опять я)
Огромное спасибо за то што вы помогаете "нам", в решении "нелегких" для нас задач

Задание: "Одномерные массивы, задачи решать, используя функции.."
Сама задача :
В одномерный массив заданной размерности N (N от 2 до 30) вводятся произвольные числа. Определить начало и конец первой самой длинной последовательности подряд идущих нулевых элементов массива и количество этих элементов. Выполнить проверку правильности ввода информации.
ps огромное спасибо кто ответит, и огромный респект
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 22 фев 2008, 15:06
Kankay
Привет.
Решение твоей задачи выглядит так:
Код: Выделить всё
//#include "main.h"
// заполнение массива
void InputData(int pMas[], const int& nSize)
{
if (pMas==NULL) return; // подстраховались на случай когда массив есче не создан
cout<<"\nEnter the mass ( 4erez probel ):\n";
for(int i=0;i<nSize;i++)
cin>>pMas[i];
}
// вывод массива на экран
void ShowData(int pMas[], const int& nSize)
{
for(int i=0;i<nSize;i++)
cout<<pMas[i]<<" ";
}
// получение количества элементов подпоследовательности нулей
int GetCountOfZero(int pMas[], const int& nSize, const int& nIndex)
{
if(nIndex>=nSize) return -1; // подстраховались на случай выхода индекса за пределы массива
for(int i=nIndex+1;i<nSize;i++)
if(pMas[i]!=0)
break;
return i-nIndex;
}
void main()
{
int* pMas=NULL; // указатель на наш будущий массив
int nSize; // размер массива
bool bFlag=true; // флаг для определения правильности ввода количества элементов массива
int nMaxLen=0; // длина подпоследовательности нулей
int nTemp; // здесь временно храним длину текущей подпоследовательности нулей
int nStartPos; // позиция начала подпоследовательности нулей
int nEndPos; // позиция конца подпоследовательности нулей
while(bFlag) // контролируем правильный ввод длины массива
{
cout<<"\nVvedite razmer massiva (ot 2 do 30): ";
cin>>nSize;
if(nSize<2 || nSize>30) cout<<"Nepravilno vveden razmer massiva!";
else bFlag=false;
}
pMas=new int [nSize]; // создали динамический массив
InputData(pMas, nSize); // заполнили массив
cout<<"\nMassiv:\n";
ShowData(pMas, nSize); // вывели на экран полученный массив
// поиск подпоследовательностей нулей
for(int i=0;i<nSize;i++)
if(pMas[i]==0)
{
// определяем количество нулей подпоследовательности
nTemp=GetCountOfZero(pMas, nSize, i);
if(nMaxLen<nTemp)
{
nMaxLen=nTemp;
nStartPos=i; // записали начало подпоследовательности нулей
nEndPos=i+nMaxLen-1;// записали конец подпоследовательности нулей
}
}
// вывод результатов:
cout<<"\n\nResultat:"
<<"\nStart : "<<nStartPos
<<"\nEnd : "<<nEndPos
<<"\nCount : "<<nMaxLen;
cout<<endl;
delete [] pMas; // вернули память в кучу
}
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 23 фев 2008, 08:20
d1mkoo
спасибо большое... суть понял, но тут 13 ошибок...помогите, не могу понять што куда)))
ps у меня Borland C++Builder 6
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 23 фев 2008, 20:48
Kankay
d1mkoo писал(а):спасибо большое... суть понял, но тут 13 ошибок...помогите, не могу понять што куда)))
ps у меня Borland C++Builder 6
А ты попробуй в начале файла написать следующее:
Я писал в Visual Studio 2005. Все класно работает

Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 24 фев 2008, 07:22
d1mkoo
я вначале менял 0)) но там еще какие т ошибки) некоторые понял, некоторые нет)
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 24 фев 2008, 07:31
d1mkoo
ВОТ все ошибки..ps цифра это строка в которой ошибка))
E:\FileS\leaRNIn_INST_1_kurs\magu\2_semestr_18_02_2008\lab_4\main.cpp: In function `void ShowData(int*, int)':
E:\FileS\leaRNIn_INST_1_kurs\magu\2_semestr_18_02_2008\lab_4\main.cpp:16: error: `nSize' undeclared (first use this function)
E:\FileS\leaRNIn_INST_1_kurs\magu\2_semestr_18_02_2008\lab_4\main.cpp:16: error: (Each undeclared identifier is reported only once for each function it appears in.)
E:\FileS\leaRNIn_INST_1_kurs\magu\2_semestr_18_02_2008\lab_4\main.cpp: In function `int GetCountOfZero(int*, const int&, const int&)':
E:\FileS\leaRNIn_INST_1_kurs\magu\2_semestr_18_02_2008\lab_4\main.cpp:28: error: name lookup of `i' changed for new ISO `for' scoping
E:\FileS\leaRNIn_INST_1_kurs\magu\2_semestr_18_02_2008\lab_4\main.cpp:24: error: using obsolete binding at `i'
E:\FileS\leaRNIn_INST_1_kurs\magu\2_semestr_18_02_2008\lab_4\main.cpp: At global scope:
E:\FileS\leaRNIn_INST_1_kurs\magu\2_semestr_18_02_2008\lab_4\main.cpp:32: error: `main' must return `int'
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 25 фев 2008, 11:24
kapitay
Здравствуйте помогите пожалуйста с решением задачки с помощью массивов!
Суть заключается в том что ты вводишь 29 значения температуры и программа определяет сколько раз температура меняла свой знак (допустим +5, а затем уже -10...) и посчитать из всех значений продолжительность самой длительной оттепели (оттепель считается от 0 и до бесконечности
). Вообщем помогите пожалуйста, а то никак не помогу додуматься, схватиться за верную нить размышлений
P.S. На всякий случай свой мэйл оставляю:
hemo93@mail.ru
P.P.S. Программа должна работать в "console application"
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 25 фев 2008, 15:37
drummer
Если я правильмо понял, то
Код: Выделить всё
#include <stdio.h>
#include <iostream>
int main()
{
int max,k,i,t,prt,tp;
k=0;prt=0;max=0;tp=0;
for(i=0;i<3;i++)
{
cin>>t;
if(t>0){tp++;} else
{
if(max<tp)
{
max=tp;
};
tp=0;
};
if(prt*t<0)
{
k++;
};
prt=t;
};
cout<<k<<endl<<max;
return 0;
}
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 25 фев 2008, 15:58
kapitay
drummer, Спасибо огромное даже не ожидал что Вы так быстро работаете +) В коде разобрался и программа отлично работает. Плюс и респект большой
Re: Помогите пожалуйста С++... массивы одномерные..
Добавлено: 25 фев 2008, 22:31
Berger
здравствуйте!
помогите пожалуйста
надо в С++ написать программу, которая рисует и закрашивает круг заданного с клавиатуры радиуса
