Przeglądanie tablic

0

Witam mam takie zadanie: Utworzyć tablicę (np. 4 elementy) Struktur zawierających imiona (tablica char) i numery telefonów (zmienna long). Przejrzeć tablicę metodą bezpośrednią (operator kropki) i pośrednią korzystając ze wskaźnika.

Więc napisałem taki program i właśnie [błąd ortograficzny] czy ma byc napisany w ten sposób więc moje pierwsza prośba to ewentualne poprawienie mojego programu(głównie nie jestem pewien deklaracji ) a druga prosba dotyczy wytłumaczenia o co chodzi z tymi metodami bezpośrednimi i posrednimi.
priszę o sprawdzenie.


program Dziwny;
 
type
Dane = record
imie:array[1..16] of char;
telefon:longint;
end;
var
osoby:array[1..4] of dane;
a,b:integer;
begin
 
for a:=1 to 4 do
begin
writeln('Osoba numer: : ',a);
write('Imie : ');  readln(osoby[a].imie[1..16]);
write('telefon:  '); readln(osoby[a].telefon);
end;
writeln;
write('Podaj numer osoby ktorej dane chcesz zobaczyc: ');  read(a);
writeln('Osoba numer: ',a);
writeln('imie: ',osoby[a].imie[1..16]);
writeln('telefon: ',osoby[a].telefon);
writeln;
end.

 
0

Gdzieś ten post już widziałem; Po pierwsze to wiesz w ogóle na czym polegają wskaźniki? W książce Adama Boducha odnośnie delphi 7 jest właśnie przykład wykorzystania wskaźnika do rekordów; Dlaczego nie weźmiesz i nie poczytasz o tym?

http://4programmers.net/Delphi/Wskaźniki#id-Tworzenie-wskanikw-na-struktury

Tu masz przykład; Tworzony jest wskaźnik na strukturę (rekord) zawierającą kilka pól; Poczytaj;

0

sory to nie ten kod a ten:

 

program Dziwny;
 
type
  Dane = record
    imie : array[1..16] of char;
    telefon : longint;
  end;
var
  osoby : array[1..4] of dane;
  a, b : integer;
begin
  for a := 1 to 4 do
  begin
    writeln('Osoba numer: : ', a);
    write('Imie : ');
    readln(osoby[a].imie[1..16]);
    write('telefon: ');
    readln(osoby[a].telefon);
  end;
  writeln;
  writeln('Przegladanie tablicy metoda bezposrednia:');
  writeln;
  writeln('Osoba numer 1 imie: ', osoby[1].imie, 'telefon: ', osoby[1].telefon);
  writeln('Osoba numer 2 imie: ', osoby[2].imie, 'telefon: ', osoby[2].telefon);
  writeln('Osoba numer 3 imie: ', osoby[3].imie, 'telefon: ', osoby[3].telefon);
  writeln('Osoba numer 4 imie: ', osoby[4].imie, 'telefon: ', osoby[4].telefon);
  writeln;
  writeln('Przegladanie tablicy metoda posrednia: ');
  writeln;
  write('Podaj numer osoby ktorej dane chcesz zobaczyc: '); read(a);
  writeln('Osoba numer: ', a);
  writeln('imie: ', osoby[a].imie[1..16]);
  writeln('telefon: ', osoby[a].telefon);
  writeln;
end.

Proszę tylko aby ktoś mi powiedział czy jest dobry...

0

Dobry? Byłby odnosząc się do tematu, w którym jest mowa jeszcze o metodzie pośredniej, a ja nie widzę w podanym przez Ciebie kodzie żadnego wskaźnika;

0

przecież tu jest zadeklarowany wskaźnik nieprawdasz??:

osoby : array[1..4] of dane;

0

Nie osłabiaj mnie... Skorzystałeś z podanego przeze mnie linku...?!

Adam Boduch napisał(a)

We wszelkich operacjach dokonywanych na wskaźnikach muszą być wykorzystywane dwa operatory specyficzne jedynie dla typów wskaźnikowych - są to operatory ^ oraz @.

Znajdź mi proszę choć jeden z nich w Twoim kodzie;

0

witam okazało się że ten program mam zrobic w jezyku C i zrobiłem obiema metodami ale chcę się upewnić czy dobrze dlategeo bardzo proszę o sprawdzenie
kod

 

#include <stdio.h>
#include <string.h>
struct dane
{
 char imie[10];
 long tel[3999999];      
       };
struct dane osoba[4];
struct dane *tosoba[4];   
  main() 
{   
int x;
printf("      ---Podaj imiona i telefony osob--- \n");
for (x=0; x<4;x++)
{
printf("\nOsoba nrmer: %d\n",x+1);      
puts("Podaj imie: ");
scanf("%s",osoba[x].imie);
puts("Podaj telefon: ");
scanf("\n%d",osoba[x].tel);
}
printf("\n");
printf("Metoda bezposrednia\n\n");
getchar( );
for (x=0; x<4; x++)
printf("Osoba nr: %d imie: %s telefon: %d \n",x+1 ,osoba[x].imie, *osoba[x].tel);

struct dane *tosoba[4];   
tosoba[x]=&osoba[x];
printf("\n---Wcisnij enter aby przejzec metoda posrednia---\n");

printf("\n");
getchar( );
for (x=0; x<4; x++){
 tosoba[x]=&osoba[x];
printf("Osoba nr: %d Imie: %s telefon: %d \n", x+1, (*tosoba[x]).imie, *(*tosoba[x]).tel);
}
getchar( );
return 0;
}


Program jest zrobiony w Dev C++ 4.9.9.2

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