-
C-tablica dynamiczna
Program ma pobrac rozmiar tablicy od uzytkownika, wypisac tablice, pobrac x i wypisac ile jest elementow wiekszych od x. Wie ktos czemu gdy ustale na sztywno x w deklaracji to program dziala, a jak chce zeby uzytkownik sam podal wartosc x to program wywala sie po podaniu 1 elementu tablicy.
Kod:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
int main()
{
int i;
int x;
size_t n;
int *tab;
int funkcja(size_t, int, int*);
printf("Podaj rozmiar tablicy: ");
scanf("%u", &n);
tab=malloc(n*sizeof(int));
printf("Podaj dane do tablicy\n");
for(i=0; i<n; i++)
{
printf("Podaj %d element: ", i+1);
scanf("%d", &tab[i]);
}
printf("Twoja tablica\n");
for(i=0; i<n; i++)
{
printf("%d ", tab[i]);
}
printf("\n");
printf("Podaj x: ");
scanf("%d", &x);
printf("Liczba elementow wiekszych od %d: %d", x, funkcja(n,x,tab));
return 0;
}
int funkcja(size_t n, int x, int *tab)
{
int i,ile=0;
for(i=0; i<n; i++)
{
if(tab[i]>x)
ile++;
}
return ile;
}
-
Możesz napisać którego kompilatora używasz? Wrzuciłem to do Visuala i jedyne o co sie rzucił to rzutowanie malloc:
Kod:
tab = malloc(n*sizeof(int));
na
Kod:
tab = (int*)malloc(n*sizeof(int));
Skompilowałem i działa:
http://i40.tinypic.com/2zxw9bc.jpg
-
DevC++ 5.4.1.0, takiego uzywamy tez na zajeciach. C mozna pisac bez (int*) przed malloc, w C++ musi byc.
-
W dalszym ciągu - u mnie działa:
http://i40.tinypic.com/idhx7p.jpg
@edit
Mój błąd - użyłem wersji stabilnej 5.4.0
Sciągnąłem RC 5.4.1.0 i wciąż śmiga (może coś z konfiguracją masz nieteges?):
http://i41.tinypic.com/29et26x.jpg
-
No to nie wiem, z moim lapkiem chyba cos nie tak ;d
-
dev-c++ 4.9.9.2
wszystko działa
-
w visualu 2013 nie działało, ale po kosmetyce zadziałało i wygląda na to że jest w porządku.
Jak chcesz to tu masz poprawiony:
Kod:
#include "stdafx.h"
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main()
{
size_t i;
int x;
size_t n;
int *tab;
int funkcja(size_t, int, int*);
printf("Podaj rozmiar tablicy: ");
scanf_s("%u", &n);
tab=(int*)malloc(n*sizeof(int));
printf("Podaj dane do tablicy\n");
for(i=0; i<n; i++)
{
printf("Podaj %d element: ", i+1);
scanf_s("%d", &tab[i]);
}
printf("Twoja tablica\n");
for(i=0; i<n; i++)
{
printf("%d ", tab[i]);
}
printf("\n");
printf("Podaj x: ");
scanf_s("%d", &x);
printf("Liczba elementow wiekszych od %d: %d", x, funkcja(n,x,tab));
return 0;
}
int funkcja(size_t n, int x, int *tab)
{
size_t i,ile=0;
for(i=0; i<n; i++)
{
if(tab[i]>x)
ile++;
}
return ile;
}
-
@up u mnie nadal to samo, nie wiem czemu tak sie dzieje
-
Podeślij skompilowanego exeka jeżeli masz nadal problem, zerknę.