Dev-C++
Zad. Pomnożyć każdy ujemny element tablicy przez jej ostatni element. Wypisać elementy zmienionej tablicy.
Tablica jest wypełniana przez użytkownika, rozmiar tablicy w zadaniu dowolny, typ danych w tablicy można wybrac dowolnie chyba że kontekst zadania nie pozwala na stosowanie określonych typów.
" Life is not a problem to be solved but a reality to be experienced! "
© Copyright 2013 - 2024 KUDO.TIPS - All rights reserved.
Witam!
Przedstawiam rozwiązanie zadania, chciałbym jednoczenie zwrócić uwagę na pewien zabieg, mianowicie linijka:
if ((tab[i] < 0) && (i > 0))
Zawiera warunek i > 0, wynika to z prostego faktu - jeśli pierwszy element tablicy zawierałbym wartość mniejszą od zera wtedy trzeba by pomnożyć tab[0] * tab[-1]. Tab[-1] nie może istnieć tak więc wystąpiłby błąd naruszenia pamięci. Stąd też procedura nie może być spełniona dla pierwszego elementu.
Kod:
#include <iostream>
int main() {
std::cout <<"Z ilu elementow ma skaladac sie tablica?\n" ;
int odp;
std::cin >> odp;
signed int *tab;
tab = new int[odp];
std::cout <<"Podaj elementy tablicy\n";
for (int i = 0; i < odp; i++) {
std::cin >> tab[i];
}
for (int i = 0; i < odp; i++) {
if ((tab[i] < 0) && (i > 0)) {
tab[i] = tab[i] * tab[i-1];
}
}
std::cout <<"Tablica po mnozeniu ujemych elementow przez poprzedni \nwyglada nastepujaco:\n";
for (int i = 0; i < odp; i++) {
std::cout <<tab[i] <<std::endl;
}
std::cin.ignore();
std::cin.get();
}