Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dodanie elementów struktury

Ostatnio zmodyfikowano 2013-01-22 00:08
Autor Wiadomość
KamilW
Temat założony przez niniejszego użytkownika
Dodanie elementów struktury
» 2013-01-21 15:05:46
Witam, stworzyłem taki oto program:

C/C++
#include "stdafx.h"
#include <iostream>
#include "time.h"
#include "string.h"
#include "conio.h"
#include "stdio.h"
using namespace std;

struct SStudent
{
    float ocenaZPI;
    SStudent * next;
};

SStudent * add( SStudent * head, int New )
{
    SStudent * tmp, * nowy, * cien;
    int tmp2;
    nowy =( SStudent * ) malloc( sizeof( SStudent ) );
    nowy->ocenaZPI = New;
    nowy->next = NULL;
   
    if( head == NULL ) {
        head = nowy;
    }
    else if( head->ocenaZPI >= New ) {
        nowy->next = head;
        head = nowy;
    }
    else {
        tmp = head;
        while( tmp != NULL && tmp->ocenaZPI < New ) {
            cien = tmp;
            tmp = tmp->next;
        }
        cien->next = nowy;
        nowy->next = tmp;
    }
    return head;
}

void show( SStudent * head )
{
    if( head != NULL ) {
        while( head != NULL ) {
            printf( "%d ", head->ocenaZPI );
            head = head->next;
        }
        printf( "\n" );
    }
    else printf( "Brak elementow do wyswietlenia.n" );
   
}

void search( SStudent * head, int Find )
{
    int i = 1;
    SStudent * tmp = head;
    while( tmp != NULL && tmp->ocenaZPI != Find )
    {
        tmp = tmp->next;
        i++;
    }
    if( tmp != NULL )
    {
        printf( "Element %d jest na %d miejscu", tmp->ocenaZPI, i );
        printf( "\n" );
    }
    else printf( "Element nie istnieje\n" );
   
}

SStudent * Delete( SStudent * head, int Del )
{
    SStudent * tmp, * tmp2, * pom;
    tmp = head;
    if( head == NULL )
    {
        printf( "rak elementu do usuniecia\n" );
        return head;
    }
    else if( head->next == NULL && head->ocenaZPI == Del )
    {
        free( head );
        head = NULL;
        return head;
    }
    else
    {
        if( tmp->ocenaZPI == Del )
        {
            pom = tmp->next;
            free( head );
            return pom;
        }
        else
        {
            tmp2 = tmp->next;
            while( tmp2->next != NULL && tmp2->ocenaZPI != Del )
            {
                tmp = tmp->next;
                tmp2 = tmp->next;
            }
            if( tmp2->next == NULL )
            {
                printf( "Brak elementu.\n" );
            }
            else if( tmp2->next == NULL )
            {
                free( tmp2 );
                tmp->next = NULL;
            }
            else
            {
                tmp->next = tmp2->next;
                free( tmp2 );
                tmp2 = NULL;
            }
           
        }
    }
    return head;
}


int main()
{
   
    int option = 0, New, Del, Find;
    SStudent * my_list;
    my_list =( SStudent * ) malloc( sizeof( SStudent ) );
    my_list = NULL;
   
    while( option != 5 )
    {
       
        printf( "\n1.Dodaj\n2.Wyswietl\n3.Szukaj\n4.Usun\n5.Wyjscie\n" );
        scanf( "%d", & option );
       
        switch( option )
        {
        case 1:
            {
                printf( "Podaj ocene z PI\n" ); scanf( "%d", & New );
                my_list = add( my_list, New );
               
                break;
            }
        case 2:
            {
                show( my_list );
               
                break;
            }
        case 3:
            {
                printf( "Podaj ocene\n" );
                scanf( "%d", & Find );
                search( my_list, Find );
               
                break;
            }
        case 4:
            {
                printf( "Podajocene, z ktora studenci maja byc usunieci\n" );
                scanf( "%d", & Del );
                my_list = Delete( my_list, Del );
               
                break;
            }
        case 5:
            {
                option = 5;
               
                break;
            }
            default:
            {
                break;
            }
        }
       
    }
    return 0;
}

Teraz dodatkowo muszę jeszcze do struktury dodać imię, nazwisko i numer indeksu. Niestety nie mam pojęcia, jak to zrobić. Znaczy, umiem dodać do struktury, ale jak potem dodać to w dodawaniu i wyświetlaniu? usuwanie i szukanie chyba bez zmian, bo ma dotyczyć oceny.
P-74584
pekfos
» 2013-01-21 15:20:21
Nie rozumiem w czym problem..
Dodaj pola do struktury, wczytuj i wyświetlaj tak samo jak ocenę.
P-74587
KamilW
Temat założony przez niniejszego użytkownika
» 2013-01-21 22:43:07
Tylko jak to połączyć z funkcją add, która opiera się tylko na ocenie z PI?
P-74632
adam_1234_adam
» 2013-01-22 00:08:29
No zmodyfikować chyba funkcje add skoro ma pracować inaczej.

A poza tym, dlaczego SStudent to struktura a nie zwykła kalsa? I czemu funkcje add show itd. nie są funkcjami składowymi klasy tylko są osobne?
P-74639
« 1 »
  Strona 1 z 1