Форум программистов, компьютерный форум CyberForum.ru

Строки и массив - C++

Войти
Регистрация
Восстановить пароль
 
botwa
 Аватар для botwa
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 22
23.10.2009, 21:06     Строки и массив #1
1) Заданы две строки. Найти самую длинную их общую часть.

Решите, пожалуйста, потому что идей ноль.

2) И ещё есть задача. Дан одномерный массив. Нужно найти номер минимального положительного элемента до первого отрицательного. Причём нельзя использовать функцию break.
И нужно сделать через while, ибо break забраковали, а также у меня было сделано с двумя for, что также признали неэффективным.

Да. и проблема ещё в том у меня не получается сделать так, что если первый элемент отрицательный, то нужно просто вывести, что он отрицательный и дальше нчиего не делать.

Помогите пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sekt
 Аватар для Sekt
156 / 155 / 10
Регистрация: 29.04.2009
Сообщений: 637
23.10.2009, 21:28     Строки и массив #2
по задаче 2: элемент перегнать в другой массив
rangerx
1918 / 1527 / 139
Регистрация: 31.05.2009
Сообщений: 2,891
23.10.2009, 23:07     Строки и массив #3
Цитата Сообщение от botwa Посмотреть сообщение
И нужно сделать через while, ибо break забраковали
Зачем вам для данной задачи break? Ваш 'break'(условие окончания цикла) здесь это отрицательное число или достижение конца массива...
botwa
 Аватар для botwa
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 22
23.10.2009, 23:24  [ТС]     Строки и массив #4
мой while программа просто игнорирует.
как будто его нет.
он с ним просто ничего не делает.
равно как и с двумя if без break

я испробовала три разных случая и толкьо в одном у меня всё работало, с break
поэтому я и прошу о помощи.
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
23.10.2009, 23:27     Строки и массив #5
Телепаты в отпуске.
Код покажи.
botwa
 Аватар для botwa
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 22
23.10.2009, 23:43  [ТС]     Строки и массив #6
это было изначально

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "stdafx.h"
#include "iostream"
#include "math.h"
using namespace std;
 
int main()
{
int m[10],i,n,min,nmin,N;
cout<<"\n N="; cin>>N;
for (i=0; i<N; i++)
{
    cout <<"Введите 10 чисел - элементов массива";
    cin>>m[i];
}
       
for (min=m[0], nmin=0, i=0; i<N; i++)
{
if (min<m[i]&&m[i]>0);
min=m[i];
nmin=i;
}
cout<<"nmin="<<nmin<<"\n";
return 0;
}
далее мне предложили заменить на

C++
1
2
3
4
5
6
7
8
for (min=m[0], nmin=0, i=0; i<N; i++)
        {
                if(m[i]<0)
                        break;
                if (min<m[i]);
                {min=m[i];
                nmin=i;}
        }
с while

C++
1
2
3
4
5
while(i<N)&(a[i]>0)&(min>a[i])
{
min=a[i];
nmin=i;
}
насчёт последнего я не уверена
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 00:10     Строки и массив #7
Так подходит?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
int main() {
    const int size = 10;
    int array[size] = {0};
 
    int maxval = 0; /** максимальное положительное */
    int negpos = -1; /** позиция первого отрицательного */
    int pospos = 0; /** позиция наименьшего положительного */
    
    for ( int idx = 0; idx < size; idx++ ) {
        std::cin >> array[idx];
        if ( array[idx] > maxval ) {
            maxval = array[idx];
        }
        if ( array[idx] < 0 && negpos == -1 ) {
            negpos = idx;
        }
    }
    
    pospos = maxval;
 
    /** ищем минимальный положительный */
    for ( int idx = 0; idx < negpos; idx++ ) {
        if ( array[idx] < pospos) {
            pospos = array[idx];
        }
    }
    
    return 0;
}
Не понятно как можно это решить используя один цикл, так как один цикл нужен для заполнения массива, второй для работы с ним.
botwa
 Аватар для botwa
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 22
24.10.2009, 00:17  [ТС]     Строки и массив #8
эм.
так как мои программы пока что можно сосчитать по пальцам, то несколько вопросов:
что такое idx?
std::cin - вот эта комбинация? это заполнение массива?

да конечно я бы такое не написала...
надо ещё миллион всего узнать.
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 00:20     Строки и массив #9
Цитата Сообщение от botwa Посмотреть сообщение
что такое idx?
Переменная. Используемая для индексации массива.

Цитата Сообщение от botwa Посмотреть сообщение
std::cin
Ввод с клавиатуры. Ты в своем коде пишешь просто "cin", но хорошие программисты этого стараются избегать. Либо "using namespace std" пишут внутри тела функции. Так как глобальное раскрытие пространства имен, не есть хорошо.
rangerx
1918 / 1527 / 139
Регистрация: 31.05.2009
Сообщений: 2,891
24.10.2009, 00:22     Строки и массив #10
вот с одним циклом, делов-то
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int main() 
{
        const int size = 10;
        int arr[size] = {5, 8, 1, 10, -1, 0, 10, -8, 6, 8};
 
        if(arr[0] >= 0)
        {
                int nmin = 0;
                for(int i = 1; (i < size && arr[i] >= 0); ++i)        
                        if(arr[i] < arr[nmin]) nmin = i;
                std::cout << "NMin: " << nmin << std::endl;
        }
        else std::cout << ">>>error<<<: " << std::endl;
 
        return 0;
}
niXman
Эксперт C++
 Аватар для niXman
3133 / 1445 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 00:26     Строки и массив #11
rangerx, Тоже вариант.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2009, 00:53     Строки и массив
Еще ссылки по теме:

массив символов (строки) C++
C++ Массив: Напечатать номер каждой строки, в которой второй элемент меньше среднего арифметического элементов этой строки, и число таких строк.
C++ Запись строки в массив
C++ Добавление строки в массив
C++ Добавление строки в массив

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
botwa
 Аватар для botwa
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 22
24.10.2009, 00:53  [ТС]     Строки и массив #12
оу, спасибо всем.
Yandex
Объявления
24.10.2009, 00:53     Строки и массив
Ответ Создать тему
Опции темы

Текущее время: 09:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru