Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите решить задачу по С++

Закрытая тема
Настройки темы
C/C++ - [решено] Помогите решить задачу по С++

Новый участник


Сообщения: 15
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 20-12-2011
Описание: правила
  1. По заданному натуральному(целому) числу, определить количество цифр и найти их сумму.
  2. По заданному натуральному(целому) числу, определить количество цифр и найти их сумму. Из указаного диапазона n и m
  3. Выполнить инвертирование трех одномерных массивов: А[20], В[10], С[15]. Написать функции: -Заполнение массива числами в диалоговом режиме. -Вывода одномерного массива -Инвертирование одномерного массива.
  4. Определитьдля каждого из трех одномерных массивов : A[45], B[10], C[20] сколько раз в них встретились два подряд идущих нулевых элемента. Написать функции: -Заполнение массива числами в диалоговом режиме. -Вывода одномерного массива. -Определения количества двух подряд идущих нулевых элементов в одномерном массиве.


Выдержка из правил форума
Цитата:
Вопросы, в которых нет кода и следов ваших размышлений над поставленной задачей также будут перенесены в закрытую тему - Уголок Ленивого Программиста

Исходное сообщение автора

Задание: Написать прогу, которая по заданному натуральному числу определяет количество цифр в нем и их сумму.Протестируйте функцию десятичных чисел из некоторого диапазона от n до m.

Отправлено: 14:54, 27-09-2008

 

Новый участник


Сообщения: 28
Благодарности: 2

Профиль | Отправить PM | Цитировать


Да, я понимаю чо это нагло с моей стороны, и сам бы наврное написал бы, харошь балдеть студенты, пора учиться, но у меня немного другая ситуация. Не буду вдаваться в подробности.
Я понимаю что возможно легче сделать в одной программе или еще как-нибудь, но просто задача поставлена имено так, если уж на то пошло, то хотя бы первое задание, а над остальным сам попытаюсь попыхтеть. Ну а если все 3, то вообще буду примного благодарен, можешь тогда и вмз кошелечек кинуть в личку, отблагодарю

-------
Длина вашей подписи не может превышать 75 символов, включая BB коды.


Отправлено: 14:01, 27-01-2010 | #61



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 33
Благодарности: 12

Профиль | Отправить PM | Цитировать


в общем сделал тебе 3 в одном, т.к. это хоть работать будет. то бишь можно проверить как оно работает.
Имена файлов указываются как аргументы командной строки, так же в каждом поле (чтоб не заморачиваться) я сделал так, чтоб ввод был примерно таким образом: все данные разделяются пробелом. то бишь фио вводится через подчеркивание вместо пробелов.

вот код:

main.cpp:
Код: Выделить весь код
#include <iostream>
#include <cstdlib>
#include <fstream>
#include "rus8.h"		//русификатор
#include "candidate.h"
using namespace std;

int main(int argc, char *argv[])
{
	rus();				// ф-ия руссифицированного вывода

	if(argc < 3)
	{
		cout << "Ошибка 0 : введите все 3 аргумента командной строки" << endl;
		exit (0);
	}

	int size;

	cout << "Введите кол-во кандидатов" << endl;
	cin >> size;

	if(size < 0)
	{
		cout << "Ошибка 1 : кол-во кандидатов должно быть целочисленным и положительным ( 1, 2, 5, и т.д." << endl;
		exit (1);
	}

	cand *arr = new cand[size];			//выделение динамической памяти для массива структур

	ifstream in(argv[1]);

	if(!in)
	{
		cout << "Ошибка 2 : не могу открыть файл с исходными данными" << endl;
		exit (2);
	}

	read_info(in, arr, size);

	in.close();

	ofstream out(argv[2]);

	if(!out)
	{
		cout << "Ошибка 3 : не могу открыть файл для вывода" << endl;
		exit (3);
	}

	write_info(out, arr, size);

	out.close();

	delete [] arr;				// очистка динамической памяти от массива структур

	return 0;

}
candidate.h
Код: Выделить весь код
#include <iostream>
#include <string>
using namespace std;

struct cand
{
	string name;	// ФИО	
	int age;		// Возраст
	string prof;	// Профессия 
	string set;		// Наименование партии
	int num;		// Номер избирательного округа
	string court;	// Судимость
};

void read_info(istream &, cand *, const int &);		//ф-ия заполнения массива

void write_info(ostream &, cand *, const int &);	//ф-ия вывода данных в файл
candidate.cpp
Код: Выделить весь код
#include "candidate.h"

void read_info(istream &in, cand *arr, const int &size)
{
	for(int i = 0; i < size; i++)
	{
		in >> arr[i].name;
		in >> arr[i].age;
		in >> arr[i].prof;
		in >> arr[i].set;
		in >> arr[i].num;
		in >> arr[i].court;
	}
}

void write_info(ostream &out, cand *arr, const int &size)
{
	out << "Кандидаты :" << endl << endl;
	for(int i = 0; i < size; i++)
	{
		out << "Кандидат номер " << (i+1) << endl;
		out << "И.Ф.О.              : " << arr[i].name << endl;
		out << "Возраст             : " << arr[i].age << endl;
		out << "Профессия           : " << arr[i].prof << endl;
		out << "Наименование партии : " << arr[i].set << endl;
		out << "Номер изб. круга    : " << arr[i].num << endl;
		out << "Судимость           : " << arr[i].court << endl;
		out << endl << endl;
	}
}
rus8.h
Код: Выделить весь код
#ifndef _RUS_H
    #define _RUS_H

    #include <locale.h>

    inline void rus( void ) 
    {     
        setlocale( LC_CTYPE, ".1251" );
        setlocale( LC_MONETARY, ".1251" );

        return;
    }

#endif
вот с такими данными проверял работоспособность:
Код: Выделить весь код
Иванов_Петр_Васильевич
55
Историк
Единая_Росиия
5
Нет

Кузичкин_Иван_Григорьевис
32
Физик-ядерщик
ЛДПР
9
Нет

Васильев_Михаил_Эдуардовч
38
Экономист
КПРФ
7
Да
вот такой был вывод:
Код: Выделить весь код
Кандидаты :

Кандидат номер 1
И.Ф.О.              : Иванов_Петр_Васильевич
Возраст             : 55
Профессия           : Историк
Наименование партии : Единая_Росиия
Номер изб. круга    : 5
Судимость           : Нет


Кандидат номер 2
И.Ф.О.              : Кузичкин_Иван_Григорьевис
Возраст             : 32
Профессия           : Физик-ядерщик
Наименование партии : ЛДПР
Номер изб. круга    : 9
Судимость           : Нет


Кандидат номер 3
И.Ф.О.              : Васильев_Михаил_Эдуардовч
Возраст             : 38
Профессия           : Экономист
Наименование партии : КПРФ
Номер изб. круга    : 7
Судимость           : Да
по сути это твое третье задание - оно самое полное, если не очень представляешь как его разбить по кускам (на 1е и 2е) могу переделать - это не так долго
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:02, 27-01-2010 | #62


Новый участник


Сообщения: 28
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Lisiy_egik:
если не очень представляешь как его разбить по кускам (на 1е и 2е) могу переделать - это не так долго »
Вот это бы мне очень помогло.

-------
Длина вашей подписи не может превышать 75 символов, включая BB коды.


Отправлено: 14:13, 27-01-2010 | #63


Новый участник


Сообщения: 33
Благодарности: 12

Профиль | Отправить PM | Цитировать


вот 1е задание (ввод имен с консоли, минус 1 - вводить только транслитом)

main.cpp
Код: Выделить весь код
#include <iostream>
#include "rus8.h"		//русификатор
#include "candidate.h"
using namespace std;

int main()
{
	rus();				// ф-ия руссифицированного вывода

	cand arr[size];

	read_info(arr);

	int ch;

	cout << "Если вы хотите просмотерть введенную информацию, нажмите 1, если желаете закончить работы нажмите 2.   ";
	cin >> ch;
	
	if(ch == 1)
	write_info(arr);
	if(ch == 2)
		return 0;

	return 0;

}
candidats.h
Код: Выделить весь код
#include <iostream>
#include <string>
using namespace std;

const int size = 2;		// кол-во кандидатов

struct cand
{
	string name;	// ФИО	
	int age;		// Возраст
	string prof;	// Профессия 
	string set;		// Наименование партии
	int num;		// Номер избирательного округа
	string court;	// Судимость
};

void read_info(cand *);		//ф-ия заполнения массива

void write_info(cand *);	//ф-ия вывода данных в файл
candidats.cpp
Код: Выделить весь код
#include "candidate.h"

void read_info(cand *arr)
{
	cout << "Программа регистрации кандидатов" << endl << endl;
	for(int i = 0; i < size; i++)
	{
		cout << "Регистрация " << (i+1) << "-го кандидата";
		cout << endl << "Введите имя (вместо пробелов используйте символ нижнего подчеркивания)   ";
		cin >> arr[i].name;
		cout << endl << "Введите возраст :";
		cin >> arr[i].age;
		cout << endl << "Введите профессию :";
		cin >> arr[i].prof;
		cout << endl << "Введите название партии :";
		cin >> arr[i].set;
		cout << endl << "Введите номер изберательного округа :";
		cin >> arr[i].num;
		cout << endl << "Была ли судимость? ";
		cin >> arr[i].court;
		cout << endl << endl;
	}
}

void write_info(cand *arr)
{
	cout << "Зарегестрированные кандидаты :" << endl << endl;
	for(int i = 0; i < size; i++)
	{
		cout << "Кандидат номер " << (i+1) << endl;
		cout << "И.Ф.О.              : " << arr[i].name << endl;
		cout << "Возраст             : " << arr[i].age << endl;
		cout << "Профессия           : " << arr[i].prof << endl;
		cout << "Наименование партии : " << arr[i].set << endl;
		cout << "Номер изб. круга    : " << arr[i].num << endl;
		cout << "Судимость           : " << arr[i].court << endl;
		cout << endl << endl;
	}
}
rus8.h
Код: Выделить весь код
#ifndef _RUS_H
    #define _RUS_H

    #include <locale.h>

    inline void rus( void ) 
    {     
        setlocale( LC_CTYPE, ".1251" );
        setlocale( LC_MONETARY, ".1251" );

        return;
    }

#endif
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:07, 27-01-2010 | #64


Новый участник


Сообщения: 33
Благодарности: 12

Профиль | Отправить PM | Цитировать


Второе задание (ввод так же с консоли транслитом) размещение массива структур в дп.

main.cpp

Код: Выделить весь код
#include <iostream>
#include <cstdlib>
#include "rus8.h"		//русификатор
#include "candidate.h"
using namespace std;

int main()
{
	rus();				// ф-ия руссифицированного вывода

	int size;
	cout << "Введите кол-во регестрирующихся кандидатов: ";
	cin >> size;
	cout << endl;

	if(size < 0)
	{
		cout << "Ошибка! Кол-во кандидатов должно быть целочисленным и положительным" << endl;
		exit (0);
	}

	cand *arr = new cand[size];

	read_info(arr, size);

	int ch;

	cout << "Если вы хотите просмотерть введенную информацию, нажмите 1, если желаете закончить работы нажмите 2.   ";
	cin >> ch;
	
	if(ch == 1)
	write_info(arr, size);
	if(ch == 2)
	{
		delete [] arr;
		return 0;
	}

	delete [] arr;

	return 0;

}
candidats.h

Код: Выделить весь код
#include <iostream>
#include <string>
using namespace std;


struct cand
{
	string name;	// ФИО	
	int age;		// Возраст
	string prof;	// Профессия 
	string set;		// Наименование партии
	int num;		// Номер избирательного округа
	string court;	// Судимость
};

void read_info(cand *, int &);		//ф-ия заполнения массива

void write_info(cand *, int &);	//ф-ия вывода данных в файл
candidats.cpp

Код: Выделить весь код
#include "candidate.h"

void read_info(cand *arr, int &size)
{
	cout << "Программа регистрации кандидатов" << endl << endl;
	for(int i = 0; i < size; i++)
	{
		cout << "Регистрация " << (i+1) << "-го кандидата";
		cout << endl << "Введите имя (вместо пробелов используйте символ нижнего подчеркивания)   ";
		cin >> arr[i].name;
		cout << endl << "Введите возраст :";
		cin >> arr[i].age;
		cout << endl << "Введите профессию :";
		cin >> arr[i].prof;
		cout << endl << "Введите название партии :";
		cin >> arr[i].set;
		cout << endl << "Введите номер изберательного округа :";
		cin >> arr[i].num;
		cout << endl << "Была ли судимость? ";
		cin >> arr[i].court;
		cout << endl << endl;
	}
}

void write_info(cand *arr, int &size)
{
	cout << "Зарегестрированные кандидаты :" << endl << endl;
	for(int i = 0; i < size; i++)
	{
		cout << "Кандидат номер " << (i+1) << endl;
		cout << "И.Ф.О.              : " << arr[i].name << endl;
		cout << "Возраст             : " << arr[i].age << endl;
		cout << "Профессия           : " << arr[i].prof << endl;
		cout << "Наименование партии : " << arr[i].set << endl;
		cout << "Номер изб. круга    : " << arr[i].num << endl;
		cout << "Судимость           : " << arr[i].court << endl;
		cout << endl << endl;
	}
}
rus8.h

Код: Выделить весь код
#ifndef _RUS_H
    #define _RUS_H

    #include <locale.h>

    inline void rus( void ) 
    {     
        setlocale( LC_CTYPE, ".1251" );
        setlocale( LC_MONETARY, ".1251" );

        return;
    }

#endif
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:22, 27-01-2010 | #65


Новый участник


Сообщения: 28
Благодарности: 2

Профиль | Отправить PM | Цитировать


Ну что же, попробую теперь это все осилить сам.
Ну да ладно, все равно спасибо.
В чем делал-то хоть, в билдере 5ом заработает?

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

-------
Длина вашей подписи не может превышать 75 символов, включая BB коды.


Отправлено: 15:31, 27-01-2010 | #66


Новый участник


Сообщения: 33
Благодарности: 12

Профиль | Отправить PM | Цитировать


не, скажем так:

1-е: по-сути обычный массив структур, заполнение с консоли. вывод на экран.
2-е: размещение массива структур в динамической памяти. ввод с консоли. вывод на экран
3-е: самое полное(которое 3 в 1м): размещение массива в динамической памяти, ввод данных из файла, вывод в файл(имена файлов задаются аргументами командной строки). Если к 3-ему какие-то другие требования (например ввод с консоли вывод в файл) или размещать не в дп, то могу переделать - это пару минут займет, но если ты его покажешь преподу. то не думаю. что он скажет что тут все печально))

компилятор - Microsoft Visual Studio 2008, в билдере должно тоже скомпилиться - язык то один))
единственное что может стать проблемой - это то. что в 3ем имена файла можно задать прямо в коде, тогда не нужно будет прописывать аргументы, но с аргументами, на мой взгляд. лучше.

будут вопросы - спрашивай, в личку номер вмз скину, все таки ты время сэкономил и получил рабочие проекты, а мне приятно за потраченное время

Отправлено: 15:42, 27-01-2010 | #67


Новый участник


Сообщения: 28
Благодарности: 2

Профиль | Отправить PM | Цитировать


Ну да ввод как я уточнил нужен с консоли, если не сложно, переделаешь 3ее задание.

-------
Длина вашей подписи не может превышать 75 символов, включая BB коды.


Отправлено: 21:32, 27-01-2010 | #68


Новый участник


Сообщения: 33
Благодарности: 12

Профиль | Отправить PM | Цитировать


3е ввод с консоли(условия ввода остались прежними), вывод в файл, имя файла указывается прямо в коде - для разнообразия уже ))))

main:

Код: Выделить весь код
#include <iostream>
#include <cstdlib>
#include <fstream>
#include "rus8.h"		//русификатор
#include "candidate.h"
using namespace std;

int main()
{
	rus();				// ф-ия руссифицированного вывода

	int size;
	cout << "Введите кол-во регестрирующихся кандидатов: ";
	cin >> size;
	cout << endl;

	if(size < 0)
	{
		cout << "Ошибка! Кол-во кандидатов должно быть целочисленным и положительным" << endl;
		exit (0);
	}

	cand *arr = new cand[size];

	read_info(arr, size);

	ofstream out("out.txt");
	if(!out)
	{
		cout << "Ошибка! Не могу создать файл для вывода данных" << endl;
		exit (3);
	}

	write_info(out, arr, size);

	out.close();

	delete [] arr;

	return 0;

}
candidats.h

Код: Выделить весь код
#include <iostream>
#include <string>
using namespace std;


struct cand
{
	string name;	// ФИО	
	int age;		// Возраст
	string prof;	// Профессия 
	string set;		// Наименование партии
	int num;		// Номер избирательного округа
	string court;	// Судимость
};

void read_info(cand *, int &);		//ф-ия заполнения массива

void write_info(ostream &, cand *, int &);	//ф-ия вывода данных в файл
candidats.cpp
Код: Выделить весь код
#include "candidate.h"

void read_info(cand *arr, int &size)
{
	cout << "Программа регистрации кандидатов" << endl << endl;
	for(int i = 0; i < size; i++)
	{
		cout << "Регистрация " << (i+1) << "-го кандидата";
		cout << endl << "Введите имя (вместо пробелов используйте символ нижнего подчеркивания)   ";
		cin >> arr[i].name;
		cout << endl << "Введите возраст :";
		cin >> arr[i].age;
		cout << endl << "Введите профессию :";
		cin >> arr[i].prof;
		cout << endl << "Введите название партии :";
		cin >> arr[i].set;
		cout << endl << "Введите номер изберательного округа :";
		cin >> arr[i].num;
		cout << endl << "Была ли судимость? ";
		cin >> arr[i].court;
		cout << endl << endl;
	}
}

void write_info(ostream &out, cand *arr, int &size)
{
	out << "Зарегестрированные кандидаты :" << endl << endl;
	for(int i = 0; i < size; i++)
	{
		out << "Кандидат номер " << (i+1) << endl;
		out << "И.Ф.О.              : " << arr[i].name << endl;
		out << "Возраст             : " << arr[i].age << endl;
		out << "Профессия           : " << arr[i].prof << endl;
		out << "Наименование партии : " << arr[i].set << endl;
		out << "Номер изб. круга    : " << arr[i].num << endl;
		out << "Судимость           : " << arr[i].court << endl;
		out << endl << endl;
	}
}
rus8.h

Код: Выделить весь код
#ifndef _RUS_H
    #define _RUS_H

    #include <locale.h>

    inline void rus( void ) 
    {     
        setlocale( LC_CTYPE, ".1251" );
        setlocale( LC_MONETARY, ".1251" );

        return;
    }

#endif
пример файла после записи данных:

Зарегестрированные кандидаты :

Код: Выделить весь код
Зарегестрированные кандидаты :

Кандидат номер 1
И.Ф.О.              : Ivan_Vasilevich_Kozlovsky
Возраст             : 55
Профессия           : teacher
Наименование партии : LDPR
Номер изб. круга    : 5
Судимость           : No


Кандидат номер 2
И.Ф.О.              : Petr_Vasilevich_Tolstoy
Возраст             : 37
Профессия           : doc
Наименование партии : Edinaya_Russia
Номер изб. круга    : 11
Судимость           : No


Кандидат номер 3
И.Ф.О.              : a-ta-ta
Возраст             : 5
Профессия           : no
Наименование партии : no
Номер изб. круга    : 1
Судимость           : yap
Это сообщение посчитали полезным следующие участники:

Отправлено: 01:20, 28-01-2010 | #69


Новый участник


Сообщения: 20
Благодарности: 0

Профиль | Отправить PM | Цитировать


Помогите по жалуйста..... На курсовую задали сделать примитивный графический редактор.
Подскажите с чего начать и как вообще его реализовать.

Отправлено: 10:47, 05-02-2010 | #70



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Помогите решить задачу по С++

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Помогите решить задачу Urann Программирование и базы данных 11 14-05-2013 11:44
Разное - Помогите решить задачу в Excel Dgonny Программирование и базы данных 2 16-11-2009 04:11
C/C++ - Помогите решить задачу zdughi Программирование и базы данных 1 01-05-2009 06:03
помогите решить задачу snikers Программирование и базы данных 2 27-08-2004 01:57
помогите решить задачу Guest Программирование и базы данных 2 21-05-2004 11:23




 
Переход