Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Написать процедуру, которая осуществляет сложение целых чисел произвольной длины(двухсвязный список)




#include <fcntl.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <io.h>

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

struct list { // стр-ра, ссылающаяся сама на себя

int info;

list *prev;

list *next;

list() { prev=NULL; next=0; info=0; }

};

 

void insert_post(list **, list **, list**, int);

void printList(list *);

int countItems(list *);

list *first1=0; // голова 1-го списка

list *last1=0; // хвост 1-го списка

list *first2=0; // голова 2-го списка

list *last2=0; // хвост 2-го списка

 

void main(void)

{

char digit[10], num1[100], num2[100];

unsigned int i;

list *p1, *p2;

 

printf("Enter first whole number:\n");

scanf("%s", num1);

printf("\nEnter second whole number:\n");

scanf("%s", num2);

 

for(i=0; i<strlen(num1); i++) {

p1=last1;

sprintf(digit, "%c", num1[i]);

insert_post(&p1, &first1, &last1, atoi(digit));

}

printList(first1);

 

for(i=0; i<strlen(num2); i++) {

p2=last2;

sprintf(digit, "%c", num2[i]);

insert_post(&p2, &first2, &last2, atoi(digit));

}

printList(first2);

 

int cnt1 = countItems(first1);

int cnt2 = countItems(first2);

int rem=0, tmp;

p1 = last1;

p2 = last2;

if(cnt1>=cnt2) {

while(p2!=NULL) {

tmp = p1->info + p2->info + rem;

if(tmp>=10) { tmp -= 10; rem = 1; }

 

else rem = 0;

p1->info = tmp;

p1 = p1->prev;

p2 = p2->prev;

}

if(rem) p1->info += 1;

printList(first1);

}

else {

while(p1!=NULL) {

tmp = p1->info + p2->info + rem;

if(tmp>=10) { tmp -= 10; rem = 1; }

else rem = 0;

p2->info = tmp;

p1 = p1->prev;

p2 = p2->prev;

}

if(rem) p2->info += 1;

printList(first2);

}

 

}

/* Вставка элемента после текущего */

void insert_post(list **q, list **first, list **last, int value)

{

list *p = new list;

if ((*q)!= 0)

{

p->next = (*q)->next;

p->prev = *q;

}

p->info = value;

if ((*q) == 0)

{

*first = p;

*last = p;

}

else

{

if ((*q)->next == 0) *last = p;

else (*q)->next->prev = p;

(*q)->next = p;

}

}

/* count items in the list */

int countItems(list *q)

{

int cnt=0;

 

while(q!=NULL) {

cnt++;

q = q->next;

}

return cnt;

}

/* Print the list */

void printList(list *q)

{

if (q == 0) printf("List is empty.\n\n");

else {

printf("The list is:\n");

while (q!= 0) {

printf("%d-> ", q->info);

q = q->next;

}

printf("NULL\n\n");

}

}

ООП

18.4 Перегрузка операции << и >>(вставка и извлечение) для класса “Точка трехмерного пространства”

#include <iostream.h>

#include <string.h> // Для работы со строковыми функциями.

//Определение класса (пользовательского типа):

struct string

{

int length;

char line[80];

};

// Прототип операции-функции для перегрузки операции <<:

ostream& operator << (ostream& out, string str);

void main()

{

string st; // Объект st класса string.

strcpy(st.line,"Содержимое строки.");

st.length = strlen(st.line);

cout << st;

}

ostream& // Тип возвращаемого значения.

operator << (ostream& out, string str)

{

out << "\n Длина строки: " << str.length;

out << "\n Значение строки: " << str.line;

return out;

}

=============================================

//OOР10_1.СРР - перегрузка операции ввода >>.

#include <iostream.h>

struct point // Точка трехмерного евклидова пространства.

{

float x;

float y;

float z;

};

istream& // Тип возвращаемого значения.

operator >> (istream& in, point& d)

{

cout <<"\n Введите три координаты точки: " << "\nx = ";

in >> d.x;

cout << "y = "; in >> d.y;

cout << "z = "; in >> d.z;

return in;

} void main() { point D; cin >> D; }

 

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных