Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
botwa
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 22
#1

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

23.10.2009, 21:06. Просмотров 698. Ответов 11
Метки нет (Все метки)

1) Заданы две строки. Найти самую длинную их общую часть.

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

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

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

Помогите пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2009, 21:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Строки и массив (C++):

Добавить строки, начиная со строки К1 и до строки К2, в динамический массив строк - C++
Есть динамический массив строк. Заполняется, т.е. размер его уже известен будет. Но дальше нужно сделать задание: "Добавить строки, начиная...

Функция разделения строки в массив отдельных частей этой строки - C++
Помогите написать функцию, которая на вход принимает строку типа String и возвращает уже массив String содержащий отдельные части этой...

Дан безразмерный массив.Вставить количество символов каждой строки вначало этой же строки. - C++
Массив считывается из файла,а в проге указывается как указатель на указатель **.Запуск программы+файла происходит из командной строки.Если...

как сделать из строки массив из символов этой строки - C++
как? заранее спасибо

Чем отличаются двумерный символьный массив и массив указателей на строки - C++
Двумерный символьный массив и массив указателей на строки. Собственно чем они отличаются? Заранее спасибо.

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

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

я испробовала три разных случая и толкьо в одном у меня всё работало, с break
поэтому я и прошу о помощи.
0
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
23.10.2009, 23:27 #5
Телепаты в отпуске.
Код покажи.
0
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;
}
насчёт последнего я не уверена
0
niXman
Эксперт С++
3139 / 1451 / 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;
}
Не понятно как можно это решить используя один цикл, так как один цикл нужен для заполнения массива, второй для работы с ним.
1
botwa
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 22
24.10.2009, 00:17  [ТС] #8
эм.
так как мои программы пока что можно сосчитать по пальцам, то несколько вопросов:
что такое idx?
std::cin - вот эта комбинация? это заполнение массива?

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

Цитата Сообщение от botwa Посмотреть сообщение
std::cin
Ввод с клавиатуры. Ты в своем коде пишешь просто "cin", но хорошие программисты этого стараются избегать. Либо "using namespace std" пишут внутри тела функции. Так как глобальное раскрытие пространства имен, не есть хорошо.
0
rangerx
1941 / 1550 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
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;
}
1
niXman
Эксперт С++
3139 / 1451 / 49
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
24.10.2009, 00:26 #11
rangerx, Тоже вариант.
0
botwa
0 / 0 / 0
Регистрация: 12.10.2009
Сообщений: 22
24.10.2009, 00:53  [ТС] #12
оу, спасибо всем.
0
24.10.2009, 00:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2009, 00:53
Привет! Вот еще темы с ответами:

Массив: Построить из динамического одномерный массив,каждый элемент, которого равен сумме элементов одной строки исходной матрицы. - C++
Помогите решить. Как можно проще, только начали изучать указатели. Дана динамическая целочисленная матрица.Построить динамический...

Динамический массив. Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы - C++
#include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;string.h&gt; int kol_vo(int **a, int n, int m); int main() { int...

Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже --> - C++
Слова английского текста рассортировать по возрастанию количества заданной буквы в слове. Слова с одинаковым количеством такой буквы...

создать статический массив строк как статический массив указателей на строки, задание ниже --> - C++
Слова английского текста, начинающиеся с гласных букв, рассортировать в алфавитном порядке по первой согласной букве слова. Остальные слова...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru