![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
давайте начинающие.. поделимся опытом, а если кто-то из проф-ов нам поможет им большой Благодарность
|
|||
|
||||
Kuvaldis |
|
|||
![]() механик-вредитель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1189 Регистрация: 16.6.2006 Где: Минск Репутация: 11 Всего: 61 |
Metixa,
ты бы еще предложил: "давайте поговорим не знаю о чем". Не нарывайся на репрессии, задавай более конкретные вопросы -------------------- Помни - когда ты спишь, враг не дремлет Спи чаще и дольше, изматывай врага бессоницей |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
в этом книжке не понял я:
стр. 247. ВНИМАНИЕ: Инициализировать динамический массив нельзя. как, это же инициализация члена массива #include<iostream> using namespace std; void main () { int r= 4; int *pi = new int[r]; *(pi+2) = 44; cout<<*(pi+2)<<endl; } что очень просто компуется... |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Это не инициализация... Это просто запись по адресу, и все... что здесь особо непонятно...
Говорится про то, что нельзя прямо в месте выделения массива присвоить его элементам определенные значения, как для статического массива... |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Там, наверное, имелось в виду, что нельзя сразу весь заполнить одной командой при выделении памяти.
JackYF уже это сказал. ![]() Это сообщение отредактировал(а) bsa - 2.11.2006, 21:44 |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
а здесь:
#include<iostream> using namespace std; void main () { for(int i = 1; i<7; i++) {int *pi = new int(i); cout<<*pi<<endl;} } ?????????? Это наверно просто рядом записанные динамические данные, а не массив, правильно? Это сообщение отредактировал(а) Metixa - 2.11.2006, 22:59 |
|||
|
||||
apook |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 794 Регистрация: 12.7.2006 Репутация: 9 Всего: 23 |
А там выше должно быть
int **pi=new int [7]; а потом for(int i = 1; i<7; i++) {int *pi = new int [i]; -------------------- Мои руки из дуба, голова из свинца ну и пусть ... |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
это не массив. это динамическое создание интов. совсем не обязательно они будут подряд в памяти находиться |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Fazil6, ... в C++
![]() |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Fazil6, честно говоря я сегодня тоже
![]() ![]() Судя по всему я писал про расположение в памяти двумерных массивов в разных языках, только зачем ![]() |
|||
|
||||
vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
так ты не массив заполняешь, а каждый раз выделяешь новую память под указатель, соответсвенно в конце цикла pi будет указывать на последний элемент полученный в цикле, а к остальным ты обратиться не сможешь..
че то непонятно что ты пытался изобразить.. |
||||
|
|||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
всем благодарью
|
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
просьба, не ошибка на стр. 268. с низу 16 строке
if(sum[j] > sum[nmin]) nmin = j; по моему <, а не >; |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
bruja |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 9.11.2006 Репутация: нет Всего: нет |
Ребята, я недавно начала изучать С++ и иногда торможу. У меня тут программка, которая выдает группы чисел-близнецов до числа n. Ч-близнецы, это простые числа с разностью, равной 2. Мне надо, чтоб она еще выдавала максимальную пару Ч-Б. А я как не пишу, она мне все неправильно выдает...
![]() ![]() #include <stdio.h> #include <conio.h> #include <iostream.h> void main() {clrscr(); int i, j, k, n; int pred=1; printf("Vvesti n="); scanf("%i",&n); while (n<=0) {printf("Vvedite es4e raz n="); scanf("%i",&n);} for(i=3; i<n; i+=2) { k=0; for(j=2; j<=i/2; j++) if (i%j==0) k++; if (k==0) { if (pred+2==i) cout<<pred<<"&"<<i<<"- bliznetsi"<<endl; pred=i; } } getch(); } |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
прошу профам:
что обшее между шаблоном функции и указателем на функции (просто интересно.. зараннее Благодарю!!! |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
ничего ![]() что такое шаблон? шаблон это шаблон. ты в него можешь подставить заданные в нём же параметры (тип или константу) и получишь отдельную ф-цию на этапе компиляции. что такое указатель не ф-цию? это просто указатель на какую-ту существующую ф-цию. т. е. все ф-ции придется задать ручками. если ты про различие между вызовом шаблонной ф-ции и вызовом ф-ции по указателю, то различие такое же, как между вызовом обычной ф-ции и вызовом ф-ции по указателю. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
#include <stdio.h> #include <conio.h> #include <iostream.h> int pred=1; void main() { int i, j, k, n; printf("Vvesti n="); scanf("%i",&n); while (n<=0) {printf("Vvedite es4e raz n="); scanf("%i",&n);} for(i=1; i<(n+1)/6; i++) cout<<6*i-1<<'-'<<6*i+1<<endl;getch(); } http://ru.wikipedia.org/wiki/%D0%9F%D1%80%...%B5%D1%86%D1%8B здес наидете формулу таких пар, обратите внимание на то что вам пара нужна с разницой 2, а не близкая число к - n; Это сообщение отредактировал(а) Metixa - 12.11.2006, 22:05 |
|||
|
||||
bruja |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 9.11.2006 Репутация: нет Всего: нет |
Metixa , ты не понял....у меня уже готовая прога...только надо дописать в ней пару строк, чтоб она еще выводила макс. пару близнецов.
|
|||
|
||||
sasa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.11.2006 Репутация: нет Всего: нет |
Ребята может кто поможет с прогой? мне нужна программка Алгоритма Витерби (т. е. Алгоритм сравнения двух строк и Хэммингова разность). Кто может помогите прогой, а то у меня аттестация, и не знаю как быть.... Спасибо!!!!!
![]() ![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
помогают в центре помощи ;)
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Metixa |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
Добрый Вечер BRUJA!!! Я поньял что твоя версия тоже работает, просто я по короче тебе предложил, а попробуй вот так:
и по моему тебе станет легче..
Это сообщение отредактировал(а) Metixa - 12.11.2006, 22:06 |
||||||
|
|||||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
bruja, Metixa, пользуйтесь кнопкой Код. Не нарывайтесь на репрессии.
|
|||
|
||||
Zloi_kot |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 12.11.2006 Репутация: нет Всего: нет |
А вот и сдрасьти!! Если кто знает киньте пажалста ссылочку где можно скачать с инета книжку по си++ да так чтобы там исче и написано понятьненько было
![]() |
|||
|
||||
TaNK |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 669 Регистрация: 29.10.2006 Где: Краснодар Репутация: нет Всего: 1 |
www.WMate.ru
да и вообще пользуйтесь поисковиком....зачем такие вопросы задовать тут и не по теме! -------------------- Oracle 11.2.0.3.0 FireBird 1.0-2.5 |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
Обясните что за кнопка кода?
Это сообщение отредактировал(а) Metixa - 12.11.2006, 19:39 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Помощь по кодам форума
3-й снизу пункт. в форме ответа есть кнопочка "Код". в выпадающем списке выбираешь нужный язык (с++, к примеру) -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
bruja |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 9.11.2006 Репутация: нет Всего: нет |
шпасибо, бум исправляться))) ![]() Добавлено @ 21:10 Metixa, спасибо.)) Но у меня от этого мозгов не прибавилось)) Как вывести максимальную пару близнецов? ![]() если у тя есть предложения, просто впиши эту строку в прогу... ![]() |
|||
|
||||
Damarus |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 671 Регистрация: 6.5.2006 Репутация: 6 Всего: 29 |
||||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
Bruja добрый вечер, не заметил ты?:
for(i=3; i<=n; i+=2) я добавил "=". |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
Прошу вас помогите:
когда выпольняю через пуск-выполнить, что-то мгновенно появляется и все.. |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
пуск->выполнить->cmd->ok
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
Вопрос:
в книжке стр: 283, снизу 9-ая строка: argv[] имеет тип char*.. а я спрашиваю почему не char**..? Благодарю... |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
Я очень прошу помощ.. много времени теряю..
стр. 284 снизу 1-ая окошечка, его не получается выдать, что-то в роде бы выпригивается но через мгновение изчезает, в командную строку пишу: "d:\b2.exe" a b c а прог:
Это сообщение отредактировал(а) Metixa - 13.11.2006, 12:58 |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
а почему собственно ты решил, что должен быть char** ? передается массив С-строк, а не массив указателей на указатель на char |
|||
|
||||
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
с точки зрения компилятора запись type arg [] в аргументах ф-ции эквивалентна записи char **. так что разницы нет.
так то char ** и есть ;)
![]() Добавлено @ 02:19 коммандная строка - это где? если в cmd.exe, то все должно быть нормльно...если пуск->выполнить, то совет использовать
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
в общем случае char *array[] не тоже самое, что char**
|
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
опять проблема..
стр. 287, снизу 9-ая строка: if(extreme == BIG && value > boundary) а сравнивать отрицательные числа..? |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
я вот даже подчеркнул, что в аргументах ф-ции это то же самое. а в общем случае - да, не то же самое.
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
ты, наверное, думаешь, что все тут на память помнят эту книгу, ну или как минимум из рук ее не выпускают
Что необычного в сравнивании отрицательных чисел? |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
Fazil6 у тебя есть это книга?
|
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
нет
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
уже разобрался, благодарю
Это сообщение отредактировал(а) Metixa - 15.11.2006, 01:54 |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
мне очень интересно следующее:
возмем int nameofmas[] = {1,2,3,4}; понятно по теории что nameofmas это адрес первого элемента масcива и nameofmas то же самое что &nameofmas[0] оба выдает адрес первого элемента (+1 вопрос, почему cout<<nameofmas; и cout<<&nameofmas; - выдает одно и тоже ?); где записывается сама nameofmas, по какому адресу, он же все таки указатель - константа? я сфантазировал так : значит, гдето както сама nameofmas обьявлено как char строка - указатель, и еще он указывает на первый элемент массива и поетому он впыхнулся в "бутерброд" адреса первого элемента и cout<<nameofmas; и cout<<&nameofmas[0]; выдает одно и тоже.. "бутерброд" - назвал потому что на одном адресе записан и первый элемент и имя массива-констуказатель (что странно выгледит), а если это не так, тогда г д е з а п и с ы в а е т с я с а м а n a m e o f m a s??????? Это сообщение отредактировал(а) Metixa - 15.11.2006, 18:44 |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
nameofmas - локальная переменная. Адрес 0-го элемента массива.
&nameofmas - адрес этой локальной переменной, который в общем случае никак не связан с адресом 1-го элемента. НО! Для статических одномерных массиввов это одно и то же, так как память выделяется в стеке, а самого указателя как такового отдельного нету... Может плохо объяснил... В любом случае &nameofmas лучше не пользоваться... зачем? |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
имя массива - rvalue и такое подятие как адрес с ним не связано.
нигде |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Но адрес-то существует. Переменная-то есть. |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
имя массива это не переменная. Единственный адрес с которым оно связано - адрес первого элемента. |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
имя массива же есть конст указатель, а как без адреса, вот имя масива да: nameofmas, как он может быть без адреса,
n a m, потом e..o..f.m..a..s---- это же тоже последовательность котрый гдето надо запи с а т ь, а где, он же не может висеть на "воздух"... извините за зацикливания, но пока не докапаюсь до к о н ц а, не могу продолжать учебу (может быть вредная привичка...) Добавлено @ 20:50 имя массива же есть конст указатель, а как без адреса, вот имя масива да: nameofmas, как он может быть без адреса, n a m, потом e..o..f.m..a..s---- это же тоже последовательность котрый гдето надо запи с а т ь, а где, он же не может висеть на "воздух"... извините за зацикливания, но пока не докапаюсь до к о н ц а, не могу продолжать учебу (может быть вредная привичка...) ![]() |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
||||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
благодарю Fazil6 НО: Объявление массива "char a[6];" требует определенного места для шести символов, которое будет известно под именем "a". То есть, существует место под именем "a", в которое могут быть помещены 6 символов. как понять - "под именем "a". "? где компилятор прочитает что это имя "а" а не "Gospodin_Karuzo" ????? |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
почему ++ к имени массива требует lvalue (понятно что имя массива константа) а если этот argv дается main - у из командной строки тогда
к ++argv -- "зеленный цвет"? |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
в параметрах функций массив преобразуется просто к указателю |
|||
|
||||
Dov |
|
||||||||||||||||||||||||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Ну, что ж, попробую и я объяснить необъяснимое. Указатели и массивы. В языке С существует очень тесная связь между указателями и массивами. Любое действие, которое можно совершить с помощью массивов, можно так же сделать и с помощью указателей. Когда мы объявляем массив:
то это значит, что X - это массив из 8 элементов, имеющих тип int и расположенных в ячейках памяти непрерывно. Это даёт нам возможность обращаться к элементам массива по индексу, начиная с X[0] и до X[7]. Схематично это можно изобразить так:
Таким образом, когда мы объявляем массив, то это значит, что мы объявляем непрерывность ячеек в памяти и плюс к этому мы объявляем указатель, в котором хранится адрес начала массива в памяти компьютера. Этим указателем и является имя массива, в нём же и содержится адрес первого элемента массива, т.е. адрес элемента с индексом 0, т.е. адрес X[0]. Схематично это можно изобразить так:
Например, если массив начинается с адреса 1000, то X[0] находится по адресу 1000, X[1] - по адресу 1004, X[2] - по адресу 1008 и т.д.(при условии, что тип int - 4 байта). Схематично это можно изобразить так:
То есть, можно сказать, что указатель, в котором хранится адрес первого элемента массива - это особая ячейка памяти, а его имя - это имя массива. Надеюсь, понятно. Тогда идём дальше. Имя массива, как указатель. Напомню ещё разок: имя указателя, в котором хранится адрес первого элемента массива - это имя самого массива. Когда мы объявляем массив элементов типа int, это значит, что имя массива - это переменная типа int*, т.е. указатель на тип int. Когда мы объявляем массив элементов типа double, это значит, что имя массива - это переменная типа double*, т.е. указатель на тип double и т.д. Например:
Когда мы объявили массив arr, то мы объявили 5 непрерывных ячеек в памяти типа long и ещё мы объявили дополнительную переменную с именем arr (типа long*), хранящую адрес первой ячейки массива. Если массив начинается с адреса 2020, то схематично это можно изобразить так(если тип long занимает 4 байта):
Все элементы массива arr - это элементы типа long. Имя массива arr - это переменная типа long* и она содержит адрес первой ячейки массива, т.е. адрес arr[0]. Применение имени массива, как указателя. Объявляем массив:
Не забываем, что аr - это переменная типа int*, потому что аr содержит адрес ячейки типа int, т.е. аr - это указатель на тип int. Попробуем использовать аr так, как мы бы использовали любой другой указатель.
Если ar - указатель на тип int, то *ar - это содержимое ячейки памяти, адрес которой хранится в ar, т.е. это равнозначно:
Как и равнозначны следующие две записи:
Разница между именем массива и указателем. Указатель - это всё же переменная и мы можем изменять её значение. Имя массива - это хоть и указатель, но имеющий постоянный адрес, который изменить мы не можем. Пример:
Пока всё. ![]() Это сообщение отредактировал(а) Dov - 17.11.2006, 01:21 -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
||||||||||||||||||||||||
|
|||||||||||||||||||||||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
нет. arr имеет тип long[5], а не long*. arr может использоваться как long * const, но не long*. Повторю еще раз имя массива - это не переменная. единствено при передаче массива в параметрах функции передается переменная типа указатель-на-типэлементамассива(неконстантный). |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Fazil6, ты пытаешься спорить, не понимая о чём. Ты до конца дочитал? Если да, то прочти ещё раз, но повнимательнее, а потом поговорим. ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
и что же я не понял? |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Оттого, что arr - const, он не перестал быть long *, т.е. он по-прежнему хранит адрес, а значит он является указателем на тип long, а указатели на тип long имеют тип long *. К тому же, он может изменять значения своих элементов, как обычный указатель. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
да уж.....
это ты ничего не понял. То, что имя массива может использоваться в выражении как константный указатель не означает, что оно является переменной-указателем. тип long[] != long[5] != long * != long * const это разные типы |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Fazil6, тебе что, на иврите объяснять нужно, по-русски твая-мая не панимай, учи матчасть, не грузи.
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Fazil6, где отличия между первым и вторым?
А также принципиальные различия с четвертым? |
|||
|
||||
Fazil6 |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
ну с первым вариантом я погорячился... посмотри что выдаст вот такой код
Это сообщение отредактировал(а) Fazil6 - 16.11.2006, 19:34 |
||||
|
|||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Не, нормально? Ты пытаешься присвоить указателю на инт АДРЕС указателя на инт? И что ты после этого хочешь??? mmm и nn уже сами по себе указатели. Добавлено @ 19:33 Fazil6, молодец, быстро отредактировал ![]() Тебе осталось еще убрать это же самое в выводе. |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
![]() int **ncm = &mmm; Добавлено @ 19:36 а в выводе тебе что не устраивает? |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
А вот это уже логично, что скомпилируется... Но что ты этим доказал? Добавлено @ 19:40 Да, я теперь понял, что ты хотел сказать... Но, все-таки, что ты этим доказал? из сказанного ранее? Несовместимость каких типов? Это сообщение отредактировал(а) JackYF - 16.11.2006, 19:38 |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
как раз не скомпиллируется ![]() |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Понятно, что long* и long* const - разные... а насчет остального что?
Добавлено @ 19:45
Мое сообщение относилось к пред. версии твоего поста ![]() ![]() Так несовместимость каких типов ты этим доказал? Кроме ( long* != long* const ) ? |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
я не говорил, что типы несовместимы. Эти типы приводятся друг другу (не во всех комбинациях конечно), но это разные типы. А то, что выводися cout показывает, что имя массива - это не int* |
|||
|
||||
JackYF |
|
||||||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Конкретнее: чем отличаются long* const, int[] и int[5]?
Да. Это int* const... Потому что:
Выведет 4.
Я передал тип int[], не так ли? sizeof вернула уже 4, а не 20. sizeof( int[] ) вообще не сработает, так как int[] - incomplete type. При любом ИСПОЛЬЗОВАНИИ "типа" int[] комплилятор считает его int* const, и все дела... Отсюда отсуствие принципиальной разницы... |
||||||
|
|||||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
А что же это по=твоему, и что у тебя cout показывает ![]() -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
нет. Все не так. я ведь в выводе использую массив и именно int* const, и выводит разное. Ведь и имя массива и указатель указывают на одно и тоже, но и sizeof и взятие адреса выдают разные результаты для одного и другого. Так почему вывод, что компиллятор считает эти вещи одним типом? Это разные типы. Теперь по поводу твоей функции my_func. Передать массив по значению нельзя. Всегда при передаче массива как параметр функции создается временная локальная переменная указатель (в данном случае int*) и инициализируется адресом первого элемента. Причем это не константный указатель. Поэтому у тебя и получается такой результат
здрасте! посмотри, что я попросил вывести и как выводится. Где там отсутствие разницы? Это сообщение отредактировал(а) Fazil6 - 16.11.2006, 20:20 |
||||||
|
|||||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
sizeof() - использование?
. Да, согласен. Неправ. Ну а то, что адреса указателей разные - так это, по-моему логично... Две переменные не могут иметь однинаковый адрес. Добавлено @ 20:46 Такого типа как ТИПА не существует. Его объявление и sizeof() - заморочки компилятора времени компиляции. Там, где он используется( не адрес берется и не sizeof(), а индексируется с целью получения элементов ), он ничем не отличается от int* const... Вот, по-моему, и все... |
|||
|
||||
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
фокус не в этом, а в том, что
выведет одно и тоже, а
выведет значение указателя и адрес, переменной mmm Это к разговору о том, что имя массива это переменная, которая хранит адрес первого элемента. Если бы это была переменная, то можно было бы узнать ее адрес. |
||||||
|
|||||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
![]() ![]() ![]() Нафиг тебе адрес переменной??? ) Ну выдает она адрес первого элемента ![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Dov,
Fazil6, JackYF,
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
archimed7592, гениально!
Но я в принципе это же и сказал. |
|||
|
||||
Fazil6 |
|
||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
вы мне говорите, что имя массива интов это переменная указатель на инт. Я вам говорю, что массив - это массив, а указатель - это указатель, что это не одно и тоже, хотя и тесно связано.
подсунь компиллятору вот такой коди он тебе покажет какой тип у nn
Добавлено @ 22:21
прочитай внимательно
т.е. он не является an rvalue of type “pointer to T” он может конвертироваться в него |
||||||
|
|||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Fazil6, такой код не должен компилиться...&nn - это нечто непонятное...не все, что прогатывает компилятор есть правильно...хотя такое вообще не проглотит
зы. почитайте, ребят...смеху ради ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
кстати ничего непонятного в &nn нет - это компиллятором должно интерпретироваться как указатель на массив. |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
с каких пор должно? можно цитатку из стандарта?
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
стандарта у меня нет. Инфа из ссылки, которую я уже здесь давал пару страниц назад
http://faqs.org.ru/progr/c_cpp/cfaqrus.htm п 2.13 |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
||||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
все было прикрасно и полезно и .и.и но из за моей неопытности все еще не поиму: int nameofmas[] = {1,2,3,4}; вот пока этот массив отправят в функцию как аргумент, г д е зафиксировался сама фраза nameofmas, он не записан на адрес первого элемента массива, потоиу что по тому адресу (4 баит) записан "1", он (nameofmas) пока не указатель что ему было выделено другои адрес, тогда обьясните мне где помнит комп. что после буквы "n" следует "a", потом "m", далше идет "e" и т.д. (nameofmas) ![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Metixa, советую перечитать свой пост и постараться самому понять что ты там написал...
к слову, имена переменных нигде никто не помнит...после компиляции эти имена не сохраняются... -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
если я не ошибаюсь после компиляции память которым ползовались лок. переменные освобождается, но перед освобождением они сушествуют не так?
где то, хоть "максимально временно" имена "a" и "b" же записывается, иначе как комп. выдаст 3 и 8???? Это сообщение отредактировал(а) Metixa - 18.11.2006, 04:13 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
зы. вообще говоря в реальности такие массивы хранятся локально т. е. на стеке...т. о. получаешь что-то вроде mov [ebp-32], ebp-8, где ebp-8 - адрес массива, т. е. адрес относительно верхушки стека, а не какой-то четкий адрес. Это сообщение отредактировал(а) archimed7592 - 18.11.2006, 04:38 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Mixeer |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 19.11.2006 Репутация: нет Всего: нет |
люди помогите!
Тока начал учить с и срочно надо написать такую программу: Тема «Шифрование двоичных данных. Дешифрование двоичных данных» Метод шифрования основан на замене исходной последовательности битов a последовательностью b в которой a1=b1 ,bi=1 , если a=a(i-1) , и 0 в противном случае (i=1,2,3…n). входные и выходные данные - двоичные файлы ддлложности возникают с операциями с битами! Это сообщение отредактировал(а) Mixeer - 19.11.2006, 04:06 |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Mixeer, твои дествия должны быть следующими...
1) Пойти в Центр Помощи! 2) Создать новую тему! |
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Помогите, хочу сделать программу которая будет переводить символы в цыфры.
Вот код который пытался использовать: #include<iostream.h> #include<conio.h> void main() { clrscr(); float a,b,c; char kod; cin>>kod; if (kod=="a") cout<<"1"; else if (kod=="b") cout<<"2"; else if (kod=="c") cout<<"3"; getch(); } Программа не хочет запускаться, выбивает ошибку: "cannot cover `char` to `char *`". Что нужно сделать чтоб запустить программу? |
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Огромное спасибо!!!
![]() |
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Я сделал программу, которая кодирует символы в цыфры. Есть возможность одновременного перевода от 1 до 5 символов. При одновременном переводе от 1 до 4 символов все нормаль при переводе 5 символов программа вместо кода символа R выводит код символа E, я все проверил ошибки нет в программе не знаю в чем дело. Из-за чего может выводить неверное значение?
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
timurka, если покажешь программу или уточнишь свой вопрос, то вероятность, что тебе помогут сильно возрастёт...здесь телепатов нет
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Я решил проблему, спаибо за беспокойство. Теперь есть еще одна. Я хочу сделать программу, но она сильно большая и поместить в один файл не получаеться. Как то можно из нескольких файлов сделать один .exe ?
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Уточни вопрос. Собрать проект, что ли, из нескольких .cpp - файлов?
Тогда все зависит от используемого компилятора. |
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Да проект. Boralnd C++ 3.1. Вот. Надеюсь я то написал)
Добавлено @ 16:15 Borland C++ 3.1. |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
timurka, сложный случай... с данным компилятором.
Не так давно, кажется, поднимались темы про этот компилятор, попробуй поиск... Если не найдешь, попробуй разобраться сам... Тебе должно помочь меню Project в редакторе... |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
помогите:
после
"p" понятно что =123 но и "a" станивится 123, почему? |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Это нормальные поведение strtok.
Для того, чтобы получать дальнейшие "токен"ы, вызывай:
|
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
благодарю, это знаю, но все так и удивляюсь, следующих слов "p" и так получает, а "a" зачем меняется, т.е. два переменных тратиться для одной цели...
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Ну дык так написали функцию...
![]() Не нравится - можешь написать свою ![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Metixa, напиши свою ф-цию - тогда поймешь почему эта работает именно так
![]() Это сообщение отредактировал(а) archimed7592 - 24.11.2006, 22:28 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Metixa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
да, может .. когда та напишу но сейчас такая маленькая задача была:
он выдает количество разных слов.. в строку.. по проще можно было? Это сообщение отредактировал(а) Metixa - 25.11.2006, 02:29 |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
слов разделенных только запятыми? конечно можно - посчитать кол-во запятых
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
sasa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 4.11.2006 Репутация: нет Всего: нет |
Очень очень прошу киньте мне ссылку на Электронно-цифровую подпись RSA. Мне нужна прога на C++.ИМли выложьте правильную прогу на форуму!Пожалуйста! Просто у меня аттестация по С++, please.......Пасиб!
![]() |
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Кто-нибудь подскажет как заставить программу записывать результат своих вычислений в текстовый файл, вместо вывода на экран cout<<? И как сделать чтоб она могла считывать даные с файла вместо cin>>? И как указать директорию в которой находиться файл?
|
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Плиззз, помогите! Сам пытался разобраться, но не получаеться. Помогите!
|
|||
|
||||
Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Пасибки!
|
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
В чем тут ошибка?
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
timurka, заставить cin\cout работать с файлами можно, к примеру, извне:
myprogram.exe < input.txt > output.txt -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Здесь в цикл while нужно обернуть 2 строки, а не одну:
Где-то так. |
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Подскажите, пожалуйста! Как можно считывать с файла линию цифр? Можно ли это делать при помощи getline()?
С этим кодом не получается. |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Интересно, а что вы хотели проверить в данном условии:
... float zifr[46],zifr2[46]; ... if (zifr==1234) cout<<”Текст 1”; else if (zifr==1245) cout<<”Текст 2”; ... Согласно правилам языка Си zifr является указателем на массив (т.е. адрес). Вы проверяете соответствие значения указателя числу 1234? |
|||
|
||||
timurka |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Если файл содержит, к примеру, 4 строки и в каждой строке записано по одному
четырехзначному числу. Как можно считать все строки, чтоб потом можно было поставить условие по поводу содержания строк, тоесть чтоб потом можно было оперировать каждой строкой по отдельности, а не всеми вместе? Если в строке №1 записано число 1245, то вывести на экран одно сообщение...если в строке №3 число 1576, то вывести еще одно сообщение. |
|||
|
||||
Okonner |
|
|||
Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 5.11.2006 Где: Питер Репутация: нет Всего: нет |
Здравствуйте, господа! Как использовать буфер клавиатуры, для фиксирования последней нажатой
клавиши. Что такое буфер клавы? |
|||
|
||||
Metixa |
|
||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 29.10.2006 Репутация: нет Всего: нет |
Добрый вечер!!! archimed.... Благодарью за помощи.. не поможеш разобратся еще лучше, не даш мне ссылку по поводу всего этого..? ![]() ![]() |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
неа, не дам...у меня всё это с опытом пришло и единого источника как такого либо нету либо я про него не знаю
![]() хотя нет...дам ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
hip |
|
||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.2.2007 Репутация: нет Всего: нет |
Здравствуйте! Мне нужно сделать программу, которая будет проверять верность цыфр в файле. Я Сделал, но проблема в том, что программа вместо четырех символов до пробела считует по одному символу.
Пробовал через getline(), но так выбивает непонятную ошибку.
Не знаю что делать, помогите пожалуйста. Добавлено @ 17:52 Русские символы вместо расширения это ошибка шрифта, тоесть в программе там вместо "вфе" dat, а "ышд" sol, это я ошибся когда вводил на форуме, в проге все нормально |
||||
|
|||||
ip127001 |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 164 Регистрация: 24.11.2006 Где: Omsk Репутация: -2 Всего: -1 |
![]() сторок что бы всем становилось понятно, что вы не шутите ![]() Добавлено @ 09:36 конкретней сформулиру задачу... что в начале, что в конце а то бошка болит, мочи нет в твоей кулебяке разбираться..проще самому написать --------------------
aqua currit et debere currere ut currere solebat |
|||
|
||||
hip |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 5.2.2007 Репутация: нет Всего: нет |
В общем есть файл в котором записано по 4 цыфры через пробел, например: 5673 3452 2673 1561 и т.д. Нужно чтоб программа находила в файле только определенные комбинации из 4 цыфр и помещала их в другой файл. Если использовать для условия if(), то не возможно компилировать так как не хватает памяти. Через switch() все получается, но программа вместо сразу четырех символов считывает по одному и сверяет с условием только одну цыфру, а в условии 4-ех значные цыфры и ничего не выходит. Что можно сделать? Через getline() тоже пробовал, но выбивает непонятную ошибку и компилировать не получается.
|
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Посмотрел на твой код...
1. main() должна возвращать int 2. после попытки открыть файл, надо проверить, открылся ли он вообще (if (!file) { ... }) 3. Каждый файл нужно закрывать после использования (file.close()) 4. зачем открывать файл для вывода в цикле? + см. пкт. 3. 5. чтобы сравнить kod с чем-нибудь, надо бы сначала прочитать в него что-нибудь (file >> kod) 6. kod объявлен как char, это одна буква (0<=char<255), а сравнивается он с чем? объяви kod как int 7. switch на несколько сотен цифр это изврат, если нельзя как-то вычислить эти числа, то хотя бы запиши их в массив и ищи в нём (лучше бинарно, быстрее будет) -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
nickless, ну это здесь не так уж и важно, так как при выходе из функции он закрывается. Это не так важно тут. Важно, если в пределах одной функции файл используется для ввода, потом для вывода. ИМХО
![]() |
|||
|
||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Я чего-то этого не узрел file.open("SH.dat"); while (! file.eof()) { ofstream of; of.open("SHI.sol",ios::app); Вроде разные... nickless прав. Весь код выглядит несколько неправильным... |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Anikmar, что? Я теоретически говорил. Ну по-любому смысла закрывать особого тут нет (хотя бы потому что код бредовый какой-то) Хотя, если код длинный, мы читателю кода можем таким образом показать, что дальше файл не используется, или что-нибудь еще
![]() Это сообщение отредактировал(а) Xenon - 10.2.2007, 23:12 |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
Xenon, да, в принципе файлы закроются при вызове деструктора, но всё равно нехорошо
![]() Да и нечего привыкать к плохому стилю, потом многих ошибок можно будет избежать, если всегда и везде (за исключением особых случаев) всё инициализировать, проверять, закрывать, освобождать... -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
nickless, Ну, в принципе, согласен с тобой (особенно после прочтения Саттера о 101 правиле). Но если проводить аналогию с объвлению всех переменных неизменяемых как const(15 совет у Саттера) , то закрытие файла после того, как он больше не понадобится необходимо для того, чтобы показать, что дальше файл не будет использоваться.
PS. Хотя аналогия такая ... шаткая ![]() |
|||
|
||||
БайкодромКосмодур |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 14.3.2007 Репутация: нет Всего: нет |
Я в программировании полный Лох. Приобрёл книжки, сижу изучаю и в принципе вопросов не возникает, но проблема в том, что необходима практика. Самому придумывать задачи не получается. Может, кто посоветует как быть, может, есть смысл пойти на курсы или на второе высшее.
|
|||
|
||||
Dimanc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.4.2007 Репутация: нет Всего: нет |
Решил изучить с++(изучал раньше паскаль). раздобыл книгу дейтела. а первая прога не компилируеться.
У меня bcb 6. расскажите, пожалуйста, подробно, как надо компилировать.(как я понял ошибка то ли в obj- файле, толи даже он не получаеться) Вот код программы хеллоу ворлд)
ps извините, если такой вопрос уже поднимали |
|||
|
||||
mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
А потом, говори, что за ошибка. Потому как вряд ли из-за этого небольшого недочета вылезет ошибка obj. Это, скорее, что-то с IDE. Давай ошибку. Это сообщение отредактировал(а) mr.Anderson - 18.4.2007, 20:22 |
|||
|
||||
Dimanc |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 18.4.2007 Репутация: нет Всего: нет |
то же самое, если просто main() |
|||
|
||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 35 Всего: 60 |
тебе нужно выбрать создание нового проекта и в нем выбрать тип "консольное приложение", а вообще советую взять поновее книгу. Судя по примеру у тебя что-то древнее
Сейчас модно писать такое так
Это сообщение отредактировал(а) Fazil6 - 18.4.2007, 23:04 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |