Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Języki i paradygmaty programowania...

panek89 22 Dec 2009 17:33 3972 11
  • #1
    panek89
    Level 10  
    Witam Panowie mam problem z kilkoma zadaniami z przedmiotu Języki i paradygmaty programowania...

    Języki i paradygmaty programowania... Języki i paradygmaty programowania...

    Jeżeli ktoś jest w stanie i ma chęć mi pomóc, będę bardzo wdzięczny :)

    Pozdrawiam.
  • #2
    xanio
    Level 27  
    w czym to ma być? C? Pascal? Co już zrobiłeś, jakie masz pomysły a jakie problemy?
  • #3
    panek89
    Level 10  
    myślę, że ma to być w C, nie wiem, w ogóle jak mam się do tego zabrać :(
  • #4
    Dr.Vee
    VIP Meritorious for electroda.pl
    Proszę pokazać jakiś wkład własny w rozwiązanie zadań, albo temat wyląduje w koszu (Regulamin p. 16, zasady działu Programowanie).
  • #5
    panek89
    Level 10  
    okey :) jutro wstawię swoje wypociny ;]
  • #6
    adam.lysy
    Level 14  
    Jeśli mogę coś podpowiedzieć to operacje na tablicach na pewno prościej przeprowadzić w C lub C++ niż w Pascalu. proszę zacząć od deklaracji tablic jedno lub dwuwymiarowych w zależności od zadania. W jednym zadaniu sprawa jest uproszczona bo na samym etapie deklaracji możemy wpisać wartości do tablicy i zadeklarować jej rozmiar. No ale na początek proszę dać coś od siebie.
  • #7
    Szymon Tarnowski
    Level 27  
    adam.lysy wrote:
    Jeśli mogę coś podpowiedzieć to operacje na tablicach na pewno prościej przeprowadzić w C lub C++ niż w Pascalu.
    Zastanawia mnie ta sugestia, być może w języku C ilość znaków będzie niższa, ale algorytm i tak będzie wygląda podobnie. Różnica będzie tylko w składni operatorów i pętli.
  • #8
    adam.lysy
    Level 14  
    Zgadzam się, uważam jednak że problem może pojawić się w zadaniu 2, jeśli zastosuje się Pascala, chodzi o podwajanie przepisania - nie widzę tego w Pascalu.
  • #9
    szpila_forever
    Level 15  
    Quote:
    nie widzę tego w Pascalu.


    ???

    Code:

    for i:=1 to t- k do
    begin
          tablica_2[2*i-1]:=tablica_1[k+1];
          tablica_2[2*i]:=tablica_1[k+1];
    end
  • #10
    panek89
    Level 10  
    Tak ma to wyglądać ??

    Code:
    #include <stdio.h>
    

    int main(){
    // zad 1
      srand(time(0));
      int tab[3][4];
      int i,j;
      for(i=0;i<3;i++)
        for(j=0;j<4;j++)
          tab[i][j]=rand();
      int minx=0;
      int miny=0;
      for(i=0;i<3;i++)
        for(j=0;j<4;j++)
          if(tab[i][j]<=tab[minx][miny]){  // '<=' gwarantuje znalezienie ostatniej pozycji
            minx=i;
            miny=j;
          }
      printf("minimalna liczba [x,y]: %d [%d,%d]\n",tab[minx][miny],minx,miny);

      //zamiana
      int wart=tab[0][0];
      tab[0][0]=tab[minx][miny];
      tab[minx][miny]=wart;

      printf("wartosc tabeli o indeksach [0,0]: %d\n",tab[0][0]);


    //zad 2

      char s[1024];
      printf("Podaj ciag: ");
      fgets(s,1024,stdin);
      char* q=s;
      while(*q && *q!='\r' && *q!='\n')q++;
      *q=0;

      char d[1024];

      printf("podaj k: ");
      fgets(d,1024,stdin);
      q=d;
      while(*q && *q!='\r' && *q!='\n')q++;
      *q=0;
      int k=strtol(d,0,10);

      printf("podaj t: ");
      fgets(d,1024,stdin);
      q=d;
      while(*q && *q!='\r' && *q!='\n')q++;
      *q=0;
      int t=strtol(d,0,10);

      q=s+k;
      char* p=d;
      /*int*/ i=t-k+1;
      while(i-- && *q){
        *(p++)=*q;
        *(p++)=*(q++);
      }
      *p=0;

      printf("s=%s\nk=%d\nt=%d\nwynik=%s\n",s,k,t,d);


    // zad 3

      srand(time(0));
      /*int*/ i=7;
      int tb[7];
      while(i--){
        *(tb+i)=rand();
        // wartosci poczatkowe
        printf("tb[%d]=%d\n",i,*(tb+i));
      }
      i=7;
      long long int sum=0;
      while(i--){
        if(i>=4 && i<=7)*(tb+i)=111;
        sum+=*(tb+i);
        printf("tb[%d]=%d\n",i,*(tb+i));
      }
      printf("suma=%ld\n",sum);

      return 0;
    }


    Jeżeli te 3 zadania mam dobrze :) to zostało mi tylko to...:
    Języki i paradygmaty programowania...
  • #11
    panek89
    Level 10  
    chyba nikt mi tego nie sprawdzi :(
  • #12
    edd123
    Level 11  
    Pierwsza część mogłaby wyglądać tak:
    Code:
    #include <iostream>
    
    using namespace std;

    void main(){
       float Tablica1[4][4];
       int LiczbaElem = 0;
       int i, j;
       for(i=0;i<4;i++)
          for(j=0;j<4;j++){
             cout << "Wpisz liczbe: ";
             cin >> Tablica1[i][j];
          }
       for(i=0;i<4;i++)
          for(j=0;j<4;j++)
             if(Tablica1[i][j] >=4 && Tablica1[i][j]<=15) LiczbaElem++;
       cout << "Liczb z zakresu 4-15 jest: " << LiczbaElem << endl;
       system("pause");
    }


    Niestety tej drugiej części nie udało mi się napisać :/ Niby sprawdza, ale czasami wyniki wychodzą poza zasięg zmiennej :/ Jak znajdę błąd to się odezwę