Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1] 2  Все   Вниз
  Печать  
Автор Тема: Программирование в С++ что лучше  (Прочитано 40624 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« : 12-03-2011 08:04 » 

Добрый день или вечер) у кого сколько времени)
Я тут по такому вопросу в чем лучше начать (обучаться) программирование, я слышал про Borland Developer и к примеру Builder, но не знаю что лучше и надеюсь на ваши подсказки) если не так написал программы не судите строго тоже)))  Краснею
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 12-03-2011 08:35 » new

golian, не вижу большой разници между компиляторами для начала изучения языка С++.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #2 : 12-03-2011 08:41 » 

Хм... Если программы уже по себе разные, даже названиями, значит где то лучше сделана обработка где то хуже и т.д. перечислять можно много) Но я по крайней мере выбрал Borland Developer и сейчас читаю литературу посвященную С++  (http://lib.ru/CPPHB/cpptut.txt) и сразу можно попросить уроки задания чтобы не тупо читать, а сразу пытаться что то "творить" и учиться на ошибках))) Заранее спасибо))
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 12-03-2011 08:45 » 

та не вопрос....

Посчитай количество слов в этом предложении.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #4 : 12-03-2011 08:48 » 

Различия для начинаюшего нету. Есть различия и довольно большие в нестандартных библиотеках. Но для начинаюшего это никоим образом не должно отражаться. Hello World должен в принципе на любом компиляторе отработать.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #5 : 12-03-2011 08:51 » 

® Sla
Посчитать кол-во слов при вводе предложений (текста), я правильно понял?

® Finch
Hello World - да он обрабатывается везде... Ну да до Библиотек мне еще далеко((( Я пока тока азы пытаюсь освоить )))
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 12-03-2011 09:02 » 

golian, Улыбаюсь

Научись читать ТЗ (в будущем пригодится)

Посчитай количество слов в этом предложении.


Но то что сам расширил задание - уже хорошо.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #7 : 12-03-2011 09:04 » 

golian, Для Sla задачи заготовка
Код: (C++)
#include <stdio.h>

int main() {
        char *str = "Посчитай количество слов в этом предложении.";
        int count = 0;
        // Тут твой код :)
        printf("Количество слов %d\r\n", count);
        return 0;
}
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #8 : 13-03-2011 00:53 » 

Код:
#include <iostream>

int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}

P.S. Код отформатирован)

Цитата
1>------ Построение начато: проект: helloworld, Конфигурация: Debug Win32 ------
1>Построение начато 13.03.2011 10:50:27.
1>InitializeBuildStatus:
1>  Обращение к "Debug\helloworld.unsuccessfulbuild".
1>ClCompile:
1>  main.cpp
1>LinkEmbedManifest:
1>  helloworld.vcxproj -> c:\users\cookies\documents\visual studio 2010\Projects\helloworld\Debug\helloworld.exe
1>FinalizeBuildStatus:
1>  Файл "Debug\helloworld.unsuccessfulbuild" удаляется.
1>  Обращение к "Debug\helloworld.lastbuildstate".
1>
1>Построение успешно завершено.
1>
1>Затраченное время: 00:00:06.47
========== Построение: успешно: 1, с ошибками: 0, без изменений: 0, пропущено: 0 ==========

Ну хоть что то начало получаться)))

Добавлено через 12 минут и 3 секунды:
Кстати я остановился на Microsoft Visual Studio 2010 Ultimate
« Последнее редактирование: 13-03-2011 01:05 от golian » Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 13-03-2011 01:10 » 

Ну хоть что то начало получаться)))

Не боги горшки обжигают
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #10 : 13-03-2011 02:44 » 

Код:
// Подключение заголовочных файлов
#include <iostream>
// Объявление глобальных переменных
int x = 21;
int y = 85;
// Объявление функций и классов
int summa (int x, int y);
void print (int x);
// Главная функция
int main () {
int z;
z = summa (x,y);
print(z);
return 0;
}
// Определение функции и классов
int summa(int x, int y) {
return x + y;
}
void print(int x) {
std::cout << x << std::endl;
}


Цитата
// Объявление функций и классов
int summa (int x, int y);

Тут просто указываеться какие числа были введены то есть объявление?

Цитата
// Определение функции и классов
int summa(int x, int y) {
   return x + y;
}

Как я понял идет счет суммы чисел "int x" и "int y" которым я присвоил значение еще в начале. И возвращяеться значение x + y, так как мы присвоили значение return.

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

К примеру вот так
Цитата
void print(int x)


Если я в чем то не прав прошу поправить меня  А черт его знает...
« Последнее редактирование: 13-03-2011 03:00 от golian » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 13-03-2011 05:24 » 

Объявление функции не указывает введённые числа. Объявление функции объявляет, что есть такая функция. Компилятор обрабатывает текст программы последовательно сверху вниз, поэтому при вызове функций важен порядок их размещения по тексту. Те функции, которые вызывает программист в данном месте текста программы, уже должны быть известны компилятору. Это значит, что либо эти функции должны быть определены выше по тексту (т.е. записаны целиком), либо хотя бы объявлены выше (т.е. одни заголовки функций). Если в начале программы объявить все функции (записать все заголовки), то затем определения функций (т.е. сами функции) можно распологать в произвольном порядке.

return - это оператор, ему ничего не присваивается. return принудительно завершает работу функции, возвращая в качестве результата функции значение выражения, написанного следом за return. return x + y означает, что функция завершает работу и возвращает сумму x и y в качестве своего результата.

void нужно для порядка. В языке есть только функции, всякая функция должна возвращать какое-то значение, тип которого записывается в заголовке функции; если функция не возвращает значение, то пишется void - означает отсутствие значения, т.е. функция работает как процедура (такая функция не обязана использовать return, а если использует, то следом за return не стоит никакого выражения - сразу точка с запятой).
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #12 : 13-03-2011 06:59 » 

Код:
// Подключение заголовочных файлов
#include <iostream>

int main() {
int x = 0, int y = 0;
bool flag = false;
do {
std::cout << "x = ";
std::cin.clear ();  //Сбрасываем флаг ошибки
std::cin.ignore(255, '\n'); // Чистка буфера
}
else flag = true;
} while (!flag);
flag = false;
do {
std::cout << "y = ";
std::cin >> y;
if (!std::cin.good()) {
std::cout << std::endl <<"Error" << srd::endl;
std::cin.clear();    //Сбрасываем флаг ошибки
std::cin.ignore(255, '\n');   // Чистка буфера
}
else flag = true;
} while (!flag);
std::cout <<"Summa = " << x + y << std::endl;
return 0;
}

Сделал код по учебнику сравнил все нормально но выходит такой ответ
(click to show)
Цитата
1>------ Построение начато: проект: ghj,f, Конфигурация: Debug Win32 ------
1>Построение начато 13.03.2011 16:53:56.
1>InitializeBuildStatus:
1>  Обращение к "Debug\ghj,f.unsuccessfulbuild".
1>ClCompile:
1>  rr.cpp
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(5): error C2062: тип "int" не требуется
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(12): error C2059: синтаксическая ошибка: else
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(13): error C2059: синтаксическая ошибка: while
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(14): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(15): error C2059: синтаксическая ошибка: do
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(15): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(15): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(24): error C2059: синтаксическая ошибка: while
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(25): error C2143: синтаксическая ошибка: отсутствие ";" перед "<<"
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(25): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(25): error C2371: std::cout: переопределение; различные базовые типы
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\iostream(26): см. объявление "std::cout"
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(26): error C2059: синтаксическая ошибка: return
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(27): error C2059: синтаксическая ошибка: }
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(27): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\users\cookies\documents\visual studio 2010\projects\ghj,f\ghj,f\rr.cpp(27): error C2059: синтаксическая ошибка: }
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:02.38
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
« Последнее редактирование: 13-03-2011 10:05 от golian » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 13-03-2011 07:29 » 

golian, плохо сравнивал. И вообще нужно не списывать код, а разбираться с синтаксисом - т.е. правилами записи выражений. И что это за учебник, где есть выражения "чиста буфер"?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #14 : 13-03-2011 07:47 » 

Программирование на C++ в Visual Studio 2010 Express    скачать можно тут http://depositfiles.com/files/z9m9pd493   Автор: Прохоренок Н.А.
26 страница первый том)))  P.S. "чиста буфер" - Это я уже для себя писал)) Ошибки мои)))
« Последнее редактирование: 13-03-2011 08:35 от golian » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #15 : 13-03-2011 09:43 » 

golian, я уже в 5 строчке вижу отличия между твоим кодом и кодом в учебнике - те самые отличия, про которые говорит компилятор. Как я и предполагал, плохо сравнивал.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #16 : 13-03-2011 09:47 » 

golian, я уже в 5 строчке вижу отличия между твоим кодом и кодом в учебнике - те самые отличия, про которые говорит компилятор. Как я и предполагал, плохо сравнивал.
Там вроде такие скобки были {   хм..  а по настоящему (   Но все равно спасибо за подсказку, а как этот учебник на ваше усмотрение нормАЛЬНЫЙ?



Sla: Мы учимся не только программированию, но и еще правильному общению.
« Последнее редактирование: 13-03-2011 10:02 от Sla » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 13-03-2011 11:09 » 

golian, не знаю, я его впервые вижу. Ещё раз повторяю: совершенно бесполезное занятие сравнивать скобки в плохо отсканированном учебнике и в своём коде - нужно разбираться с синтаксическими конструкциями, чтобы самому точно знать, в каких случаях какие скобки писать.

Добавлено через 3 часа, 28 минут и 12 секунд:
Цитата: golian
Ну тогда посоветуй как лучше начать изучение С++, вроде уже могу сам написать Hello World, могу сделать ввод с клавиатуры так же складывание чисел и т.д.
Язык программирования - это средство программирования. Судя по твоим вопросам и демонстрируемым проблемам, ты ни на каком языке не программировал, т.е. не умеешь программировать.

Совет тут один - изучать надо не C++, а программирование с помощью C++.

Разбираться с понятием алгоритма как целенаправленной конечной последовательности действий - и смотреть, какими средствами в C++ обеспечивается последовательность действий.

Разбираться с ветвлениями алгоритма, условиями - и смотреть, какими синтаксическими конструкциями в C++ обеспечивается выбор альтернативных последовательностей действий.

Разбираться с повторяющимися действиями - и смотреть, какими синтаксическими конструкциями в C++ реализуются циклы.

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

Разбираться со структурами данных: гомогенными и гетерогенными массивами - и смотреть, какими синтаксическими средствами в C++ это можно записать в программном коде, какие приёмы работы с ними существуют.

И на всё это нужны задачи.

Учебник по программированию и самоучитель по языку программирования - это совершенно разные книжки, предназначенные для разных целевых аудиторий. Учебники учат программированию, используя язык как инструмент, и предназначены для совсем новичков. Самоучители предназначены для умеющих программировать на других языках, и описывают особенности нового языка, но не учат программированию.
« Последнее редактирование: 13-03-2011 14:37 от dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #18 : 13-03-2011 21:33 » 

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

Добавлено через 17 минут и 39 секунд:
Ну я покрасней мере знаю CSS и HTML ))))
« Последнее редактирование: 13-03-2011 21:51 от golian » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #19 : 14-03-2011 07:29 » 

golian, да ничем не отличается это от Pascal, кроме синтаксиса. Тогда пиши программу на известном тебе Pascal и смотри, как её же переписать на C++.

Sla предлагал задачу - реши её на Pascal, потом мы тебе поможем перевести её на C++.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #20 : 14-03-2011 08:17 » 

Код:
program kolvoslov;
const Alpha : set of char=['А'..'Я', 'а'..'я'];
var s:string; i:integer; x:integer;
begin
    writeln('Vvedite predlozhenie s tochkoy'); readln(s);
    i:=1; x:=0;
    Repeat
        while (s[i] in Alpha) and (i<=length(s)) do inc(i);
        if (i<=length(s)) then inc(x);
        while NOT(s[i] in Alpha) and (i<=length(s)) do inc(i);
    Until (i>length(s));
    writeln('kol-vo slov = ',x);
end.

Может что то в этом вроде. Я проверил все работает Улыбаюсь Ну сразу понятно что там можно найти косяки  А черт его знает...
« Последнее редактирование: 14-03-2011 12:45 от golian » Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 14-03-2011 08:27 » 

Хорошо бы еще бы код научиться оформлять... Ага
И буквы в диапазоне подозрительные. Копипаст не сработал?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #22 : 14-03-2011 08:40 » 

Тут еще такое задание http://paste.org.ru/?uuy872

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

Код:
// Подключение заголовочных файлов
#include <iostream>
using namespace std;

// Объявление глобальных переменных
int a = 0, b = 0, c = 0, d = 0, e = 0, f = 0;
// Главная функция
int main () {
cout << "Введите число a";
cin >> x;
cout << "Введите число b";
cin >> b;
cout << "Введите число c";
cin >> c;
cout << "Введите число d";
cin >> d;
cout << "Введите число e";
cin >> e;
cout << "Введите число f";
cin >> f;

Идея есть с присвоением значений например если "а<d" то к переменной x отнимаем 1, если же "a>d" то к переменной x прибавляем 1, если "a=d" то x без изменений следовательно 0

Ну так с "b>e"  и с "c>f"
И сложив переменные x мы придем к выводу если x=3 то коробка №2 войдет в первую, если X=0 то коробки одинаковые по размеру, если x=-3 то №1 войдет во вторую, а если будут числа (-2; -1; 1; 2) то не получиться размера))) Ну я думаю так можно все предположить))

Добавлено через 10 минут и 7 секунд:
Хорошо бы еще бы код научиться оформлять... Ага
И буквы в диапазоне подозрительные. Копипаст не сработал?

Там стоял диапазон букв ['А'..'Я', 'а'..'я']; просто скопировал с самого паскаля, даже сразу не заметил)))
« Последнее редактирование: 14-03-2011 08:50 от golian » Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #23 : 14-03-2011 09:25 » 

Код:
program kolvoslov;
const Alpha : set of char=['À'..'ß', 'à'..'ÿ'];
var s:string; i:integer; x:integer;
begin
    writeln('Vvedite predlozhenie s tochkoy'); readln(s);
    i:=1; x:=0;
    Repeat
        while (s[i] in Alpha) and (i<=length(s)) do inc(i);
        if (i<=length(s)) then inc(x);
        while NOT(s[i] in Alpha) and (i<=length(s)) do inc(i);
    Until (i>length(s));
    writeln('kol-vo slov = ',x);
end.

Может что то в этом вроде. Я проверил все работает Улыбаюсь Ну сразу понятно что там можно найти косяки  А черт его знает...

Пока не поздно....
Давай рассмотрим твое решение...
Что ты делаешь?
(ввод/вывод опускаем)

Добавлено через 2 минуты и 2 секунды:
Сразу хочу оговорить условия...
Что является стоп знаками (символы определяющие разрыв между словами)?
« Последнее редактирование: 14-03-2011 09:27 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #24 : 14-03-2011 10:58 » 

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

Добавлено через 2 минуты и 58 секунд:
Разрывом являеться пустое место то есть коды он доходит до пробела у него счетчик срабатывает и получаеться +1 слово
« Последнее редактирование: 14-03-2011 11:00 от golian » Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #25 : 14-03-2011 11:46 » 

golian, пока ты со Sla доводишь до кондиции алгоритм, я буду проводить параллели между Pascal и C++.

Pascal - язык, где регистр букв не имеет значения, в C++ регистр букв имеет значение.

Каркас программы, место, откуда начинается выполнение:
Код: (Pascal)
program X;
begin
  { Тут полезные действия }
end.
Код: (C++)
int main()
{
  /* Тут полезные действия */
  return 0;
}

Любая последовательность действий, рассматриваемая как единое целое, называется исполняемым блоком, который заключается в соответствующие скобки. В Pascal это
Код: (Pascal)
begin { Тут последовательность действий. } end
Код: (C++)
{ /* тут последовательность действий. */ }
В C++ фигурные скобки используются ещё в некоторых случаях, но начинающему это не важно.

Определение переменных должно быть до места их использования. Но в Pascal они всегда объявляются вне блока, который их использует, в отдельной секции, а в C++ как вне, так и внутри блока. Если есть много переменных одного типа, они перечисляются через запятую.
Код: (Pascal)
var x: Integer; y, z: Real;
Код: (C++)
int x; float y, z;
Поскольку в C++ определение переменной также является частью исполняемого кода, её можно сразу инициализировать. В Pascal такое разрешено только для констант. Константы есть и в C++.
Код: (Pascal)
const x: Integer = 1;
var y, z: Real;
begin
  y := 2.0;
  z := 3.0;
  { Тут какой-то код. }
end;
Код: (C++)
{
  const int x = 1;
  float y = 2.0, z = 3.0;
  /* Тут какой-то код. */
}

В Pascal есть встроенный тип "множество" (set), в C++ нет никаких близких аналогов. Поэтому советую переписать Pascal-программу без использования этого типа. В Pascal есть встроенный тип "строка" (string), в C++ такой тип не является встроенным, поэтому правила работы с ним несколько отличаются от правил работы в Pascal - особенно в части использования функций работы со строками. Традиционно в C++ пользуются строками, как это делалось в языке C. Строка - это массив символов (типа Char). Советую переписать Pascal-программу таким образом, чтобы вместо string она использовала бы array of Char.

В Pascal операция присваивания всегда рассматривается, как отдельное действие. В C++ присваивание является операцией, могущей использоваться где угодно.
Код: (Pascal)
x := 1; y := 1;
Код: (C++)
x = y = 1;
Тем не менее, начинающим рекомендуется придерживаться Pascal-образного использования этой операции
Код: (C++)
x = 1; y = 1;

Ветвления в Pascal и С++ одинаковые, ветви else в обоих языках необязательны:
Код: (Pascal)
if { условие } then { блок кода } else { блок кода };
Код: (C++)
if(/* условие */) /* блок кода */ else /* блок кода */
В качестве условий в Pascal принимаются только выражения, вычисление которых даёт результат типа Boolean. В C++ в качестве условий принимаются выражения, вычисление которых даёт результат типа bool или число. Если результат является числом, то запись вида
Код: (C++)
int x; / * какой-то код */; if(x) / * блок кода */
эквивалентна
Код: (C++)
int x; /* какой-то код */; if(x != 0) /* блок кода */
При написании условий в C++ нужно внимательно относиться к операторам присваивания и сравнения.
Код: (Pascal)
if x = 1 then { блок кода };
Код: (C++)
if(x == 1) / * блок кода */
Неправильно будет:
Код: (C++)
if(x = 1) /* блок кода */
хотя это будет будет компилироваться, и программа будет запускаться. Поскольку оператор присваивания можно использовать в любом месте, в данном случае переменной x будет присвоено значение 1, а результатом всего выражения будет число 1, что в качестве условия эквивалентно 1 != 0, т.е. логическому true. Поскольку такие опечатки встречаются часто, рекомендуется записывать условия задом наперёд:
Код: (C++)
if(1 == x) /* блок кода */
Если в этом случае забыть второй знак равенства, оператор присваивания будет некорректным - нельзя числовой константе присвоить какое-то другое значение.

Цикл с предусловием в Pascal и C++ одинаковый.
Код: (Pascal)
while { условие } do { блок кода. };
Код: (C++)
while(/* условие */) /* блок кода. */

Цикл с постусловием в Pascal записывается с условием выхода из цикла, а не условием выполнения цикла (т.е. противоположен условию для while). В C++ по-прежнему используется условие выполнения цикла. Поэтому одинаковые циклы в Pascal и C++ будут записываться в виде:
Код: (Pascal)
repeat { блок кода }; until not { условие };
Код: (C++)
do { /* блок кода */ } while(/ * условие */);

Базовые типы данных и разные операторы расписывать не буду. С функциями ввода-вывода ты уже разобрался.
« Последнее редактирование: 14-03-2011 11:47 от Dimka » Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #26 : 14-03-2011 12:26 » 

Спасибо, Dimka!

golian, теперь вопросы к тебе

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

Мы ввели переменную,  с какой константой мы сравниваем.

Стоп символами могут быть Space, TAB, запятая, точка с запятой, тире. (думаю достаточно, для начала)

Прошу тебя давай описание алгоритма с самого начала...

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
golian
Интересующийся

ru
Offline Offline
Пол: Мужской
Я только учусь


« Ответ #27 : 14-03-2011 13:37 » 

"while (s in Alpha) and (i<=length(s)) do inc(i);"
грубо тут он считает символы до первого пробела и плюсует их к i

"if (i<=length(s)) then inc(x);"
тут он записывает в x = 1

"while NOT(s in Alpha) and (i<=length(s)) do inc(i);"
тут он вроверил что невошло в диапазон и записало в i +1

"Until (i>length(s));"
проверил что у нас еще не конец строки у пустился по новой

Расписал грубо но вроде верно)
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #28 : 14-03-2011 14:42 » 

давай Alpha назовем разрешенным диапазоном.

Мало ли? А вдруг множество символов  расширится до псевдо-графики?

И так...
Как выглядит твой алгоритм?

Начальные условия.
Словами считаем подряд идущие символы, который входят в разрешенный диапазон.

1. Посимвольно анализируем Входные данные  на вхождение в Разрешенный диапазон
2. Посимвольно анализируем на НЕвхождение в разрешенный диапазон.

Теперь, Как советует Dimka, откажемся от множества.
и перепишем  функционал
« Последнее редактирование: 14-03-2011 15:00 от Sla » Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #29 : 14-03-2011 16:50 » 

Там стоял диапазон букв ['А'..'Я', 'а'..'я']; просто скопировал с самого паскаля, даже сразу не заметил)))

Тут есть один нюанс: в русском алфавите буква "ё" (и "Ё") не входят в этот диапазон. Для других кириллических алфавитов еще хуже - там больше букв вне диапазона.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1] 2  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines