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

Массив С++ - C++

Восстановить пароль Регистрация
 
Nasdfgh
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 37
06.06.2011, 18:14     Массив С++ #1
Надо написать программу которая инициализирует массив и считывает сколько в нём элементов
Функция для считывания xcount
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2011, 18:14     Массив С++
Посмотрите здесь:

Дан массив A[N]. заполнить массив В[N] элементами массива A[N], которые удовлетворяют двойному неравенству C++
C++ Найти ошибку. Записать 20 целых чисел в массив. Переписать отрицательные в массив А, а положительные в Б
Файлы и массив (сделать так, чтобы массив заполнялся значениями из этого же файла) C++
C++ Включить новый элемент в массив, упорядоченный по возрастанию, с сохранением упорядоченности. (рандомный массив)
C++ Задано массив строк произвольной длины. Отформатировать данный массив по ширине поля.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
06.06.2011, 18:15     Массив С++ #2
уже сто раз до тебя подобные задачи здесь писали и выкладывали. Пользуйся поиском
Nasdfgh
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 37
06.06.2011, 18:17  [ТС]     Массив С++ #3
Докажи
Кинь ссылку или скопируй в эту тему
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.06.2011, 18:28     Массив С++ #4
Не такая уж и тривиальная задача на самом деле=)
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
unsigned xcount (const int * arr){
    unsigned count=0;
    while (arr[count++]);
    return count-2;
}
int main(){
    int arr[]={1,2};
    std::cout << xcount(arr);
    return 0;
}
Только не работает, если попадается нуль
Если есть другие способы решения, то интересно будет на них посмотреть.
Nasdfgh
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 37
06.06.2011, 18:32  [ТС]     Массив С++ #5
Я просто только начал учить С++ можно с комментариями а так огромное спасибо
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.06.2011, 18:35     Массив С++ #6
Задачка-то далеко не для начинающих о_О
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
unsigned xcount (const int * arr){  //unsigned-беззнаковый int
        unsigned count=0;  //объявляем счетчик
        while (arr[count++]); //пока элемент массива не равен нулю, увеличиваем счетчик
        return count-2; //возвращаем счетчик, уменьшенный на 2
}
int main(){
        int arr[]={1,2}; //инициализируем
        std::cout << xcount(arr); //выводим
        return 0;
}
Nasdfgh
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 37
06.06.2011, 18:37  [ТС]     Массив С++ #7
Только два вопроса:
-Зачем возвращать сount на 2
-что такое std::
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.06.2011, 18:42     Массив С++ #8
Цитата Сообщение от Nasdfgh Посмотреть сообщение
Только два вопроса:
-Зачем возвращать сount на 2
-что такое std::
1) а пес его знает=) Если объявлять массив, как указано в мейне, то по указателю после массива стабильно лежит нуль. Но если в массиве попадается нуль, то возвращает его позицию. Также, если массив объявлен динамически, то такое решение не работает. Так что полноценным назвать его нельзя. Возможно кто-то выложит работающее, интересно на него поглядеть=)
2)пространство имен. Его многие игнорируют, когда пишут using namespace std;
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
06.06.2011, 18:44     Массив С++ #9
diagon, я вот если честно не понял ни задачи, ни способ вашего решения)) Можете пояснить, докуда мы сдвинемся при условии "пока элемент массива не равен нулю, увеличиваем счетчик"?
Nasdfgh
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 37
06.06.2011, 18:47  [ТС]     Массив С++ #10
1)Да я понял о чем ты
Да только я хотел сделать что б этот массив не был литой а вводился а потом считывалось сколько элементов
2)Точно я жертва using namespace std;
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.06.2011, 18:48     Массив С++ #11
dihlofos, В функцию xcount передается массив(очевидно, что без указания размера, иначе какой смысл у этой функции), нужно найти размер массива.
Я просто заметил, что если объявлять массив так arr[]={...}, то после массива будет лежать нуль. По крайней мере в gcc так. Если создать массив динамически, то это не работает
Вам точно нужно использовать функцию? Я как-то начинаю подозревать, что это невозможно.
voral
345 / 325 / 46
Регистрация: 16.03.2008
Сообщений: 1,694
06.06.2011, 18:50     Массив С++ #12
Ну когда уже по теме можно будет понять что хочется. Вот точно такая же тема сегодня, там еще один вариант ответа Очень просто
dihlofos
Бродяга
 Аватар для dihlofos
302 / 256 / 17
Регистрация: 27.08.2010
Сообщений: 553
06.06.2011, 18:53     Массив С++ #13
Цитата Сообщение от diagon Посмотреть сообщение
Я просто заметил, что если объявлять массив так arr[]={...}, то после массива будет лежать нуль. По крайней мере в gcc так. Если создать массив динамически, то это не работает
Ну вот у меня gcc и там нифига не нуль)) Ваш пример у меня выдаёт 13. Вот если бы это char[] был, заканчивающийся '\0'....
Nasdfgh
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 37
06.06.2011, 18:54  [ТС]     Массив С++ #14
Да я создал 2 темы не хотели отвечать не на одну (нетерпелив)

Дело в том что мне надо посчитать элементы массива предположим mass[80] до нулевого символа

я пытался но что то не работает
Код
int xcount(int mas[])
{

int m = 0;
int s = 0;
int i = 0;

while(mas[i])
{

if(mas[i+1] == mas[i])
{
s++;
if(s >= 2)
s = 0;
m++;
}

i++;

}
return m;
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
06.06.2011, 18:59     Массив С++ #15
Цитата Сообщение от dihlofos Посмотреть сообщение
Ну вот у меня gcc и там нифига не нуль)) Ваш пример у меня выдаёт 13. Вот если бы это char[] был, заканчивающийся '\0'....
Ну идею я именно из чара взял=)
А вот что выводит мой gcc
Код
diagon@shadeware:~$ cat test.cpp 
#include <iostream>
unsigned xcount (const int * arr){
        unsigned count=0;
        while (arr[count++]);
        return count-2;
}
int main(){
        int arr[]={1,2};
        std::cout << xcount(arr) << std::endl;
        return 0;
}
diagon@shadeware:~$ g++ test.cpp
diagon@shadeware:~$ ./a.out
2
diagon@shadeware:~$ cat test.cpp 
#include <iostream>
unsigned xcount (const int * arr){
        unsigned count=0;
        while (arr[count++]);
        return count-2;
}
int main(){
        int arr[]={1,1,1,1,1,1};
        std::cout << xcount(arr) << std::endl;
        return 0;
}
diagon@shadeware:~$ g++ test.cpp
diagon@shadeware:~$ ./a.out
6
diagon@shadeware:~$
И так стабильно=)
Nasdfgh, А можно полное задание? Просто я сомневаюсь как-то, что вам нужно делать именно это. И вообще, обычно массивы передают вместе с их размером.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2011, 19:20     Массив С++
Еще ссылки по теме:

Создать третий массив, в котором собрать элементы массива A, которые не включаются в массив B C++
Задан массив из k символов. Преобразовать массив следующим образом: расположить символы в обратном порядке C++
Записать все положительные элементы матрицы в массив arrP, а отрицательные - в массив arrN C++

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

Или воспользуйтесь поиском по форуму:
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
06.06.2011, 19:20     Массив С++ #16
Цитата Сообщение от dihlofos Посмотреть сообщение
Вот если бы это char[] был, заканчивающийся '\0'....
Ну, строго говоря, даже char[] не обязан заканчиваться нулём. Нулём должна заканчиваться ASCIIZ-строка

Цитата Сообщение от Nasdfgh Посмотреть сообщение
Дело в том что мне надо посчитать элементы массива предположим mass[80] до нулевого символа
Если размер надо определить до нулевого символа, то стоило это отметить в исходном задании
Yandex
Объявления
06.06.2011, 19:20     Массив С++
Ответ Создать тему
Опции темы

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