• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

wskaźniki i tablice w C

Object Storage Arubacloud
0 głosów
215 wizyt
pytanie zadane 1 grudnia 2022 w C i C++ przez Pysa6 Nowicjusz (220 p.)

Mam problem z zadaniem:

Zadeklaruj tablicę o 20 elementach. Wypełnij ją kolejnymi wartościami od 1 do 20 włącznie.

Wydrukuj tablicę na ekranie.

Zadeklaruj 3 zmienne wskaźnikowe, dowiąż je kolejno do 5, 10, 15 elementu tablicy. 

Wartość pod pierwszym wskaźnikiem pomnóż przez 100. Wartość pod drugim wskaźnikiem zwiększ o 50.
Wartość pod trzecim wskaźnikiem pomnóż przez -1. Wydrukuj tablicę na ekranie. (Jeśli wszystko się udało, to w tablicy będą wartości zedytowane).

Proszę o pomoc, dopiero zaczynam naukę. oto mój kod:

#include <stdio.h>

int main()
{
    int tab[20];
    for(int i = 0; i<20; i++)
    {
        tab[i] = i+1;
    }
    for(int i = 0; i<20; i++)
    {
        printf("%d ", tab[i]);
    }
    putchar('\n');
    
    int *p1 = tab[5];
    int *p2 = tab[10];
    int *p3 = tab[15];
    
    *p1 = 100 * (*p1);
    *p2 = *p2 + 5-;
    *p3 = *p3 * (-1);
    
    for(int i = 0; i<20; i++)
    {
        printf("%d ", tab[i]);
    }
    
    return 0;
}

 

komentarz 1 grudnia 2022 przez Oscar Nałogowiec (29,320 p.)
#include <stdio.h>
 
int main()
{
    int tab[20];                   ///< dobrze - lokalne tablice to tylko małe
    for(int i = 0; i<20; i++)
    {
        tab[i] = i+1;              ///< też dobrze
    }
    for(int i = 0; i<20; i++)
    {
        printf("%d ", tab[i]);     ///< z tego można zrobić funkcję bo są 2 kopie kodu
    }
    putchar('\n');
     
    int *p1 = tab[5];
    int *p2 = tab[10];       ///< kolega to objaśnił w odpowiedzi niżej
    int *p3 = tab[15];
     
    *p1 = 100 * (*p1);       ///< to mozna prościej *p1 *= 100
    *p2 = *p2 + 5-;          ///< a miało być 0 zamiast -, też można prościej *p2 += 50
    *p3 = *p3 * (-1);        ///< jak w pierwszym przykładzie *p3 *= -1
     
    for(int i = 0; i<20; i++)
    {
        printf("%d ", tab[i]);  ///< jak to ma być dla ludzi to zwykle warto też wypisać indeks
    }
     
    return 0;
}

 

komentarz 2 grudnia 2022 przez VBService Ekspert (254,570 p.)

1 odpowiedź

0 głosów
odpowiedź 1 grudnia 2022 przez Jaaqob Stępień Użytkownik (760 p.)

Dwie sprawy. Pierwszy element tablicy ma index zero i przypisujesz liczby do wskaźnika.

    int *p1 = tab[4]; //źle
    int *p2 = tab + 9; //zapis przy użyciu armatki wskaźników
    int *p3 = &tab[14]; //zapis przy użyciu wyłuskania wskaźnika 

Ja wolę opcje z plusem, ale to kwestia głosu.

Podobne pytania

0 głosów
1 odpowiedź 289 wizyt
pytanie zadane 7 września 2022 w C i C++ przez benny13 Obywatel (1,150 p.)
0 głosów
0 odpowiedzi 467 wizyt
0 głosów
3 odpowiedzi 358 wizyt
pytanie zadane 3 grudnia 2017 w C i C++ przez MrSqoobany Początkujący (460 p.)

92,691 zapytań

141,603 odpowiedzi

320,103 komentarzy

62,051 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...