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