zadanie, tablice dynamiczne, zmienne dynamiczne

0

Hejka mam takie zadanie do wykonania,
wszystko jest prawie dobrze, (na moje oko), a błąd tkwi w zaznaczonym miejscu o ile się nie myle,
Co powinno zostać tam wpisane żeby zadziałało poprawnie?
Za każdą pomoc bardzo dziękuję :D
PS.Na razie tworzę tylko z użyciem new/delete


/*Napisz program prezentujący definiowanie i użycie zmiennych dynamicznych. Należy w
ten sposób stworzyć zmienne typów podstawowych (np. int, double) oraz dynamiczną
tablicę N elementów typu int, gdzie N jest wartością podaną z klawiatury. Zadanie należy
wykonać w dwóch wersjach: (1) z użyciem funkcji malloc/free (z C) oraz (2) operatorów
new/delete (z C++).*/

#include<stdio.h> 

#include <iostream>
using namespace std;
int main()
{
    int *px;
    double *ptab;
    px=new int;
    int N;
    printf("Podaj ilosc elementow tablicy\n");
    scanf("%d", &N);
    ptab=new double[N];
    *px=N;
    printf("Wartosc zmiennej=%d", *px);
    for (int i=0; i<N; i++)
    {
        printf("\n Podaj element[%d", i);
        printf(" ]=");
        scanf("%lf", &ptab);
        *ptab++;

        fflush(stdin);
    }
    ptab-=N;
    for(int i=0; i<N; i++)
    {
        printf("\n Element[%d", i);
         printf ("]=");
         printf("%lf", );                                                    // tu pojawia sie problem
           *ptab++;
    }
    ptab-=N;
    delete px;
    delete[]ptab;

    return 0;
}
0

Nie, problem tu: scanf("%lf", ptab++);

0
_13th_Dragon napisał(a):

Nie, problem tu: scanf("%lf", ptab++);

chodzi o to miejsce?
a dlaczego jest tu błąd?
Mogę prosić o wyjaśnienie?


scanf("%lf", &ptab);
        *ptab++;
0

Moment, czy to powinno być tak?


#include<stdio.h> 

int main()
{
    int *px;
    double *ptab;
    px=new int;
    int N;
    printf("Podaj ilosc elementow tablicy\n");
    scanf("%d", &N);
    ptab=new double[N];
    *px=N;
    printf("Wartosc zmiennej=%d", *px);
    for (int i=0; i<N; i++)
    {
        printf("\n Podaj element[%d", i);
        printf(" ]=");
        scanf("%lf", &*ptab);
        *ptab++;

        fflush(stdin);
    }
    ptab-=N;
    for(int i=0; i<N; i++)
    {
        printf("\n Element[%d", i);
         printf ("]=%lf", *ptab);
        *ptab++;

    }
    ptab-=N;
    delete px;
    delete[]ptab;

    return 0;
}
1

Może ale zbyt rozwlekłe:

for(int i=0;i<N;++i,scanf("%lf",ptab++)) printf("\nPodaj element[%d]=",i);

A jeszcze lepiej:

for(double *p=ptab,*end=p+N;p<end;scanf("%lf",p++)) printf("\nPodaj element[%d]=",p-ptab);

Wtedy nie musisz cofać ptab

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0