C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Определить позицию первого и последнего нуля в одномерном массиве  (Прочитано 3685 раз)
MikhailDmitren
новенький
*

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 2


« : 16 мая 2013, 20:59:26 »

Определить позицию первого и последнего нуля в одномерном массиве, использую цикл For. Например массив состоит из 10307, программа в ответе должна выдать, что первый ноль стоит на второй позиции, а последний ноль стоит на четвертой позиции.
Помогите плиз решить задачу.
Записан
Nub
Участник
**

Сказали спасибо: +2/-0
Offline Offline

Сообщений: 4


« Ответ #1 : 19 мая 2013, 12:32:58 »

ну такое и я могу Улыбка
Код:
#include <stdio.h>
void main () {
const int n=6;
int a[n]={1,0,3,0,0,7};
int first=-1,last=-1;
for (int i=0; i<n; i++) {
 if (a[i]==0) {
  if (first<0) first=i;
  last=i;
 }
}
if (last>-1) printf ("\nFirst null in %d position, last null in %d position",first,last);
else printf ("\nNot found");
}
Записан
S0mbre
Глобальный модератор
***

Сказали спасибо: +1113/-22
Offline Offline

Сообщений: 2137

S0mbre


WWW
« Ответ #2 : 19 мая 2013, 20:41:03 »

Подозреваю, что имеется в виду строковой массив char*.
Записан
MikhailDmitren
новенький
*

Сказали спасибо: +0/-0
Offline Offline

Сообщений: 2


« Ответ #3 : 20 мая 2013, 21:14:08 »

ну такое и я могу Улыбка
Код:
#include <stdio.h>
void main () {
const int n=6;
int a[n]={1,0,3,0,0,7};
int first=-1,last=-1;
for (int i=0; i<n; i++) {
 if (a[i]==0) {
  if (first<0) first=i;
  last=i;
 }
}
if (last>-1) printf ("\nFirst null in %d position, last null in %d position",first,last);
else printf ("\nNot found");
}

Спасибо, но я чуть по другому сделал, как это требуют у нас в техникуме.
#include <vcl.h>
#include <iostream>
using namespace std;
int main()
{int m[5], first=-1, last=-1;
for(int i=0; i<5; i++)
{cout<<"vvedite el\n";
cin>>m;
}

for(int k=0; k<5; k++)
{if(m[k]==0)
  {if (first<0) first=k;
  last=k;
}
}


if (last>0) printf ("\nFirst null in %d position, last null in %d position",first,last);
else printf ("\nNot found");

int end;
cin>>end;
return 0;
}

Программа работает, но вот если набираем допустим массив 10307, должно показать, что первый ноль на второй позиции, а последний ноль на четвертой позиции, но показывает, что первый ноль на первой позиции, а последний ноль на третей позиции. Помогите пожалуйста исправить ошибку.
Записан
Kray74
Посты на падонкаффском принципиально не читаю.
Участник
**

Сказали спасибо: +81/-1
Offline Offline

Сообщений: 366


« Ответ #4 : 20 мая 2013, 21:40:19 »

if (last>0) printf ("\nFirst null in %d position, last null in %d position",first+1,last+1);
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в: