Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.86
Proger_1
0 / 0 / 0
Регистрация: 29.03.2010
Сообщений: 30
#1

Проверить, есть ли в списке хотя бы два одинаковых элемента - C++

19.05.2010, 21:33. Просмотров 1865. Ответов 1
Метки нет (Все метки)

Прошу проверить правильность кода и помочь написать его дальше.
Написать программу, обеспечивающую работу с динамическими структурами - связанными списками. Элементами спика являются целые числа. Программа должна содержать 5 ф-ций:
1.Проверка, есть ли в списке хотя бы два одинаковых эл-та
2.Удаление из непустого списка первый отрицательный эл-т, если такой есть
3.Определение пустой список или нет
4.Вывод эл-ов списка на экран
5.Вывод на экран меню(должно содержать пункты для демонстрации работы ф-ций и выход).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <malloc.h>
 
struct node
{
    int data;
    struct node *nextPtr;
};
 
int _tmain(int argc, _TCHAR* argv[])
{
    struct node a1;
    struct node *newPtr, *startt, *startt1, *startt2;
    a1.data=10;
    a1.nextPtr=NULL;
    struct node a2;
    a2.data=60;
    a2.nextPtr=&a1;
    struct node a3;
    a3.data=12;
    a3.nextPtr=&a2;
    newPtr=(node*) malloc(sizeof(struct node));
    (*newPtr).data=10;
    (*newPtr).nextPtr=&a3;
    startt=newPtr;
 
    int a;
 
           //menju
    for(int h=1; h<100; h++)
    {
        printf("1 - Vivod elementov\n2 - proverka na pustotu\n3 - Proverka odinakovih elementov\n----------------------------------\n");
        scanf("%d",&a);
        printf("---------------------------\n");
 
        //vivod spiska na ekran
        if (a==1)
        {
            startt1=startt;
            while ((*startt).nextPtr!=NULL) 
            {
                startt2=startt;
                printf("%d\n",(*startt).data);
                startt=(*startt).nextPtr;
            }
            printf("-------------------------\n");
        }
 
        //odinakovie elementi
        if (a==3)
        {
            if ((a1.data==a2.data) || (a2.data==a3.data) || (a1.data==a3.data)) 
            {
                printf("Estj odinakovie elementi\n-----------------------------\n");
            }
            else
            {
                printf("Net odinakovih elementov\n------------------------------\n");
            }
        }
        
        //pustoj spisok ili net
        if (a==2)
        {
            if ((*startt).data==0) 
            {
                printf("Spisok pust\n-----------------------------\n");
            }
            else printf("V spiske estj zapisi\n------------------------------\n");
        }
    }
 
    scanf("%s");
    return 0;
}
Пока делал без функций, а в основном блоке программы. Сделал вывод списка, проверку ну пустоту, поиск одинаковых эл-ов и меню. Вроде как работает, но всё же посмотрите пожалуйста код, кажется мне что здесь может быть что-то неверно, т.к ну врубаюсь я в некоторые строки, например такие:
C++
1
2
3
4
5
a3.nextPtr=&a2;
newPtr=(node*) malloc(sizeof(struct node));
(*newPtr).data=10;
(*newPtr).nextPtr=&a3;
startt=newPtr;
Переписывал это с доски у учителя, а сам толкмо не знаю что это, с указателями вообще не дружу.

Поправте если здесь что не так, и осталось ещё сделать удаление отрицательного элемента. Не представляю как можно реализовать удаление отрицательной записи из спика.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2010, 21:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверить, есть ли в списке хотя бы два одинаковых элемента (C++):

Проверить есть ли среди трех чисел хотя бы два одинаковых - C++
1.Дано три натуральних числа. З’ясувати, чи є серед них хоча б два однакових Даны 3 натуральных числа. Проверить, есть ли среди них хотя...

Определить есть ли в последовательности хотя бы два одинаковых элемента - C++
Помогите пожалуйста, срочно нужен код программы на С++. Чем проще будет написана тем лучше и комментарии чтобы понять код Даны...

Определить, есть ли в бинарном дереве хотя бы два одинаковых элемента - C++
Задано бинарное дерево. Определить, есть ли в этом дереве хотя бы два одинаковых элемента. Вывести на экран все одинаковые элементы в...

Составить программу, которая проверяет, есть ли в vector хотя бы два одинаковых элемента - C++
составить программу, которая проверяет, есть ли в vector хотя бы два одинаковых элемента. вот код, но он не работает, т.к. только...

Проверить, что в массиве, введенном с клавиатуры, есть два соседних одинаковых элемента - C++
Привет. Нуждаюсь в помощи!!! Нужно написать программу, какая выводит, что в массиве, введенном с клавиатуры, есть два соседних между собой...

Определить, есть ли в матрице два одинаковых элемента - C++
Помогите решить задачу. Сам новичок в С++ 1. Определить, есть ли в данном двумерном массиве два одинаковых элемента. 2. Поменять...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
20.05.2010, 05:31 #2
C
1
(*newPtr).data=10;
можно записать

C
1
newPtr->data = 10;
Добавлено через 11 минут
вместо
C
1
scanf("%s");
C
1
getchar()
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2010, 05:31
Привет! Вот еще темы с ответами:

Массив: Проверить, есть ли два элемента среди отрицательных с максимальным значением? - C++
Есть ли два элемента среди отрицательных с максимальным значением?

Определить, есть ли в строке(string) хотя бы одно число и определить есть ли в тексте хотя бы два числа. - C++
Помогите пожалуйста с заданиями. Определить, есть ли в строке(string) хотя бы одно число. Определить есть ли в тексте хотя бы два числа.

Для массива из 10 чисел проверить, есть ли в нем два одинаковых числа и напечатать "да" или "нет" - C++
void check_same(const int* a) { for (const int* p = a; p &lt; a + 9; p++) for (const int* q = p+1; q &lt; a + 10; q++) ...

Есть натуральное число n. Проверить, есть ли в том числе 3 одинаковых цифры - C++
Помогите реализировать 2 задания при с использованием указателей. Я коды написал, но не уверен в их правельности и рациональности. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru