Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Для начинающих, кто занимаеться по -Е.Л. Шиманович С/С++ 
:(
    Опции темы
Metixa
  Дата 2.11.2006, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



давайте начинающие.. поделимся опытом, а если кто-то из проф-ов нам поможет им большой Благодарность
PM MAIL   Вверх
Kuvaldis
Дата 2.11.2006, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



Metixa
ты бы еще предложил: "давайте поговорим не знаю о чем".
Не нарывайся на репрессии, задавай более конкретные вопросы


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
Metixa
Дата 2.11.2006, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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;
}


 что очень просто компуется... 

PM MAIL   Вверх
JackYF
Дата 2.11.2006, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Это не инициализация... Это просто запись по адресу, и все... что здесь особо непонятно...
Говорится про то, что нельзя прямо в месте выделения массива присвоить его элементам определенные значения, как для статического массива...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
bsa
Дата 2.11.2006, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Там, наверное, имелось в виду, что нельзя сразу весь заполнить одной командой при выделении памяти.
JackYF уже это сказал. smile

Это сообщение отредактировал(а) bsa - 2.11.2006, 21:44
PM   Вверх
Metixa
Дата 2.11.2006, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
apook
Дата 2.11.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



А там выше должно быть 


int **pi=new int [7];


а потом

for(int i = 1; i<7; i++)
{int *pi = new int [i]; 





--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
Fazil6
Дата 2.11.2006, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

Это наверно просто рядом записанные динамические данные, а не массив, правильно?

это не массив. это динамическое создание интов. совсем не обязательно они будут подряд в памяти находиться 
PM MAIL   Вверх
Xenon
Дата 3.11.2006, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Fazil6, ... в C++ smile


--------------------
user posted image  
PM MAIL   Вверх
Fazil6
Дата 3.11.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(Xenon @  3.11.2006,  01:46 Найти цитируемый пост)
Fazil6, ... в C++ 

читал... 
много думал... 
о чем речь невтыркнул...
PM MAIL   Вверх
Xenon
Дата 3.11.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Fazil6, честно говоря я сегодня тоже smile У меня вчера был сложный день: зашел в форум Borland`a и с уверенностью, что это форум по Visual C++ ... кароче ответил в тему smile
Судя по всему я писал про расположение в памяти двумерных массивов в разных языках, только зачем  smile 


--------------------
user posted image  
PM MAIL   Вверх
vinter
Дата 3.11.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

Репутация: 13
Всего: 56



Код

for(int i = 1; i<7; i++)
{int *pi = new int(i);
cout<<*pi<<endl;}
}

так ты не массив заполняешь, а каждый раз выделяешь новую память под указатель, соответсвенно в конце цикла pi будет указывать на последний элемент полученный в цикле, а к остальным ты обратиться не сможешь..

Код

А там выше должно быть 
int **pi=new int [7];//ошибка
а потом

for(int i = 1; i<7; i++)
{int *pi = new int [i];


че то непонятно что ты пытался изобразить..


--------------------
Мой блог
PM MAIL WWW   Вверх
Metixa
Дата 4.11.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



всем благодарью

PM MAIL   Вверх
Metixa
Дата 8.11.2006, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



просьба, не ошибка на стр. 268. с низу  16 строке 

if(sum[j] sum[nmin])  nmin = j;

по моему <, а не >;

PM MAIL   Вверх
JackYF
Дата 9.11.2006, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Metixa @  8.11.2006,  23:44 Найти цитируемый пост)
просьба, не ошибка на стр. 268. с низу  16 строке 

if(sum[j] > sum[nmin])  nmin = j;

по моему <, а не >;


Да, скорее всего... Если, конечно, автор под индексом nmin не подразумевал индекс макс. элемента smile



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
bruja
Дата 9.11.2006, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.11.2006

Репутация: нет
Всего: нет



Ребята, я недавно начала изучать С++ и иногда торможу. У меня тут программка, которая выдает группы чисел-близнецов до числа n. Ч-близнецы, это простые числа с разностью, равной 2. Мне надо, чтоб она еще выдавала максимальную пару Ч-Б. А я как не пишу, она мне все неправильно выдает... smile Помогите, пожалуйста, совсем голову сломала. smile 

#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();
}
PM MAIL   Вверх
Metixa
Дата 10.11.2006, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



прошу профам:

что обшее между шаблоном функции и указателем на функции (просто интересно..

зараннее Благодарю!!!
PM MAIL   Вверх
archimed7592
Дата 10.11.2006, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Metixa @  10.11.2006,  01:18 Найти цитируемый пост)
что обшее между шаблоном функции и указателем на функции

ничего smile ну только может быть совсем немножко (в названии)
что такое шаблон? шаблон это шаблон. ты в него можешь подставить заданные в нём же параметры (тип или константу) и получишь отдельную ф-цию на этапе компиляции.
что такое указатель не ф-цию? это просто указатель на какую-ту существующую ф-цию. т. е. все ф-ции придется задать ручками.

если ты про различие между вызовом шаблонной ф-ции и вызовом ф-ции по указателю, то различие такое же, как между вызовом обычной ф-ции и вызовом ф-ции по указателю.




--------------------
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
PM Jabber   Вверх
Metixa
Дата 10.11.2006, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Цитата(bruja @ 9.11.2006,  22:46)
Ребята, я недавно начала изучать С++ и иногда торможу. У меня тут программка, которая выдает группы чисел-близнецов до числа n. Ч-близнецы, это простые числа с разностью, равной 2. Мне надо, чтоб она еще выдавала максимальную пару Ч-Б. А я как не пишу, она мне все неправильно выдает... smile Помогите, пожалуйста, совсем голову сломала. smile 

#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();
}

#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
PM MAIL   Вверх
bruja
Дата 11.11.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.11.2006

Репутация: нет
Всего: нет



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

PM MAIL   Вверх
sasa
Дата 11.11.2006, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.11.2006

Репутация: нет
Всего: нет



Ребята может кто поможет с прогой? мне нужна программка Алгоритма Витерби (т. е. Алгоритм сравнения двух строк и Хэммингова разность). Кто может помогите прогой, а то у меня аттестация, и не знаю как быть.... Спасибо!!!!! smile  smile 
PM MAIL   Вверх
archimed7592
Дата 11.11.2006, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
Metixa
Дата 11.11.2006, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Цитата(bruja @ 11.11.2006,  14:29)
Metixa , ты не понял....у меня уже готовая прога...только надо дописать в ней пару строк, чтоб она еще выводила макс. пару близнецов.

Добрый Вечер BRUJA!!!

Я поньял что твоя версия тоже работает, просто я по короче тебе предложил, а попробуй вот так:

Код

#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<[color=red]=[/color]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 - 12.11.2006, 22:06
PM MAIL   Вверх
Damarus
Дата 12.11.2006, 02:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



brujaMetixa, пользуйтесь кнопкой Код. Не нарывайтесь на репрессии.
PM MAIL ICQ Jabber   Вверх
Zloi_kot
Дата 12.11.2006, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 12.11.2006

Репутация: нет
Всего: нет



А вот и сдрасьти!! Если кто знает киньте пажалста ссылочку где можно скачать с инета книжку по си++ да так чтобы там исче и написано понятьненько было smile также надо чтото типо задачника по си++ где собрана куча задачек от простеньких до посложнее. осинь надо..
PM MAIL   Вверх
TaNK
Дата 12.11.2006, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 669
Регистрация: 29.10.2006
Где: Краснодар

Репутация: нет
Всего: 1



www.WMate.ru
да и вообще пользуйтесь поисковиком....зачем такие вопросы задовать тут и не по  теме!


--------------------

Oracle 11.2.0.3.0
FireBird 1.0-2.5


PM MAIL ICQ   Вверх
Metixa
Дата 12.11.2006, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Обясните что за кнопка кода?

Это сообщение отредактировал(а) Metixa - 12.11.2006, 19:39
PM MAIL   Вверх
archimed7592
Дата 12.11.2006, 19:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
bruja
Дата 12.11.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.11.2006

Репутация: нет
Всего: нет



Цитата(archimed7592 @ 12.11.2006,  19:47)
Помощь по кодам форума
3-й снизу пункт.

в форме ответа есть кнопочка "Код". в выпадающем списке выбираешь нужный язык (с++, к примеру)

шпасибо, бум исправляться))) smile

Добавлено @ 21:10 
Metixa, спасибо.))
Но у меня от этого мозгов не прибавилось))
Как вывести максимальную пару близнецов? smile 
если у тя есть предложения, просто впиши эту строку в прогу...  smile 
PM MAIL   Вверх
Damarus
Дата 12.11.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 671
Регистрация: 6.5.2006

Репутация: 6
Всего: 29



Цитата(bruja @  12.11.2006,  21:04 Найти цитируемый пост)
шпасибо, бум исправляться)))

Вот и хорошо smile . Для начала предлагаю вам отредактировать свой сообщения.
PM MAIL ICQ Jabber   Вверх
Metixa
Дата 12.11.2006, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Bruja добрый вечер, не заметил ты?:
for(i=3; i<=n; i+=2)

я добавил "=".
PM MAIL   Вверх
Metixa
Дата 13.11.2006, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Прошу вас помогите:

когда выпольняю через пуск-выполнить, что-то мгновенно появляется и все..
PM MAIL   Вверх
archimed7592
Дата 13.11.2006, 01:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
Metixa
Дата 13.11.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Вопрос:

в книжке стр: 283, снизу 9-ая строка:

argv[] имеет тип char*..

а я спрашиваю почему не char**..?
Благодарю...
PM MAIL   Вверх
Metixa
Дата 13.11.2006, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Я очень прошу помощ.. много времени теряю..

стр. 284 снизу 1-ая окошечка, его не получается выдать, что-то в роде бы выпригивается но через мгновение изчезает, в командную строку пишу: "d:\b2.exe" a b c

а прог:
 
Код

#include<iostream>
#include<conio.h>
using namespace std;
void main(int argc, char * argv[]){getch();
cout<<argc<<endl;
getch();
}


Это сообщение отредактировал(а) Metixa - 13.11.2006, 12:58
PM MAIL   Вверх
Fazil6
Дата 13.11.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

а я спрашиваю почему не ..?

а почему собственно ты решил, что должен быть char** ?
передается массив С-строк, а не массив указателей на указатель на char
PM MAIL   Вверх
archimed7592
Дата 14.11.2006, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Metixa @  13.11.2006,  13:01 Найти цитируемый пост)
argv[] имеет тип char*..а я спрашиваю почему не char**..?
с точки зрения компилятора запись type arg [] в аргументах ф-ции эквивалентна записи char **. так что разницы нет.

Цитата(Fazil6 @  13.11.2006,  14:02 Найти цитируемый пост)
а почему собственно ты решил, что должен быть char** ?
так то char ** и есть ;)

Цитата(Fazil6 @  13.11.2006,  14:02 Найти цитируемый пост)
передается массив С-строк, а не массив указателей на указатель на char
гм...а в чем с точки зрения программы разница между C-строкой и указателем на char? smile

Добавлено @ 02:19 
Цитата(Metixa @  13.11.2006,  13:57 Найти цитируемый пост)
 в командную строку пишу: "d:\b2.exe" a b c
коммандная строка - это где? если в cmd.exe, то все должно быть нормльно...если пуск->выполнить, то совет использовать
Код
#include <string>
// ...
std::string dummy;
std::getline (cin, dummy);
и вообще. совет тебе, забудь ты про conio.h. ну нету в языке такого заголовка...вообще говоря не понимаю тех, кто пишет такие книги. ну вот зачем этот conio (борландовский он что ль)? это же консоль! это же святое smile 


--------------------
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
PM Jabber   Вверх
Fazil6
Дата 14.11.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



в общем случае char *array[] не тоже самое, что char**
PM MAIL   Вверх
Metixa
Дата 14.11.2006, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



опять проблема..
стр. 287, снизу 9-ая строка: 
if(extreme == BIG && value > boundary) 

а сравнивать  отрицательные числа..?

PM MAIL   Вверх
archimed7592
Дата 14.11.2006, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Fazil6 @  14.11.2006,  12:56 Найти цитируемый пост)
в общем случае char *array[] не тоже самое, что char**
я вот даже подчеркнул, что в аргументах ф-ции это то же самое. а в общем случае - да, не то же самое.


--------------------
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
PM Jabber   Вверх
Fazil6
Дата 14.11.2006, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



ты, наверное, думаешь, что все тут на память помнят эту книгу, ну или как минимум из рук ее не выпускают

Что необычного в сравнивании отрицательных чисел?
PM MAIL   Вверх
Metixa
Дата 15.11.2006, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Fazil6 у тебя есть это книга?
PM MAIL   Вверх
Fazil6
Дата 15.11.2006, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



нет
PM MAIL   Вверх
archimed7592
Дата 15.11.2006, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Metixa @  15.11.2006,  00:31 Найти цитируемый пост)
а сравнивать  отрицательные числа..
ну сравнивай на здоровье...в чем проблема? задавай более содержательные вопросы... smile


--------------------
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
PM Jabber   Вверх
Metixa
Дата 15.11.2006, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



 уже разобрался, благодарю

Это сообщение отредактировал(а) Metixa - 15.11.2006, 01:54
PM MAIL   Вверх
Metixa
Дата 15.11.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
JackYF
Дата 15.11.2006, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



nameofmas - локальная переменная. Адрес 0-го элемента массива.
&nameofmas - адрес этой локальной переменной, который в общем случае никак не связан с адресом 1-го элемента.

НО!

Для статических одномерных массиввов это одно и то же, так как память выделяется в стеке, а самого указателя как такового отдельного нету...

Может плохо объяснил...
В любом случае &nameofmas лучше не пользоваться... зачем?



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 15.11.2006, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



имя массива - rvalue и такое подятие как адрес с ним не связано. 
Цитата

 д е     з а п и с ы в а е т с я с а м а n a m e o f m a s?

нигде
PM MAIL   Вверх
JackYF
Дата 15.11.2006, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Fazil6 @  15.11.2006,  19:48 Найти цитируемый пост)
имя массива - rvalue и такое подятие как адрес с ним не связано. 


Но адрес-то существует. Переменная-то есть.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 15.11.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

Но адрес-то существует. Переменная-то есть.

имя массива это не переменная.  Единственный адрес с которым оно связано - адрес первого элемента.
PM MAIL   Вверх
Metixa
Дата 15.11.2006, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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---- это же тоже последовательность котрый гдето надо запи с а т ь, а где, он же не может висеть на "воздух"...

извините за зацикливания, но пока не докапаюсь до к о н ц а, не могу продолжать учебу (может быть вредная привичка...) smile 
PM MAIL   Вверх
Fazil6
Дата 15.11.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



почитай
http://faqs.org.ru/progr/c_cpp/cfaqrus.htm
там в п.2 эти вопросы перетираются
PM MAIL   Вверх
Metixa
Дата 15.11.2006, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Цитата(Fazil6 @  15.11.2006,  22:09 Найти цитируемый пост)
почитай
http://faqs.org.ru/progr/c_cpp/cfaqrus.htm
там в п.2 эти вопросы перетираются 


благодарю Fazil6 

НО:

 Объявление массива
    "char a[6];" требует определенного места для шести символов, которое
    будет известно под именем "a". То есть,    существует место под именем
    "a", в которое могут быть помещены 6 символов.

как понять - "под именем "a". "?  где компилятор прочитает что это имя "а" а не "Gospodin_Karuzo" ?????
PM MAIL   Вверх
Metixa
Дата 16.11.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



почему ++ к имени массива требует lvalue (понятно что имя массива константа) а если этот argv дается  main - у из командной строки тогда
к ++argv -- "зеленный цвет"?
PM MAIL   Вверх
Fazil6
Дата 16.11.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

а если этот argv дается  main - у из командной строки тогда
к ++argv -- "зеленный цвет"?

в параметрах функций массив преобразуется просто к указателю 
PM MAIL   Вверх
Dov
Дата 16.11.2006, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Цитата(Metixa @  15.11.2006,  18:40 Найти цитируемый пост)
где записывается сама nameofmas, по какому адресу, он же все таки указатель - константа?


Цитата(Metixa @  15.11.2006,  22:57 Найти цитируемый пост)
 Объявление массива    "char a[6];" требует определенного места для шести символов, которое    будет известно под именем "a". То есть,    существует место под именем    "a", в которое могут быть помещены 6 символов.как понять - "под именем "a". "?  где компилятор прочитает что это имя "а" а не "Gospodin_Karuzo" ?????


Ну, что ж, попробую и я объяснить необъяснимое.

                                         Указатели и массивы.
В языке С существует очень тесная связь между указателями и массивами.
Любое действие, которое можно совершить с помощью массивов, можно так же сделать и с помощью указателей.
   Когда мы объявляем массив:
Код
int X[8];

то это значит, что X - это массив из 8 элементов, имеющих тип int и расположенных в ячейках памяти 
непрерывно. Это даёт нам возможность обращаться к элементам массива по индексу, начиная с X[0] и до X[7].
    Схематично это можно изобразить так:
Код
               -------------------------------------------------------------------------
               |  X[0]  |  X[1]  |  X[2]  |  X[3]  |  X[4]  |  X[5]  |  X[6]  |  X[7]  |
               -------------------------------------------------------------------------

Таким образом, когда мы объявляем массив, то это значит, что мы объявляем непрерывность ячеек в
памяти и плюс к этому мы объявляем указатель, в котором хранится адрес начала массива в
памяти компьютера. Этим указателем и является имя массива, в нём же и содержится адрес первого
элемента массива, т.е. адрес элемента с индексом 0, т.е. адрес X[0].
   Схематично это можно изобразить так:
Код
 -----------
 |указатель|
 -----------\
             \
              | 
            --V----------------------------------------------------------------------
            |  X[0]  |  X[1]  |  X[2]  |  X[3]  |  X[4]  |  X[5]  |  X[6]  |  X[7]  |
            -------------------------------------------------------------------------

Например, если массив начинается с адреса 1000, то X[0] находится по адресу 1000, X[1] - по адресу
1004, X[2] - по адресу 1008 и т.д.(при условии, что тип int - 4 байта).
   Схематично это можно изобразить так:
Код
   ---------
   | 1000  | - указатель
   ---------
             
               1000     1004     1008     1012     1016     1020     1024     1028
            -------------------------------------------------------------------------
            |  X[0]  |  X[1]  |  X[2]  |  X[3]  |  X[4]  |  X[5]  |  X[6]  |  X[7]  |
            -------------------------------------------------------------------------

То есть, можно сказать, что указатель, в котором хранится адрес первого элемента массива - это
особая ячейка памяти, а его имя - это имя массива. Надеюсь, понятно. Тогда идём дальше.

                         Имя массива, как указатель.
Напомню ещё разок: имя указателя, в котором хранится адрес первого элемента массива - это имя
самого массива.
Когда мы объявляем массив элементов типа int, это значит, что имя массива - это переменная типа int*,
т.е. указатель на тип int.
Когда мы объявляем массив элементов типа double, это значит, что имя массива - это переменная типа
double*, т.е. указатель на тип double и т.д.
Например:
Код
long arr[5];

Когда мы объявили массив arr, то мы объявили 5 непрерывных ячеек в памяти типа long и ещё мы объявили
дополнительную переменную с именем arr (типа long*), хранящую адрес первой ячейки массива. Если массив
начинается с адреса 2020, то схематично это можно изобразить так(если тип long занимает 4 байта):
Код
   ---------
   | 2020  | - arr
   ---------
             
                2020       2024       2028       2032       2036     
            --------------------------------------------------------
            |  arr[0]  |  arr[1]  |  arr[2]  |  arr[3]  |  arr[4]  |  
            --------------------------------------------------------

Все элементы массива arr - это элементы типа long. Имя массива arr - это переменная типа long* и она
содержит адрес первой ячейки массива, т.е. адрес arr[0].

                            Применение имени массива, как указателя.
Объявляем массив:
Код
int ar[5];

Не забываем, что аr - это переменная типа int*, потому что аr содержит адрес ячейки типа int, т.е.
аr - это указатель на тип int. Попробуем использовать аr так, как мы бы использовали любой другой
указатель.
Код
*ar = 10;  // можно

Если ar - указатель на тип int, то *ar - это содержимое ячейки памяти, адрес которой хранится в ar,
т.е. это равнозначно:
Код
ar[0] = 10;

Как и равнозначны следующие две записи:
Код
scanf("%d", &ar[0]);
scanf("%d", ar);

                             Разница между именем массива и указателем.
Указатель - это всё же переменная и мы можем изменять её значение. Имя массива - это хоть и указатель,
но имеющий постоянный адрес, который изменить мы не можем.

Пример:
Код
long  id[450], total;
long* iptr = id;

id++;          // нельзя
iptr++;        // можно 

id = &total;   // нельзя
iptr = &total; // можно


Пока всё.  smile  

Это сообщение отредактировал(а) Dov - 17.11.2006, 01:21


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fazil6
Дата 16.11.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

Когда мы объявляем массив элементов типа int, это значит, что имя массива - это переменная типа int*,
т.е. указатель на тип int.
нет

Цитата(Dov @  16.11.2006,  16:49 Найти цитируемый пост)
Например:код C++1:long arr[5];highlightSyntax('cpp_lYTVhN','cpp');highlightSyntax('cpp_lYTVhN','cpp');Когда мы объявили массив arr, то мы объявили 5 непрерывных ячеек в памяти типа long и ещё мы объявилидополнительную переменную с именем arr (типа long*), хранящую адрес первой ячейки массива. Все элементы массива arr - это элементы типа long. Имя массива arr - это переменная типа long* и она содержит адрес первой ячейки массива, т.е. адрес arr[0].


нет. 
arr имеет тип long[5], а не long*.  
arr может использоваться как long * const, но не long*. Повторю еще раз имя массива - это  не переменная.
единствено  при передаче массива в параметрах функции передается переменная типа указатель-на-типэлементамассива(неконстантный).


PM MAIL   Вверх
Dov
Дата 16.11.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Цитата(Fazil6 @  16.11.2006,  17:20 Найти цитируемый пост)
нет. arr имеет тип long[5], а не long*.  arr может использоваться как long * const, но не long*. Повторю еще раз имя массива - это  не переменная.единствено  при передаче массива в параметрах функции передается переменная типа указатель-на-типэлементамассива(неконстантный).

Fazil6, ты пытаешься спорить, не понимая о чём. Ты до конца дочитал? Если да, то прочти ещё раз, но повнимательнее, а потом поговорим.  smile 




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fazil6
Дата 16.11.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

ты пытаешься спорить, не понимая о чём. Ты до конца дочитал?

и что же я не понял?
PM MAIL   Вверх
Dov
Дата 16.11.2006, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Цитата(Fazil6 @  16.11.2006,  17:43 Найти цитируемый пост)
и что же я не понял?


Цитата(Fazil6 @  16.11.2006,  17:20 Найти цитируемый пост)
arr может использоваться как long * const, но не long*

Оттого, что arr -  const, он не перестал быть long *, т.е. он по-прежнему хранит адрес, а значит он является указателем на тип long, а указатели на тип long имеют тип  long *. К тому же, он может изменять значения своих элементов, как обычный указатель.

Цитата(Dov @  16.11.2006,  16:49 Найти цитируемый пост)
*ar = 10;  // можно




--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fazil6
Дата 16.11.2006, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



да уж.....
это ты ничего не понял. То, что имя массива может использоваться в выражении как константный указатель не означает, что оно является переменной-указателем.
тип 
long[] != long[5] != long * != long * const 
это разные типы
PM MAIL   Вверх
Dov
Дата 16.11.2006, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Fazil6, тебе что, на иврите объяснять нужно, по-русски твая-мая не панимай, учи матчасть, не грузи.


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
JackYF
Дата 16.11.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Fazil6, где отличия между первым и вторым?
А также принципиальные различия с четвертым?


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 16.11.2006, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата(JackYF @  16.11.2006,  18:50 Найти цитируемый пост)
Fazil6, где отличия между первым и вторым?А также принципиальные различия с четвертым?

ну с первым вариантом я погорячился...
посмотри что выдаст вот такой код
Код

int nn[] = {0,0,4,4,4};
int *const mmm = nn;
//int **ncm  = &mmm;     // посмотри как скомпиллируется если это разкомментировать (к вопросу
                                        // что const значения не имеет)
cout << nn << "    " << &nn  << "     " << &mmm << "  " << sizeof(nn) << "  " << sizeof(mmm);



Это сообщение отредактировал(а) Fazil6 - 16.11.2006, 19:34
PM MAIL   Вверх
JackYF
Дата 16.11.2006, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Код

//int *ncm  = &mmm;     // посмотри как скомпиллируется если это разкомментировать (к вопросу
//int *cm  = &nn;            // что const значения не имеет)


Не, нормально? Ты пытаешься присвоить указателю на инт АДРЕС указателя на инт? И что ты после этого хочешь???

mmm и nn уже сами по себе указатели.

Добавлено @ 19:33 
Fazil6, молодец, быстро отредактировал smile

Тебе осталось еще убрать это же самое в выводе.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 16.11.2006, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

Fazil6, молодец, быстро отредактировал 

Тебе осталось еще убрать это же самое в выводе.

 smile  не убрал, а исправил. Я вот это имел в виду
int **ncm  = &mmm;

Добавлено @ 19:36 
а в выводе тебе что не устраивает?
PM MAIL   Вверх
JackYF
Дата 16.11.2006, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Код

//int **ncm  = &mmm;     // посмотри как скомпиллируется если это разкомментировать (к вопросу


А вот это уже логично, что скомпилируется... Но что ты этим доказал?

Добавлено @ 19:40 
Да, я теперь понял, что ты хотел сказать... Но, все-таки, что ты этим доказал? из сказанного ранее? Несовместимость каких типов?

Это сообщение отредактировал(а) JackYF - 16.11.2006, 19:38


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 16.11.2006, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

А вот это уже логично, что скомпилируется... Но что ты этим доказал?

как раз не скомпиллируется  smile потому, что mmm объявлен как константный
PM MAIL   Вверх
JackYF
Дата 16.11.2006, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Понятно, что long* и long* const - разные... а насчет остального что?

Добавлено @ 19:45 
Цитата(Fazil6 @  16.11.2006,  19:41 Найти цитируемый пост)
как раз не скомпиллируется  smile потому, что mmm объявлен как константный 


Мое сообщение относилось к пред. версии твоего поста  smile , то что не скомпилируется, я понял и на всяк пожарный даже проверил.  smile 

Так несовместимость каких типов ты этим доказал? Кроме ( long* != long* const ) ?



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 16.11.2006, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

Да, я теперь понял, что ты хотел сказать... Но, все-таки, что ты этим доказал? из сказанного ранее? Несовместимость каких типов?

я не говорил, что типы несовместимы. Эти типы приводятся друг другу (не во всех комбинациях конечно), но это разные типы. 
А то, что выводися cout показывает, что имя массива - это не int*
PM MAIL   Вверх
JackYF
Дата 16.11.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Конкретнее: чем отличаются long* const, int[] и int[5]?


Цитата(Fazil6 @  16.11.2006,  19:45 Найти цитируемый пост)
А то, что выводися cout показывает, что имя массива - это не int* 


Да. Это int* const... Потому что:

Код

void my_func( int mas[] )
{
    std::cout << sizeof(mas);
}


Выведет 4.
Код

int nn[] = {0,0,4,4,4};
   int *const mmm = nn;
//int **ncm  = &mmm;     // посмотри как скомпиллируется если это разкомментировать (к вопросу
   // что const значения не имеет)
   std::cout << nn << "    " << &nn  << "     " << &mmm << "  " << sizeof(nn) << "  " << sizeof(mmm);
    my_func( nn );
   return 0;


Я передал тип int[], не так ли? sizeof вернула уже 4, а не 20.

sizeof( int[] ) вообще не сработает, так как int[] - incomplete type.


При любом ИСПОЛЬЗОВАНИИ "типа" int[] комплилятор считает его int* const, и все дела... Отсюда отсуствие принципиальной разницы...



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Dov
Дата 16.11.2006, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Цитата(Fazil6 @  16.11.2006,  19:45 Найти цитируемый пост)
А то, что выводися cout показывает, что имя массива - это не int*

А что же это по=твоему, и что у тебя cout показывает smile 



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Fazil6
Дата 16.11.2006, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

Да. Это int* const... Потому что:
Код

void my_func( int mas[] )
{
    std::cout << sizeof(mas);
}


нет. Все не так. я ведь в выводе использую массив и именно int* const, и выводит разное. Ведь и имя массива и указатель указывают на одно и тоже, но и sizeof и взятие адреса выдают разные результаты для одного и другого. Так почему вывод, что компиллятор считает эти вещи одним типом? Это разные типы.
Теперь по поводу твоей функции my_func.
Передать массив по значению нельзя. Всегда при передаче массива как параметр функции создается временная локальная переменная указатель (в данном случае int*) и инициализируется адресом первого элемента. Причем это не константный указатель.  Поэтому у тебя и получается такой результат

Цитата

При любом ИСПОЛЬЗОВАНИИ "типа" int[] комплилятор считает его int* const, и все дела... Отсюда отсуствие принципиальной разницы...

здрасте! посмотри, что я попросил вывести и как выводится. Где там отсутствие разницы?

Это сообщение отредактировал(а) Fazil6 - 16.11.2006, 20:20
PM MAIL   Вверх
JackYF
Дата 16.11.2006, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



sizeof() - использование?


Цитата(Fazil6 @  16.11.2006,  20:10 Найти цитируемый пост)
ередать массив по значению нельзя. Всегда при передаче массива как параметр функции создается временная локальная переменная указатель (в данном случае int*) и инициализируется адресом первого элемента. Причем это не константный указатель.  Поэтому у тебя и получается такой результат
.

Да, согласен. Неправ.

Ну а то, что адреса указателей разные - так это, по-моему логично... Две переменные не могут иметь однинаковый адрес.

Добавлено @ 20:46 
Цитата(JackYF @  16.11.2006,  19:57 Найти цитируемый пост)
так как int[] - incomplete type.


Такого типа как ТИПА не существует. Его объявление и sizeof() - заморочки компилятора времени компиляции.
Там, где он используется( не адрес берется и не sizeof(), а индексируется с целью получения элементов ), он ничем не отличается от int* const... Вот, по-моему, и все...



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 16.11.2006, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

Ну а то, что адреса указателей разные - так это, по-моему логично... Две переменные не могут иметь однинаковый адрес.

фокус не в этом, а в том, что 
Код

cout << nn << "    " << &nn

выведет одно и тоже, а 
Код

cout << mmm << "   " << &mmm;

выведет значение указателя и адрес, переменной mmm 
Это к разговору о том, что имя массива это переменная, которая хранит адрес первого элемента. Если бы это была переменная, то можно было бы узнать ее адрес.

PM MAIL   Вверх
JackYF
Дата 16.11.2006, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



smilesmilesmile
Нафиг тебе адрес переменной??? )
Ну выдает она адрес первого элемента smile Потому что не выделяется в стеке. Что же ей еще выводить? Это все заморочки компилятора.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 16.11.2006, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Dov
Fazil6
JackYF,
Цитата(std-2003)
4.2 Array-to-pointer conversion
1 An lvalue or rvalue of type “array of N T” or “array of unknown bound of T” can be converted to an rvalue of type “pointer to T”. The result is a pointer to the first element of the array.



--------------------
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
PM Jabber   Вверх
JackYF
Дата 16.11.2006, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



archimed7592, гениально!
Но я в принципе это же и сказал.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Fazil6
Дата 16.11.2006, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



вы мне говорите, что имя массива интов это переменная указатель на инт. Я вам говорю, что массив - это массив, а указатель - это указатель, что это не одно и тоже, хотя и тесно связано.
подсунь компиллятору вот такой коди он тебе покажет какой тип у nn 
Код

int nn[] = {0,0,4,4,4};
int **cn   = &nn;


Добавлено @ 22:21 
Цитата

Но я в принципе это же и сказал

прочитай внимательно
Цитата

can be converted

т.е. он не является an rvalue of type “pointer to T” он может конвертироваться в него
PM MAIL   Вверх
archimed7592
Дата 16.11.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Fazil6, такой код не должен компилиться...&nn - это нечто непонятное...не все, что прогатывает компилятор есть правильно...хотя такое вообще не проглотит
зы. почитайте, ребят...смеху ради smile 



--------------------
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
PM Jabber   Вверх
Fazil6
Дата 16.11.2006, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



Цитата

Fazil6, такой код не должен компилиться...&nn - это нечто непонятное...не все, что прогатывает компилятор есть правильно...хотя такое вообще не проглотит
я и не говорил, что это будет компиллиться. я к тому, что почитайте сообщение об ошибке, которое выдаст компиллятор.
кстати ничего непонятного в &nn нет - это компиллятором должно интерпретироваться как указатель на массив.
PM MAIL   Вверх
archimed7592
Дата 16.11.2006, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Fazil6 @  17.11.2006,  00:14 Найти цитируемый пост)
должно интерпретироваться как указатель на массив
с каких пор должно? можно цитатку из стандарта?


--------------------
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
PM Jabber   Вверх
Fazil6
Дата 16.11.2006, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



стандарта у меня нет. Инфа из ссылки, которую я уже здесь давал пару страниц назад
http://faqs.org.ru/progr/c_cpp/cfaqrus.htm
п 2.13
PM MAIL   Вверх
JackYF
Дата 17.11.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Fazil6 @  16.11.2006,  22:13 Найти цитируемый пост)
т.е. он не является an rvalue of type “pointer to T” он может конвертироваться в него 


А я и сказал, что при использовании... - то есть конвертируется при надобности smile
А вообще уже вроде бы все более-менее ясно стало.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Metixa
Дата 18.11.2006, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Цитата(archimed7592 @ 16.11.2006,  23:03)
Fazil6, такой код не должен компилиться...&nn - это нечто непонятное...не все, что прогатывает компилятор есть правильно...хотя такое вообще не проглотит
зы. почитайте, ребят...смеху ради smile


все было прикрасно и полезно и .и.и но из за моей неопытности все еще не поиму:

int nameofmas[] = {1,2,3,4};
вот пока этот массив отправят в функцию как аргумент, г д е зафиксировался сама фраза nameofmas, он не записан на адрес первого элемента массива, потоиу что по тому адресу (4 баит) записан "1", он (nameofmas) пока не указатель что ему было выделено другои адрес, тогда обьясните мне где помнит комп. что после буквы "n" следует "a", потом "m", далше идет "e" и т.д. (nameofmas) smile 

PM MAIL   Вверх
archimed7592
Дата 18.11.2006, 03:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
Metixa
Дата 18.11.2006, 04:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет




 если я не ошибаюсь после компиляции  память которым ползовались лок. переменные освобождается, но перед освобождением они сушествуют не так?

Код

void main() {
int a[] = {1,2,3,4};
int b[] = {5,6,7,8};
cout<<a[2]<<" "<<b[3]<<endl;
}


где то, хоть "максимально временно" имена "a" и "b" же записывается, иначе как комп. выдаст 3 и 8????

Это сообщение отредактировал(а) Metixa - 18.11.2006, 04:13
PM MAIL   Вверх
archimed7592
  Дата 18.11.2006, 04:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



    значит так...твой исходник проходит следующие стадии:
  • препроцессинг
    работает препроцессор - заменяет все #include на содержимое соответствующих файлов, заменяет идентификаторы, определённые #define на соответствующее содержимое, убирает некоторые куски кода и т. д. результатом этого этапа есть "такой же" исходник на C++
  • компиляция
    происходит анализ текста твоей программы, все строки кода заменяются на соответствующие мнемоники инструкций процессора...в этот момент все имена (будь то переменные или ф-ции или что-либо ещё) стоновятся обыкновенными метками (label) исходника на языке ассемблера - результата.
  • ассемблирование или трансляция
    на этом этапе происходит прямая трансляция мнемоник инструкций процессора в их бинарное представление. т. е. из инструкции mov ax, bx мы получаем несколько байт непонятных нам, но понятных процессору. именно эти инструкции умеет выполнять процессор. результатом является объектный файл - код, понятный процессору + немного информации об именах и их адресах.
  • сборка или линковка
    происходит собирание нескольких объектных файлов (каждый cpp файл на выходе дает ровно один объектный файл). сборка происходит таким образом: берется и составляется общая для всех объектных файлов таблица соответствий имен и их адресов. потом проходятся по каждому объектному файлу и для всех имен (ф-ций, переменных и т. п.) производится подстановка конкретного адреса. на этом этапе все имена теряют свой смысл. результатом является исполняемый файл (.exe в windows), в котором никаких a, b, nameofmass и т. п. просто напросто нету.
таким образом, когда ты пишешь
Код
int arr [5] = {/* ... */};
int *parr = arr;
то на этапе компиляции получаешь что-то вроде mov [ebp-8], 0x400124 т. е. адрес arr - он нигде не хранится...он "прошит" в инструкции. т. е. сразу "взять и положить адрес", а не "взять адрес от туда и положить туда".

зы. вообще говоря в реальности такие массивы хранятся локально т. е. на стеке...т. о. получаешь что-то вроде 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
PM Jabber   Вверх
Mixeer
Дата 19.11.2006, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
JackYF
Дата 20.11.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Mixeer, твои дествия должны быть следующими...

1) Пойти в Центр Помощи!
2) Создать новую тему!


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
timurka
Дата 20.11.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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 *`".
Что нужно сделать чтоб запустить программу?
PM MAIL   Вверх
Dov
Дата 20.11.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



Код
kod=='b'
 в одиночных кавычках


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
timurka
Дата 20.11.2006, 15:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Огромное спасибо!!! smile  
PM MAIL   Вверх
timurka
Дата 20.11.2006, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Я сделал программу, которая кодирует символы в цыфры. Есть возможность одновременного перевода от 1 до 5 символов. При одновременном переводе от 1 до 4 символов все нормаль при переводе 5 символов программа вместо кода символа R выводит код символа E, я все проверил ошибки нет в программе не знаю в чем дело. Из-за чего может выводить неверное значение?
PM MAIL   Вверх
archimed7592
Дата 21.11.2006, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



timurka, если покажешь программу или уточнишь свой вопрос, то вероятность, что тебе помогут сильно возрастёт...здесь телепатов нет smile 


--------------------
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
PM Jabber   Вверх
timurka
Дата 21.11.2006, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Я решил проблему, спаибо за беспокойство. Теперь есть еще одна. Я хочу сделать программу, но она сильно большая и поместить в один файл не получаеться. Как то можно из нескольких файлов сделать один .exe ?
PM MAIL   Вверх
JackYF
Дата 21.11.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Уточни вопрос. Собрать проект, что ли, из нескольких .cpp - файлов?
Тогда все зависит от используемого компилятора.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
timurka
Дата 21.11.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Да проект. Boralnd C++ 3.1. Вот. Надеюсь я то написал)

Добавлено @ 16:15 
Borland C++ 3.1.
PM MAIL   Вверх
JackYF
Дата 21.11.2006, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



timurka, сложный случай... с данным компилятором.
Не так давно, кажется, поднимались темы про этот компилятор, попробуй поиск...

Если не найдешь, попробуй разобраться сам... Тебе должно помочь меню Project в редакторе...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Metixa
Дата 24.11.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



помогите:

после 
Код

char a[80] = "123,456,789";
char b[10]=",";
char* p;
p=strtok(a,b);


"p" понятно что =123
но и "a" станивится 123, почему?


PM MAIL   Вверх
JackYF
Дата 24.11.2006, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Это нормальные поведение strtok.
Для того, чтобы получать дальнейшие "токен"ы, вызывай:
Код

strtok(NULL,b);



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Metixa
Дата 24.11.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



благодарю, это знаю, но все так и удивляюсь, следующих слов "p" и так получает, а "a" зачем меняется, т.е. два переменных тратиться для одной цели...
PM MAIL   Вверх
JackYF
Дата 24.11.2006, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Ну дык так написали функцию... smile
Не нравится - можешь написать свою smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 24.11.2006, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Metixa, напиши свою ф-цию - тогда поймешь почему эта работает именно так  smile 

Это сообщение отредактировал(а) 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
PM Jabber   Вверх
Metixa
Дата 25.11.2006, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



да, может .. когда та напишу но сейчас  такая маленькая задача была:

Код

#include<fstream>  
#include<iostream>  
#include<stdlib.h>
#include<string.h>
using namespace std;
int main(){
char a[80] = "davit, max, maxim, max, sveta,  timur, gavriil";
char b[80];
strcpy(b,a);
cout<<b<<endl;
//cout<<"Input any sentence:  "<<endl;
//cin.getline(a,80);
char *ns = ",";
char * p,*f;
p = strtok(a,ns);
int count = 0, count1 = 0;
while(p){ 
    f = strstr(b,p); memset(f,'l', strlen(p)); if(strstr(b,p)) count++; count1++;
    p = strtok(NULL, ns);  }
cout<<count1-count<<endl;
}


он выдает количество разных слов.. в строку.. по проще можно было?

Это сообщение отредактировал(а) Metixa - 25.11.2006, 02:29
PM MAIL   Вверх
archimed7592
Дата 25.11.2006, 04:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Metixa @  25.11.2006,  03:27 Найти цитируемый пост)
по проще можно было?

слов разделенных только запятыми? конечно можно - посчитать кол-во запятых
Код
char *s = "a, bc, def";
int count = 0;
for (char *p = s; *p; ++p)
    if (*p == ',')
        ++count;

cout << count;



--------------------
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
PM Jabber   Вверх
sasa
Дата 25.11.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.11.2006

Репутация: нет
Всего: нет



Очень очень прошу киньте мне ссылку на Электронно-цифровую подпись RSA. Мне нужна прога на C++.ИМли выложьте правильную прогу на форуму!Пожалуйста! Просто у меня аттестация по С++, please.......Пасиб!smile
PM MAIL   Вверх
timurka
Дата 25.11.2006, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Кто-нибудь подскажет как заставить программу записывать результат своих вычислений в текстовый файл, вместо вывода на экран cout<<? И как сделать чтоб она могла считывать даные с файла вместо cin>>? И как указать директорию в которой находиться файл? 
PM MAIL   Вверх
timurka
Дата 25.11.2006, 19:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Плиззз, помогите! Сам пытался разобраться, но не получаеться. Помогите!
PM MAIL   Вверх
Dov
Дата 25.11.2006, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 15
Всего: 88



  • подключить заголовочный фаил: #include <fstream.h>
  • объявить файлы: ifstream inputFile, ofstream outputFile 
  • подготовить файлы к чтению или записи: inputFile.open("infile.dat"), outputFile.open("outfile.dat") 
  • ввод: inputFile >> ...
  • вывод: outputFile << ...



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
timurka
Дата 26.11.2006, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Пасибки!
PM MAIL   Вверх
timurka
Дата 26.11.2006, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



В чем тут ошибка? 
Код

#include<iostream.h>
#include<conio.h>
#include <fstream.h>
void main()
{
               clrscr();
                long one_line[100];
    ifstream inputfile;
    inputfile.open("SHIFROV.txt", ios::in);
    while(inputfile)
    inputfile.getline(one_line,sizeof(one_line),'*');
    cout<<one_line;
                inputfile.close();
                getch();
}

PM MAIL   Вверх
archimed7592
Дата 27.11.2006, 01:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
JackYF
Дата 27.11.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Здесь в цикл while нужно обернуть 2 строки, а не одну:

Код

#include<iostream.h>
#include<conio.h>
#include <fstream.h>
void main()
{
               clrscr();
                long one_line[100];
    ifstream inputfile;
    inputfile.open("SHIFROV.txt", ios::in);
    while( !inputfile.eof() )
    {
      inputfile.getline(one_line,sizeof(one_line),'*');
      cout<<one_line;
    }
                inputfile.close();
                getch();
}


Где-то так.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
timurka
Дата 2.12.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Подскажите, пожалуйста! Как можно считывать с файла линию цифр? Можно ли это делать при помощи getline()? 
Код
 
{    
ifstream inputfile;
inputfile.open("file.txt");
float zifr[46],zifr2[46];
inputfile.getline(zifr,sizeof(zifr));
inputfile.getline(zifr2,sizeof(zifr2));
{
if (zifr==1234) cout<<”Текст 1”;
else if (zifr==1245) cout<<”Текст 2”;
}
{
if (zifr2==1256) cout<<”Текст 3”;
else if (zifr2==1222) cout<<” Текст 4”;
}
}

С этим кодом не получается. 

PM MAIL   Вверх
Anikmar
Дата 2.12.2006, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Интересно, а что вы хотели проверить в данном условии:

... 
float zifr[46],zifr2[46];
...
if (zifr==1234) cout<<”Текст 1”;
else if (zifr==1245) cout<<”Текст 2”;
...

Согласно правилам языка Си zifr является указателем на массив (т.е. адрес). Вы проверяете соответствие значения указателя числу 1234?


PM MAIL ICQ   Вверх
timurka
Дата 2.12.2006, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 20.11.2006

Репутация: нет
Всего: нет



Если файл содержит, к примеру, 4 строки и в каждой строке записано по одному 
четырехзначному числу. Как можно считать все строки, чтоб потом можно было поставить условие по поводу содержания строк, тоесть чтоб потом можно было оперировать каждой строкой по отдельности, а не всеми вместе? Если в строке №1 записано число 1245, то вывести на экран одно сообщение...если в строке №3 число 1576, то вывести еще одно сообщение. 

PM MAIL   Вверх
Okonner
Дата 3.12.2006, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 25
Регистрация: 5.11.2006
Где: Питер

Репутация: нет
Всего: нет



Здравствуйте, господа! Как использовать буфер клавиатуры, для фиксирования последней нажатой
клавиши. Что такое буфер клавы?

PM MAIL   Вверх
Metixa
Дата 28.12.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 42
Регистрация: 29.10.2006

Репутация: нет
Всего: нет



Цитата(archimed7592 @ 18.11.2006,  04:30)
    значит так...твой исходник проходит следующие стадии:
  • препроцессинг
    работает препроцессор - заменяет все #include на содержимое соответствующих файлов, заменяет идентификаторы, определённые #define на соответствующее содержимое, убирает некоторые куски кода и т. д. результатом этого этапа есть "такой же" исходник на C++
  • компиляция
    происходит анализ текста твоей программы, все строки кода заменяются на соответствующие мнемоники инструкций процессора...в этот момент все имена (будь то переменные или ф-ции или что-либо ещё) стоновятся обыкновенными метками (label) исходника на языке ассемблера - результата.
  • ассемблирование или трансляция
    на этом этапе происходит прямая трансляция мнемоник инструкций процессора в их бинарное представление. т. е. из инструкции mov ax, bx мы получаем несколько байт непонятных нам, но понятных процессору. именно эти инструкции умеет выполнять процессор. результатом является объектный файл - код, понятный процессору + немного информации об именах и их адресах.
  • сборка или линковка
    происходит собирание нескольких объектных файлов (каждый cpp файл на выходе дает ровно один объектный файл). сборка происходит таким образом: берется и составляется общая для всех объектных файлов таблица соответствий имен и их адресов. потом проходятся по каждому объектному файлу и для всех имен (ф-ций, переменных и т. п.) производится подстановка конкретного адреса. на этом этапе все имена теряют свой смысл. результатом является исполняемый файл (.exe в windows), в котором никаких a, b, nameofmass и т. п. просто напросто нету.
таким образом, когда ты пишешь
Код
int arr [5] = {/* ... */};
int *parr = arr;
то на этапе компиляции получаешь что-то вроде mov [ebp-8], 0x400124 т. е. адрес arr - он нигде не хранится...он "прошит" в инструкции. т. е. сразу "взять и положить адрес", а не "взять адрес от туда и положить туда".

зы. вообще говоря в реальности такие массивы хранятся локально т. е. на стеке...т. о. получаешь что-то вроде mov [ebp-32], ebp-8, где ebp-8 - адрес массива, т. е. адрес относительно верхушки стека, а не какой-то четкий адрес.

Добрый вечер!!!
archimed.... Благодарью за помощи..  не поможеш разобратся еще лучше, не даш мне ссылку по поводу всего этого..? smile  smile 
PM MAIL   Вверх
archimed7592
Дата 29.12.2006, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



неа, не дам...у меня всё это с опытом пришло и единого источника как такого либо нету либо я про него не знаю smile
хотя нет...дам smile 


--------------------
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
PM Jabber   Вверх
hip
Дата 5.2.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.2.2007

Репутация: нет
Всего: нет



Здравствуйте! Мне нужно сделать программу, которая будет проверять верность цыфр в файле. Я Сделал, но проблема в том, что программа вместо четырех символов до пробела считует по одному символу. 
Код

include<iostream.h>
 #include<conio.h>
 #include<fstream.h>
 #include<stdio.h>
 void main()
 {
    clrscr();
    char kod;
    cout<<"Program check file. Please, wait."<<endl;
    ifstream op;
    op.open("SH.dat");
    while (! op.eof())
    {
    ofstream of;
    of.open("SHI.sol",ios::app);
    switch(kod)
    {
    case 1260: of<<"1260 "; break;
    case 1261: of<<"1261 "; break;
    case 2260: of<<"2260 "; break;
    case 2261: of<<"2261 "; break;
    case 3260: of<<"3260 "; break;
    case 3261: of<<"3261 "; break;
    case 4260: of<<"4260 "; break;
    case 4261: of<<"4261 "; break;
    case 5260: of<<"5260 "; break;
    case 5261: of<<"5261 "; break;
    case 6260: of<<"6260 "; break;
    case 6261: of<<"6261 "; break;
    case 7260: of<<"7260 "; break;
    case 7261: of<<"7261 "; break;
    case 8260: of<<"8260 "; break;
    case 8261: of<<"8261 "; break;
    case 9260: of<<"9260 "; break;
    case 9261: of<<"9261 "; break;
    case 1270: of<<"1270 "; break;
    case 1271: of<<"1271 "; break;
    case 2270: of<<"2270 "; break;
    case 2271: of<<"2271 "; break;
    case 3270: of<<"3270 "; break;
    case 3271: of<<"3271 "; break;
    case 4270: of<<"4270 "; break;
    case 4271: of<<"4271 "; break;
    case 5270: of<<"5270 "; break;
    case 5271: of<<"5271 "; break;
    case 6270: of<<"6270 "; break;
    case 6271: of<<"6271 "; break;
    case 7270: of<<"7270 "; break;
    case 7271: of<<"7271 "; break;
    case 8270: of<<"8270 "; break;
    case 8271: of<<"8271 "; break;
    case 9270: of<<"9270 "; break;
    case 9271: of<<"9271 "; break;
    case 1280: of<<"1280 "; break;
    case 1281: of<<"1281 "; break;
    case 2280: of<<"2280 "; break;
    case 2281: of<<"2281 "; break;
    case 3280: of<<"3280 "; break;
    case 3281: of<<"3281 "; break;
    case 4280: of<<"4280 "; break;
    case 4281: of<<"4281 "; break;
    case 5280: of<<"5280 "; break;
    case 5281: of<<"5281 "; break;
    case 6280: of<<"6280 "; break;
    case 6281: of<<"6281 "; break;
    case 7280: of<<"7280 "; break;
    case 7281: of<<"7281 "; break;
    case 8280: of<<"8280 "; break;
    case 8281: of<<"8281 "; break;
    case 9280: of<<"9280 "; break;
    case 9281: of<<"9281 "; break;
    case 1290: of<<"1290 "; break;
    case 1291: of<<"1291 "; break;
    case 2290: of<<"2290 "; break;
    case 2291: of<<"2291 "; break;
    case 3290: of<<"3290 "; break;
    case 3291: of<<"3291 "; break;
    case 4290: of<<"4290 "; break;
    case 4291: of<<"4291 "; break;
    case 5290: of<<"5290 "; break;
    case 5291: of<<"5291 "; break;
    case 6290: of<<"6290 "; break;
    case 6291: of<<"6291 "; break;
    case 7290: of<<"7290 "; break;
    case 7291: of<<"7291 "; break;
    case 8290: of<<"8290 "; break;
    case 8291: of<<"8291 "; break;
    case 9290: of<<"9290 "; break;
    case 9291: of<<"9291 "; break;
    case 1300: of<<"1300 "; break;
    case 1301: of<<"1301 "; break;
    case 2300: of<<"2300 "; break;
    case 2301: of<<"2301 "; break;
    case 3300: of<<"3300 "; break;
    case 3301: of<<"3301 "; break;
    case 4300: of<<"4300 "; break;
    case 4301: of<<"4301 "; break;
    case 5300: of<<"5300 "; break;
    case 5301: of<<"5301 "; break;
    case 6300: of<<"6300 "; break;
    case 6301: of<<"6301 "; break;
    case 7300: of<<"7300 "; break;
    case 7301: of<<"7301 "; break;
    case 8300: of<<"8300 "; break;
    case 8301: of<<"8301 "; break;
    case 9300: of<<"9300 "; break;
    case 9301: of<<"9301 "; break;
    case 1310: of<<"1310 "; break;
    case 1311: of<<"1311 "; break;
    case 2310: of<<"2310 "; break;
    default: cout<<"\a Program find error code. This code will be deleted."<<endl;
    }}
    {
    char kod5[3500];
    ifstream inputfile;
    inputfile.open("Data/Delfile.del");
    inputfile>>kod5;
    if (remove(kod5) == 0);
    }
    cout<<"\a Chek file is over. Please click any key to quit.";
    getch();
 }

Пробовал через getline(), но так выбивает непонятную ошибку. 
Код

 #include<iostream.h>
 #include<conio.h>
 #include<fstream.h>
 #include<stdio.h>
 void main()
 {
    clrscr();
    cout<<"Program check file. Please, wait."<<endl;
    ifstream op;
    op.open("SH.вфе");
    while (! op.eof())
    {
    char us[5];
    op.getline(us,sizeof(us),'*');
    ofstream of;
    of.open("SHI.ыщд",ios::app);
    switch(us)
    {
    case 1260: of<<"1260 "; break;
    case 1261: of<<"1261 "; break;
    case 2260: of<<"2260 "; break;
    case 2261: of<<"2261 "; break;
    case 3260: of<<"3260 "; break;
    case 3261: of<<"3261 "; break;
    case 4260: of<<"4260 "; break;
    case 4261: of<<"4261 "; break;
    case 5260: of<<"5260 "; break;
    case 5261: of<<"5261 "; break;
    case 6260: of<<"6260 "; break;
    case 6261: of<<"6261 "; break;
    case 7260: of<<"7260 "; break;
    case 7261: of<<"7261 "; break;
    case 8260: of<<"8260 "; break;
    case 8261: of<<"8261 "; break;
    case 9260: of<<"9260 "; break;
    case 9261: of<<"9261 "; break;
    case 1270: of<<"1270 "; break;
    case 1271: of<<"1271 "; break;
    case 2270: of<<"2270 "; break;
    case 2271: of<<"2271 "; break;
    case 3270: of<<"3270 "; break;
    case 3271: of<<"3271 "; break;
    case 4270: of<<"4270 "; break;
    case 4271: of<<"4271 "; break;
    case 5270: of<<"5270 "; break;
    case 5271: of<<"5271 "; break;
    case 6270: of<<"6270 "; break;
    case 6271: of<<"6271 "; break;
    case 7270: of<<"7270 "; break;
    case 7271: of<<"7271 "; break;
    case 8270: of<<"8270 "; break;
    case 8271: of<<"8271 "; break;
    case 9270: of<<"9270 "; break;
    case 9271: of<<"9271 "; break;
    case 1280: of<<"1280 "; break;
    case 1281: of<<"1281 "; break;
    case 2280: of<<"2280 "; break;
    case 2281: of<<"2281 "; break;
    case 3280: of<<"3280 "; break;
    case 3281: of<<"3281 "; break;
    case 4280: of<<"4280 "; break;
    case 4281: of<<"4281 "; break;
    case 5280: of<<"5280 "; break;
    case 5281: of<<"5281 "; break;
    case 6280: of<<"6280 "; break;
    case 6281: of<<"6281 "; break;
    case 7280: of<<"7280 "; break;
    case 7281: of<<"7281 "; break;
    case 8280: of<<"8280 "; break;
    case 8281: of<<"8281 "; break;
    case 9280: of<<"9280 "; break;
    case 9281: of<<"9281 "; break;
    case 1290: of<<"1290 "; break;
    case 1291: of<<"1291 "; break;
    case 2290: of<<"2290 "; break;
    case 2291: of<<"2291 "; break;
    case 3290: of<<"3290 "; break;
    case 3291: of<<"3291 "; break;
    case 4290: of<<"4290 "; break;
    case 4291: of<<"4291 "; break;
    case 5290: of<<"5290 "; break;
    case 5291: of<<"5291 "; break;
    case 6290: of<<"6290 "; break;
    case 6291: of<<"6291 "; break;
    case 7290: of<<"7290 "; break;
    case 7291: of<<"7291 "; break;
    case 8290: of<<"8290 "; break;
    case 8291: of<<"8291 "; break;
    case 9290: of<<"9290 "; break;
    case 9291: of<<"9291 "; break;
    case 1300: of<<"1300 "; break;
    case 1301: of<<"1301 "; break;
    case 2300: of<<"2300 "; break;
    case 2301: of<<"2301 "; break;
    case 3300: of<<"3300 "; break;
    case 3301: of<<"3301 "; break;
    case 4300: of<<"4300 "; break;
    case 4301: of<<"4301 "; break;
    case 5300: of<<"5300 "; break;
    case 5301: of<<"5301 "; break;
    case 6300: of<<"6300 "; break;
    case 6301: of<<"6301 "; break;
    case 7300: of<<"7300 "; break;
    case 7301: of<<"7301 "; break;
    case 8300: of<<"8300 "; break;
    case 8301: of<<"8301 "; break;
    case 9300: of<<"9300 "; break;
    case 9301: of<<"9301 "; break;
    case 1310: of<<"1310 "; break;
    case 1311: of<<"1311 "; break;
    case 2310: of<<"2310 "; break;
    default: cout<<"\a Program find error code. This code will be deleted."<<endl;
    }}
    {
    char kod5[3500];
    ifstream inputfile;
    inputfile.open("Data/Delfile.del");
    inputfile>>kod5;
    if (remove(kod5) == 0);
    }
    cout<<"\a Chek file is over. Please click any key to quit.";
    getch();
 }

Не знаю что делать, помогите пожалуйста.

Добавлено @ 17:52 
Русские символы вместо расширения это ошибка шрифта, тоесть в программе там вместо "вфе" dat, а "ышд" sol, это я ошибся когда вводил на форуме, в проге все нормально
PM MAIL   Вверх
ip127001
Дата 8.2.2007, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 164
Регистрация: 24.11.2006
Где: Omsk

Репутация: -2
Всего: -1



smile  есть однин пункт в правилах форума, который мне особо люб....приводите сразу 1000-2000
сторок что бы всем становилось понятно, что вы не шутите smile

Добавлено @ 09:36 
конкретней сформулиру задачу...
что в начале, что в конце

а то бошка болит, мочи нет в твоей кулебяке разбираться..проще самому написать
--------------------
aqua currit et debere currere ut currere solebat
PM MAIL   Вверх
hip
Дата 10.2.2007, 19:31 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 5.2.2007

Репутация: нет
Всего: нет



В общем есть файл в котором записано по 4 цыфры через пробел, например: 5673 3452 2673 1561 и т.д. Нужно чтоб программа находила в файле только определенные комбинации из 4 цыфр и помещала их в другой файл. Если использовать для условия if(), то не возможно компилировать так как не хватает памяти. Через switch() все получается, но программа вместо сразу четырех символов считывает по одному и сверяет с условием только одну цыфру, а в условии 4-ех значные цыфры и ничего не выходит. Что можно сделать? Через getline() тоже пробовал, но выбивает непонятную ошибку и компилировать не получается.
Код

 #include<iostream.h>
 #include<conio.h>
 #include<fstream.h>
 #include<stdio.h>
 void main()
 {
    clrscr();
    char kod;
    cout<<"Program check file. Please, wait."<<endl;
    ifstream file;
    file.open("SH.dat");
    while (! file.eof())
    {
    ofstream of;
    of.open("SHI.sol",ios::app);
    switch(kod)
    {
    case 1260: of<<"1260 "; break;
    case 1261: of<<"1261 "; break;
    default: cout<<"\a Program find error code."<<endl;
    }
    cout<<"\a Chek file is over. Please click any key to quit.";
    getch();
 }

PM MAIL   Вверх
nickless
Дата 10.2.2007, 19:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 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 на несколько сотен цифр это изврат, если нельзя как-то вычислить эти числа, то хотя бы  запиши их в массив и ищи в нём (лучше бинарно, быстрее будет)


--------------------
user posted image

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
PM MAIL   Вверх
Xenon
Дата 10.2.2007, 22:43 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



nickless, ну это здесь не так уж и важно, так как при выходе из функции он закрывается. Это не так важно тут. Важно, если в пределах одной функции файл используется для ввода, потом для вывода. ИМХО  smile 


--------------------
user posted image  
PM MAIL   Вверх
Anikmar
Дата 10.2.2007, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(Xenon @  10.2.2007,  22:43 Найти цитируемый пост)
Важно, если в пределах одной функции файл используется для ввода, потом для вывода. ИМХО    

Я чего-то этого не узрел
    file.open("SH.dat");
    while (! file.eof())
    {
    ofstream of;
    of.open("SHI.sol",ios::app);

Вроде разные...

nickless прав. Весь код выглядит несколько неправильным...
PM MAIL ICQ   Вверх
Xenon
Дата 10.2.2007, 23:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Anikmar, что? Я теоретически говорил. Ну по-любому смысла закрывать особого тут нет (хотя бы потому что код бредовый какой-то) Хотя, если код длинный, мы читателю кода можем таким образом показать, что дальше файл не используется, или что-нибудь еще smile

Это сообщение отредактировал(а) Xenon - 10.2.2007, 23:12


--------------------
user posted image  
PM MAIL   Вверх
nickless
Дата 10.2.2007, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 19
Всего: 181



Xenon, да, в принципе файлы закроются при вызове деструктора, но всё равно нехорошо smile 
Да и нечего привыкать к плохому стилю, потом многих ошибок можно будет избежать, если всегда и везде (за исключением особых случаев) всё инициализировать, проверять, закрывать, освобождать...


--------------------
user posted image

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
PM MAIL   Вверх
Xenon
Дата 11.2.2007, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



nickless, Ну, в принципе, согласен с тобой (особенно после прочтения Саттера о 101 правиле). Но если проводить аналогию с объвлению всех переменных неизменяемых как const(15 совет у Саттера) , то закрытие файла после того, как он больше не понадобится необходимо для того, чтобы показать, что дальше файл не будет использоваться. 
PS. Хотя аналогия такая ... шаткая smile


--------------------
user posted image  
PM MAIL   Вверх
БайкодромКосмодур
Дата 14.3.2007, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 14.3.2007

Репутация: нет
Всего: нет



Я в программировании полный Лох. Приобрёл книжки, сижу изучаю и в принципе вопросов не возникает, но проблема в том, что необходима практика. Самому придумывать задачи не получается. Может, кто посоветует как быть, может, есть смысл пойти на курсы или на второе высшее.
PM MAIL   Вверх
Dimanc
Дата 18.4.2007, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 18.4.2007

Репутация: нет
Всего: нет



Решил изучить с++(изучал раньше паскаль). раздобыл книгу дейтела. а первая прога не компилируеться.
У меня bcb 6. расскажите, пожалуйста, подробно, как надо компилировать.(как я понял ошибка то ли в obj- файле, толи даже он не получаеться)
Вот код программы хеллоу ворлд) 
Код
#include<iostream.h>

main()
{
    cout << "добро пожаловать в с++!\n";
    return 0;
}


ps извините, если такой вопрос уже поднимали
PM MAIL   Вверх
mr.Anderson
Дата 18.4.2007, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



Код

int main( void )

А потом, говори, что за ошибка. Потому как вряд ли из-за этого небольшого недочета вылезет ошибка obj. Это, скорее, что-то с IDE. Давай ошибку.

Это сообщение отредактировал(а) mr.Anderson - 18.4.2007, 20:22


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Dimanc
Дата 18.4.2007, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 18.4.2007

Репутация: нет
Всего: нет



Цитата

Build
  [Linker Error] Unresolved external '_Form1' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ
  [Linker Error] Unresolved external 'TForm1::' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PROJECT1.OBJ

то же самое, если просто main()
PM MAIL   Вверх
Fazil6
Дата 18.4.2007, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 35
Всего: 60



тебе нужно выбрать создание нового проекта и в нем выбрать тип "консольное приложение", а вообще советую взять поновее книгу. Судя по примеру у тебя что-то древнее
Сейчас модно писать такое так
Код

#include<iostream>

int main()
{
    std::cout << "добро пожаловать в с++!\n";
    return 0;
}


Это сообщение отредактировал(а) Fazil6 - 18.4.2007, 23:04
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3638 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.