С,C++| bases
вспоминаю и изучаю дальше - С, самостоятельно. Дайте какие нибудь задания пожалуйста, а лучше несколько по возрастающей (по сложности) . Или посоветуйте где можно эти задания найти 8) Уровень начинающего.
|
bool
Мне это тоже интересно. Но у меня такое ощущение что все забыли про C. Про структурное программирование забыли. И непонятно, почему? Ведь ОО языки предназначены для написания, больших по размеру программ (ну можно и средних). А писать на C++ (и др. ООЯ) маленькие проги это дибилизм. Уж не говоря о C# и Java. Эти мне кажется вобще предназначены только для прикладух и под сеть, а системные проги на них писать, по моему, изврат. Или я не прав? |
Цитата:
Это о скорости выполнения кода и о его размере. Что касается простоты, удобства и эффективности, то верх берёт, однозначно, C++... Цитата:
Т.е. на C++ запросто можно написать структурную программу без использования классов и конструкторов/деструкторов (если нравится). На C же ООП-программа пишется довольно сложно (поддержки ООП то нет)... Таким образом, системные программы на C++ пишутся так же легко, как и на чистом C. Чего не скажешь, например, о C#. На C# тоже можно писать системные программы, но это неоправданно сложно и неэффективно, поскольку C# - полностью объектно-ориентированный язык (там даже функция main принадлежит классу) и заточенный именно на ООП. Другие парадигмы он не поддерживает... |
CyraxZ, а почему на C# неэффективно писать системные программы? Тот же Visual Studio 2005 всё равно сначала переводит программу с поддерживаемых языков (C++, C#, Basic - всё равно) в свой IL-код, а уж потом выходит бинарник. Так по сути - какая разница на каком языке, если есть ещё общий для всех IL?
Или моя логика неверна? Было бы интересно знать. bool, посмотри курс по C/C++ на intuit.ru. Там вроде не особо сложно. |
Coutty
Студия умеет генерить для C++ как нэйтив код, так и IL. Драйверы всё ещё в нэйтив делают. К тому же в плюсах работа с указателями много прозрачней, чем в C# (в котором указатели тоже есть, но более ограниченные. Основное назначение - связка с ансэйф кодом; непосредственно при программировании ими никто не пользуется). |
Coutty ты чёт...
Цитата:
Я так думаю, может я не прав. Я в C# не силён. |
bool, стандартные шаги:
1. напиши прогу "hello, world" (ещё один сишник родился) 2. программу поиска максимального и минимального элемента массива 3. определитель матрицы 4. изменяемый список (рекомендуется двухсвязный) 5. быстрая сортировка этого списка. Думаю на этом этапе желание работать с чистым C пропадёт |
забыл совсем про эту тему , да и времени не хватало. Вот по поиску максимального и минимального элемента, что то сразу застопорился)
массив задаю с 11 элементами, а почему позволяет вводить только 5 и сразу результат, и только на максимальный. Ещё подскажите как нужно правильно в начале объявить функции которые будут возвращать значение int, и в которую я буду передавать как аргумент - массив. Код:
#include <stdio.h> |
чет меня заклинило 8) пардон, вот работает) посмотрите пожалуйста , как можно оптимальнее её написать, и ещё такой вопрос: вот допустим я хочу прям в программе ввести величину массива. Мне нужно сначала объявить переменную int size; /* размер массива */
а как потом объявлять сам массив? так ведь нельзя: int a[size] , потому что переменная size ещё не определена. Подскажите пожалуйста. Код:
#include <stdio.h> |
массив переменного размера, так называемый динамический берётся из свободной памяти:
Код:
int size1 = 10; Код:
// возвращает указатель на минимальный элемент или на конец массива (если он пустой) |
bool
Цитата:
В дополнение к ответу pva - если массив состоит из данных POD-типа, имеет небольшой размер и его время жизни привязано к области видимости функции (т.к. по выходу из функции он должен быть убит), то можно воспользоваться функцией alloca. Так сказать, pure-C way. |
а турбо С поддерживает С99? у меня почему то ошибку в синтаксисе показывает, может удобнее учиться на чем нибудь другом? что посоветуете? борланд 6 ?
|
если уж билдер 6, то это достаточно продвинутый компилятор, чтобы использовать шаблоны с++. Есть например такой: vector<typename T>
Код:
#include <vector> |
pva
спасибо, но я попытаюсь освоить сначала всю функциональность С =) без С++. Пишу программку определения определителя матрицы и у меня такой вопрос возник: правильно ли будет объявлять в цикле главной функции массив? Ведь при каждой итерации цикла будет создаваться новый массив, или он будет заменяться старым? допустим вот такая ситуация: pm=--pm; /* pm изначально определена, например pm=5 */ for(бла бла бла) { бла бла бла int f[pm][pm]; /* вот здесь =) */ бла бла } или лучше в цикл включить функцию объявленную заранее в которой будет этот массив объявляться и по её завершению удаляться, а потом при след. итеррации создаваться вновь? |
что то я затормозился на этом определителе. использую рекурсивную функцию для определения.
Код:
finder(int *a) все остальное: Код:
|
если действовать рекурсивно, то надо каждый раз делать копии подматриц (потому что по сути при выбрасывании столбца и строки метрица меняется). Но можно выбрасывать только индексы.
Код:
// приучайте мышление к универсальным алгоритмам - шаг к С++ |
Нужны задания?
Напиши марио, змейку, в общем какую-нибудь простенькую игру. |
pva
огромное thx 8) сейчас переварю это (с новыми типами) допишу с формулой и перейду к структурам =) ferrum2688 на С? я до такого уровня ещё не дошел, чтобы игры на нем писать, я даже не представляю как графический интерфейс на С стряпать )) |
Цитата:
В принципе достаточно только gotoxy(int x,int y) и cprintf("*"); , для очистки cprintf(" "), думаю этого достаточно для графики, есть конечно ещё и др. функции(clrscr();-очистка всего экрана), но написать можно и без них. Для того чтоб понять программирование можно писать с ограниченным числом функций, нужно подумать возможно ли на основании твоих знаний решить данную задачу, а большинство придуманных функций для ускорения процесса создания и можно обойтись без них. Например возведение в степень(целую), извлечение корней(целых) можно сделать из:+,-,*,for,if. |
Цитата:
|
Цитата:
|
Цитата:
|
какой компилятор посоветуете использовать для изучения С++ ? работаю на вин2003, если такие существуют , то лучше бесплатный )
билдер С++ или MS Visual C++ ? правда оба не бесплатных 0=) |
устанавливаю visual C++ express, http://msdn.microsoft.com/vstudio/ex...s/default.aspx кто нибудь работал в нем? чего о нем можно сказать хорошего и плохого?)
|
для обучения вроде самое то, и бесплатно и все вроде есть(для начинающего), только вот почему то у меня без namespace отказывается он работать, т.е. программировать только по новому стандарту? а у Страуструпа в книге описание идет по старому 8( так что параллельно держу открытой литературу Герберта Шилдта по С++.
|
Цитата:
|
у меня видимо самое первое издание))) вот оно http://dump.ru/files/2/2434794630/ , можно ссылку на последнее издание? 8)
|
http://cclib.nsu.ru/projects/gnudocs/texts/cpptut.html - вот ещё, но там тоже ничего нет про новый стандарт, или нового издания нет в электронном виде?
|
про namespace - это мелочи, на которые вы зря обращаете внимание. Один раздогадался - и на всю жизнь. Почитайте про двусвязные списки.
|
возможно не в тот раздел пишу, и это связано с ОС , но исправить не знаю где. Среда MS Visual C++ Express, пишу консольный проект, при запуске кирилица отображаеца "кракозябрами", где и как это можно исправить?
|
класс:
Код:
class vector { Код:
vector::vector(int s) Код:
int& vector::operator[](int i) Код:
sz="s;" Код:
if(i<0 || sz<="i)" |
bool
Цитата:
По поводу кавычек. Вы вообще свой пример скомпилировать пытались? И не получится. Не пользуйтесь тем источником, из которого пример. Ибо бяка. |
bool
Цитата:
А про кавычки, может так: Код:
sz="s"; Код:
if(i<0 || sz<=i) trinarry code GO? ........................ GO!!! => not bool |
Цитата:
|
Вложений: 1
Я пользуюсь вот вариантом книжки Страуструпа, который прикрепил во вложении. Вот честно, никаких упомянутых глюков не нашёл. Посмотрите, не пожалеете ;)
|
Спасибо =) , действительно все исправлено, да ещё и примеры есть к каждой главе в архиве
|
Цитата:
|
у меня вопрос по компиляторам снова 8)
вот код: Код:
#include "stdafx.h" Цитата:
компилятор visual C++ express |
Надо так:
Код:
cout << '\'' << ch << '\'' |
пардон, в восьмиричную
ivank спасибо) |
простенькая программка, меняет местами значения переменных. Передаю адреса переменных в функцию которая меняет(должна =) ) местами.
Код:
#include "stdafx.h" в результате все равно: Код:
a = 6 |
bool
Не знаю. У меня и gcc и VS6 (по техническим причинам более новых студий временно нет). Может быть дело из-за кривой оптимизации. P.S. Чтобы данная программа вообще скомпилировалась надо изменить тип функции change на void. И её прототип лучше поместить до main, а не внутри. |
ivank
у меня бесплатный visual C++ express(регистрация на microsoft.com бесплатная), на нем скомпилировалось , но так вот криво 8( сейчас качаю борланд билдер, попробую на нем. |
bool Так не подойдет?
Код:
#include "stdafx.h" |
bezumes
ivank верно сказал, функция ведь ничего не возвращает, да и копилятор действительно странно работал. Запустил то же самое в борланде, и без проблем скомпилировалось и получил правильный результат. Странно то, что потом я ещё раз попробЫвал скомпилировать это все в VC++ express и все скомпилилось и такой же верный результат как и в борланде. 0.о |
вопрос по функции CharToOem(), присутствует ли она в компиляторах борланд и VC++ Express , запускаю программу и в обоих компиляторах идет ругань на эту функцию:
Цитата:
Цитата:
все заголовки: Код:
#include "stdafx.h" |
Цитирую запись полугодовой давности
Цитата:
Я не говорю о специализированных языках, конкретно заточенных под что-то. |
СТОП! СТОП! СТОП! Не превращайте тему в очередной спор на тему: "какой язык программирования круче" !!!
|
Цитата:
Код:
#include <windows.h> |
bezumes
когда подключаю <windows.h> , компилятор ругается на его отсутствие вообще у себя. |
Вложений: 1
Цитата:
Код:
#include <locale> Код:
#include <locale> |
bool
Цитата:
Цитата:
|
Преобразовать ASCII в Unicode можно с помощью "сишной" функции mbstowcs().
Код:
#include <stdio.h> |
1) в MS Visual C++ Express, если успешно прошла компиляция , то при дальнейшем изменении проекта и повторной компиляции он продолжает компилиться по старому, не изменённому, варианту. Пробывал сохранять после изменения, а потом уже компилировать, не помогает =/ Что я делаю не правильно?
2) модераторам: возможно ли название этой темы сменить на "C,C++ | азы" ? |
я использую такую фигнюшку, если не принципиально что только под виндой рабоатет
Код:
std::wstring wstr(const char* s, unsigned size); |
программка для побайтного вывода значения типа double в двоичном представлении:
Код:
#include "stdafx.h" Код:
if(i & c[j]) cout << "1"; |
ещё такой полуоффтопный вопрос : что значит
Цитата:
|
по поводу вопроса:
union - это "объединение", все поля будут занимать одну и ту же память. Это сделано в древнем языке "си" для того, чтобы можно было легко переделать из одного вида в другой. Компилятор автоматически выбирает под такие объединения столько памяти, сколько необходимо, чтобы хранить все члены объединения. Например: Код:
union { [code] void bits::show_bits() { int i, j; // мы перебираем память задом-наперёд? for( j = sizeof(double) -1; j >=0; j--) { cout << "Double declaration of the bit" << j << ":"; for( i = 128; i; i >>=1) // перебираем биты задом-наперёд? if(i & c[j]) cout << "1"; else cout << "0"; cout << "\n"; } } [code] |
pva
спасибо =) т.е. в первой итерации 128 побитно сравнивают с c[j]? объясните пожалуйста как получился первый байт? я попробЫвал вывести значение c[j], и так какая то хрень получилась, вроде @0000000, оно и понятно, ведь тип то char. Понял я то, что мы идем по разрядам байта с конца, т.е сначала 128, потом 64 , 32 и т.д. А вот как получается результат? Вот кстати и он: Код:
байт 7: 01000000 |
Энтузиазм закончился? Если нет, то вот одна задачка, вернее вопрос, для тех кто и с С++ уже немного знаком, из одного популярного журнала:
"Определить какой из кодов, к какому из синтаксисов (С или С++) относится и объяснить почему, по каким параметрам был найден ответ". Код:
forum (o, s) Код:
//Some text to view on output device Код:
for (int z = 0; z< MAXIMUM -1 && o! = '\n'; ++p; summa+=z) Код:
int forums: 4 |
Время: 17:51. |
Время: 17:51.
© OSzone.net 2001-