|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
23.05.2018, 20:57 | #1 (permalink) |
Новичок
Регистрация: 19.05.2018
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Работа с группами элементов в массиве
Код:
#include <iostream> using namespace std; int main() { int i,j,n,ip,i1,k; float a[n]; cout<<"Razmer massiva="; cin>>n; for(i=0;i<n;i++) { cout<<"Vvedite element massiva:"<<"a["<<i<<"]="; cin>>a[i]; } cout<<endl; ip=0; i=n; while(i>0 && ip==0) if (a[i]<0 && a[i-1]<0) ip=i; else i=i-1; if (ip==0) cout<<"V massive net bolee odnogo otricattel`nogo elementa podryad"; else { k=0; i=ip; i1=ip; while(i>=1 && i1==ip) if(a[i]<=0 || i==1) i1=i; else { k=k+1; i=i-1; } cout<<"Nachalo predposlednei gruppy="<<i1<<endl<<"Konec="<<ip<<endl; cout<<"Predposlednyaya gruppa otricatel`nyh elementov:"; for(i=i1;i<ip;i++) cout<<a[i]; cout<<endl; if (k=n) cout<<"Vse elementy ydaleny"; else { cout<<"Ydalenie gruppy:"; for (i=0;i<k;i++) { for (j=i1;j<n-1;j++) a[j]=a[j+1]; n=n-1; } for (i=0;i<n;i++) cout<<a[i]; } } return 0; } |
23.05.2018, 20:57 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Рекомендую вам прочитать темы, которые уже тут встречались В одномерном массиве с четным кол-вом элементов (2N) Задача о массиве В массиве А(12) вычислить произведение |
24.05.2018, 18:07 | #2 (permalink) |
Новичок
Регистрация: 19.05.2018
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Простите за мою неосмотрительность. Код в теме не тот. Удаление этой группы мне не нужно.
Код:
#include <iostream> using namespace std; int main() { int i,j,n,ip,i1,in,i2,k; float a[n]; cout<<"Razmer massiva="; cin>>n; for(i=0;i<n;i++) { cout<<"Vvedite element massiva:"<<"a["<<i<<"]="; cin>>a[i]; } cout<<endl; ip=0; //будем искать конец последней группы ip i=n; while(i>0 && ip==0) if (a[i]<0 && a[i+1]<0) ip=i; //нашли else i=i-1; //не нашли if (ip==0) cout<<"V massive net bolee odnogo otricattel`nogo elementa podryad"; else //если нашли, ищем её начало i1 и длину k { k=0; i=ip; i1=ip; while(i>=1 && i1==ip) if(a[i]<=0 || i==1) i1=i+1; else { k=k+1; i=i-1; } } in=0; // Предпоследнюю группу. i=n; while(i>0 && in==0 ) if (a[i]<0 && a[i+1]<0) in=i; else i=i-1; if (in==0) cout<<"V massive net bolee odnogo otricattel`nogo elementa podryad"; else { k=0; i=in; i2=in; while(i>=1 && i2==in) if(a[i]<=0 || i==1) i2=i+1; else { k=k+1; i=i-1; } } cout<<"Nachalo predposlednei gruppy="<<in<<endl<<"Konec="<<i2<<endl; cout<<"Predposlednyaya gruppa otricatel`nyh elementov:"; for(i=in;i<=i2;i++) cout<<a[i]; cout<<endl; return 0; } |
25.05.2018, 15:43 | #3 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Попытаюсь Вам помочь.
К сожалению, на СИ не пишу, поэтому пришлось сначала перегнать Вашу программу в Паскаль. получилось так: Код:
Const Nmax=20; Var i,j,n,ip,i1,in,i2,k:integer; a:array[0..Nmax] of real; Begin write('Razmer massiva = '); readln(n); for i:=0 to n do begin write('Vvedite element massiva: a[',i:2,'] = '); readln(a[i]); end; ip:=0; i:=n; while (i>0) and (ip=0) do if (a[i]<0) and (a[i-1]<0) then ip:=i else i:=i-1; if (ip=0) then writeln('V massive net bolee odnogo otricattel`nogo elementa podryad') else begin k:=0; i:=ip; i1:=ip; while (i>=1) and (i1=ip) do if (a[i]<=0) or (i=1) then i1:=i+1 else begin k:=k+1; i:=i-1; end; end; in:=0; i:=n; while (i>0) and (in=0) do if (a[i]<0) and (a[i-1]<0) then in:=i; if (in=0) then writeln('V massive net bolee odnogo otricattel`nogo elementa podryad') else begin k:=0; i:=in; i2:=in; while (i>=1) and (i2=in) do if (a[i]<=0) or (i=1) then i2:=i+1 else begin k:=k+1; i:=i-1; end; end; writeln('Nachalo predposlednei gruppy = ',in,' Konec = ',i2); writeln('Predposlednyaya gruppa otricatel`nyh elementov:'); for i:=in to i2 do writeln(a[i]:0:5); Readln; End. Код:
Const Nmax=20; Var i,j,n,ip,i1,i2,k:integer; a:array[0..Nmax] of real; Begin write('Razmer massiva = '); readln(n); for i:=0 to n do begin write('Vvedite element massiva: a[',i:2,'] = '); readln(a[i]); end; ip:=0; i:=n; while (i>0) and (ip=0) do if (a[i]<0) and (a[i-1]<0) then ip:=i else i:=i-1; if (ip=0) then writeln('V massive net bolee odnogo otricatel`nogo elementa podryad') else begin k:=0; i:=ip; ip:=0; while (i>=1) and (ip=0) do if (a[i]>=0) or (i=0) then begin i1:=i+1; ip:=i; end else begin k:=k+1; i:=i-1; end; ip:=0; i:=i1; while (i>0) and (ip=0) do if (a[i]<0) and (a[i-1]<0) then ip:=i else i:=i-1; if (ip=0) then writeln('V massive net vtoroy gruppi otricatel`nih elementov') else begin i1:=ip; k:=0; i:=ip; i2:=ip; ip:=0; while (i>=0) and (ip=0) do if (a[i]>=0) then begin i2:=i+1; ip:=1; end else if (i=0) and (a[i]<0) then begin i2:=i; ip:=1; end else begin k:=k+1; i:=i-1; end; writeln('Nachalo predposlednei gruppy = ',i2,' Konec = ',i1); writeln('Predposlednyaya gruppa otricatel`nyh elementov:'); for i:=i2 to i1 do writeln(a[i]:0:5); end; end; Readln; End. P.S. Не понял, зачем Вы вычисляете длины фрагментов массивов (k): они нигде не используются и даже не выводятся. Но, впрочем, оставил. |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|