Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Помогите, с чего начать !


Автор: Lanos 11.3.2008, 23:08
Кто-нибуть помогите разобратся !
Здравствуйте ! Я студент ещё на 1-ом курсе, мы изучаем программирование на С++ ! Я на заочном отделении ! Мы работаем в Visual Studio C++ 6.0 или Borland C++ ! Надо сдать контрольную с такими задачами :
1. Даны натуральное число N и последовательность A1, A2, …, AN. Определить, является ли данная последовательность упорядоченной по убыванию. Найти минимальный и максимальный элементы и их №. Написать функции для реализации всех действий.
2. Написать программу, отвечающую следующим требованиям:
Задать матрицы А и В размерности (n x n), где n не меньше 6. Определить: 
- максимальный и минимальный элементы матриц А и В;
- матрицу С как сумму матриц А и В;
- матрицу D как произведение матриц А и В.

Вот в чём вопрос ! С чего начать, у меня очень много инфы по С++ но по времени я не успеваю ! Я начал изучать Структурное программирование по книгам, Операторы int, cin, if, итд. Перешёл на книгу (ООП) ! Сижу читаю но не понимаю как эти задачи делать надо ! Кто-нибуть хотябы укажите что делать и счего начать, что учить а то я нимогу понять ! Спасибо всем !!! 

Автор: susanin 11.3.2008, 23:23
если книги читать только для того, чтобы решить эти задачи, то вполне хватит и структурного программирования....
для первой задачи могу подсказать следующий алгоритм... пробегаем нашу последовательность (массив) от начала до конца ,и если все      А[i-1]>A[i] то выводим что последовательность упорядоченная... если хотя бы для одной пары чисел не выполняется это условие, то сразу выходим из цикла и выводим сообщение что последовательность не упорядочена...
далее чтобы найти минимальный элемент необходимо следующее... принимаем первый элемент как минимальный.. далее для всех элементов начиная со второго, еслир встречается элемент меньше текущего минимального элемента, то присваиваем нашему минимальному элементу, тот что нашли... аналогично для максимального.... если будут вопросы, спрашивайте...
для матрицы будут двойные циклы чтобы найти макс и мин элементы аналогично как и в первой задаче минимуму/макисмуму присваиваем элемент [0][0]а затем начиная со второго элемента первой строки и пробегая по всем строкам и столбцам выполняем те же действия что и в первой задаче...

Автор: bsa 11.3.2008, 23:34
Во-первых, cin - это не оператор. Это объект (переменная грубо говоря), такой же как и cout, и cerr.
Во-вторых, int, long, double, float, short, char - это тоже не операторы - это базовые типы данных.

задача №1:
У тебя есть последовательность чисел. Обычно, она представлена в виде массива записанного в текстовый файл.
Для этого нужно создать объект класса http://www.cplusplus.com/reference/iostream/ifstream/ (#include <fstream>) и передать ему в качестве параметров имя файла:
Код
std::ifstream file("array.txt");
Затем определить переменные "максимальное число", "индекс максимального числа", "минимальное число", "индекс минимального числа", "счетчик чисел". Теперь, последовательно (в цикле то есть) читая из файла в переменную целого типа (int, например) оператором >> и увеличивая "счетчик чисел" на 1 после каждого удачного чтения, нужно определять:
1. если текущее значение меньше предыдущего, то последовательность не упорядочена по убыванию
2. если текущее значение меньше минимального (больше максимального), то присвоить "минимальному (максимальному) числу" значение переменной, а его счетчику - счетчик чисел.
После окончания цикла вывести на экран результаты с помощью std::cout << ...

Задача №2.
Требуется уточнить в части "Задать матрицы А и В размерности (n x n), где n не меньше 6." Может там "не больше"? А то так задачка довольно сложной для новичка представляется.

Автор: korian 12.3.2008, 04:45
у меня тут валяется справочник, называется "Справочник программиста по C/C++ второе издание" автор Герберт Шилдт
думаю по быстрому изучить основы и написать простую программу лучше всего используя его или подобный справочник.
для начала прочитать первые 5 глав. Это:
1)Типы данных, переменные и константы.
2)Функции, области видиости, пространства имен и заголовки
3)Операторы
4)Препроцессор и комментарии (хотя это можна пока и пропустить)
5)Ключевые слова
Дальше изучить std::cin и std::cout и как с ними работать.
У меня это глава 15) Классы ввода-вывода библиотеки стандарта ANSI/ISO для языка C++.
после этого надо написать простую стандартную программку вывода на экран "Hello Wolrd".
Дальше перечитывать 1,2,3,5,15 главы и пробывать использовать каждое ключевое слово, чтобы понять зачем оно нужно.
Дальше прочитать остальные главы, но не полностью, а только название функции/объекта и зачем он нужен / какие возможности представляет. (как использовать объект / функцию, будете читать тогда, когда решите, что этот объект/функцию надо использовать)
В итоге получаем - 162 страниц тескта надо прочитать полностью.
Потом эти же 162 надо просматривать, пробуя написать простенькую программку используя каждое ключевое слово (можна не каждое, если понятно и так, что оно делает). Можно не писать программки, а искать примеры с использованием ключевого слова. Но IMHO Так хуже запоминается.
Дальше прочитать 268 оставшихся страниц бегло, читая по 2-3 предложения на странице.
И можна приступать к решению поставленных задач и постить в форум уже конкретные вопросы, хотя сначала надо воспользоваться поиском! smile

Автор: Lanos 12.3.2008, 09:21
Спасибо за помощь ! Справочник буду искать ! 

bsa, Во второй задачи всётаки не меньше !

Добавлено через 12 минут и 25 секунд
korian, А лучше выложите ссылку на справочник а то Яндекс ругается матом на такой запрос !

Автор: bsa 12.3.2008, 11:58
Lanos, ну раз не меньше, то стоит сначала почитать это: http://forum.vingrad.ru/forum/topic-189118/kw-динамический-массив-array-vector-faq.html

Автор: Lanos 12.3.2008, 16:06
Всётаки массивы мне пока не очень понятны ! Скачал книгу Дейтел "Как программировать на С++" 2005г. Вроде хорошая книга , буду по ней разбиратся ! И ещё : какая разница писать программы на Visual Studio C++ 6.0 или Visual Studio.NET 2003 (2005) ? У меня на компе VS 6.0 Но есть диск из VS.NET 2003 !!!

Автор: bsa 12.3.2008, 16:50
Visual Studio C++ 6.0 не соответствует стандарту С++.
.Net тебе не нужен (это C#, а не C++).

Автор: korian 12.3.2008, 17:12
Цитата(Lanos @  12.3.2008,  08:21 Найти цитируемый пост)
А лучше выложите ссылку на справочник

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

Цитата(bsa @  12.3.2008,  15:50 Найти цитируемый пост)
Visual Studio C++ 6.0 не соответствует стандарту С++.

хотел попросить ссылки, где бы можно было почитать о несоответсвиях.
а то я знаю только то, что переменные объявленные в for видимы за его пределами.
хотелось бы знать больше! smile

Автор: Lanos 12.3.2008, 17:24
Если 6.0 не соотвецтвует то на чём тогда учится ? на Borland'е С++, у меня он тоже есть, версии 3.1 и 5.02 !!!

Автор: korian 12.3.2008, 17:42
Цитата(Lanos @  12.3.2008,  16:24 Найти цитируемый пост)
Если 6.0 не соотвецтвует то на чём тогда учится ? на Borland'е С++, у меня он тоже есть, версии 3.1 и 5.02 !!! 

не заморачивайтесь, вас и Visual Studio C++ 6.0 устроит,
есть конечно ньюансы, но не думаю что они вам помешают.
короче используйте, то что установлено уже.

Автор: bsa 12.3.2008, 17:49
Цитата(Lanos @ 12.3.2008,  17:24)
Если 6.0 не соотвецтвует то на чём тогда учится ? на Borland'е С++, у меня он тоже есть, версии 3.1 и 5.02 !!!

http://www.codeblocks.org/
http://www.microsoft.com/express/vc/
http://www.eclipse.org + http://www.mingw.org

Думаю, достаточно средств для учебы. На любой вкус и цвет.

Автор: ILyAHA 12.3.2008, 19:31

Цитата

А лучше выложите ссылку на справочник а то Яндекс ругается матом на такой запрос !


выкень поисковик яндекса в топку smile 
Гугл - лучший друг программиста smile 

http://www.google.com/search?q=%D0%B0%D0%B2%D1%82%D0%BE%D1%80+%D0%93%D0%B5%D1%80%D0%B1%D0%B5%D1%80%D1%82+%D0%A8%D0%B8%D0%BB%D0%B4%D1%82+%D0%A1%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%81%D1%82%D0%B0+%D0%BF%D0%BE+C%2FC%2B%2B+%D0%B2%D1%82%D0%BE%D1%80%D0%BE%D0%B5+%D0%B8%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5+%2B+%D1%81%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&hl=ru&client=opera&rls=ru&hs=GHo

Автор: Lanos 16.3.2008, 01:28
Ответьте мне на мой вопросс товарещи Программисты :
Немогу понять где же настоящее С++ ? Когда я пишу программу (даже элементарную) в codeblocks ВОТ ТАК :
#include <iostream>
using namespace std;
int main()
{
    cout<<"please go \n";
    int a;
    cout<<"GO play \n";
    cin>>a;
    cout<<"SUM "<<a*a<<" \n";
    return 0;
}

То программа работает нормально !!! Обычно выполняется !!! Но если я перепишу этот код в точности до 100% в Visual Studio 6.0 C++ То программа не работает, Студия 6.0 выдаёт ошибки и матерится
А нормально этот код программки в Студии 6.0 работает вот так :
#include <iostream>

int main()
{
    cout<<"please go \n";
    int a;
    cout<<"GO play \n";
    cin>>a;
    cout<<"SUM "<<a*a<<" \n";
  
}
Тоесть без using namespace  std и return !!! 
То где же правда ! Что это за бред сивой кобылы ! Почиму там так пишится а там по другому ! какие интерестно ещё отличия есть ! И где настоящий С++ !
Очень сильно жду ответа ... 

Автор: susanin 16.3.2008, 02:36
Lanos, я думаю, что это все капризы студий... про return так это вообще история! отстутствие этого операторф на одних компиляторах (VS 2005 например) выдает ошибку, на других только предупреждение а на третьих (DevC++ к примеру) вообще без проблем все компилируется.... а вот насчет просторанства имен к сожалению ничем подсказать не могу...

Автор: korian 16.3.2008, 02:55
Lanos, 
предпологаю, что вы создали проект, который для реализации использует язык C, а не C++
я уже не помню шо там где, но точно помню, если файл назвать *.c 
то компилируется он как код на языке C

Автор: bsa 16.3.2008, 10:40
Lanos, шестая студия не соответствует стандарту. Поэтому и возникают такие проблемы. Используй что-то более современное (например, VC++ 2008 Express Edition - бесплатный).

Автор: korian 16.3.2008, 11:06
bsa, ну не на столько, чтобы namespace'ы игнорировать/не понимать.

Автор: bsa 16.3.2008, 14:29
Цитата(stat @ 16.3.2008,  14:04)
Я админ этого сайта и хороший программист С++! 

хороший программист на С++ никогда не скажет, что пользуется С++ 6-й версии.  smile 

Автор: Dronchik 16.3.2008, 16:00
Цитата(Lanos @  16.3.2008,  01:28 Найти цитируемый пост)
Немогу понять где же настоящее С++ ? Когда я пишу программу (даже элементарную) в codeblocks ВОТ ТАК :
#include <iostream>
using namespace std;
int main()
{
    cout<<"please go \n";
    int a;
    cout<<"GO play \n";
    cin>>a;
    cout<<"SUM "<<a*a<<" \n";
    return 0;
}

То программа работает нормально !!! Обычно выполняется !!! Но если я перепишу этот код в точности до 100% в Visual Studio 6.0 C++ То программа не работает, Студия 6.0 выдаёт ошибки и матерится
А нормально этот код программки в Студии 6.0 работает вот так :
#include <iostream>

int main()
{
    cout<<"please go \n";
    int a;
    cout<<"GO play \n";
    cin>>a;
    cout<<"SUM "<<a*a<<" \n";
  
}
Тоесть без using namespace  std и return !!! 

Странно. У меня стоит 6 Студия и ругаеться на второй код. Хотя нет. Не странно. Ругаеться как раз на то что namespace std не юзаеться.
И Варнинг на то что return отсутствует.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)