Czy można w jakiś szybszy sposób zapodać z klawiatury wartości do arry[4] bez konieczności tworzenia pętli for? Może ktoś zna gotową funkcje która to robi?
Nie chcesz for, to może while:
int i = 0;
while(i < 4)
std::cin >> arry[i++];
bez petli:
cin >> arr[0] >> arr[1] >> arr[2] >> arr[3];
Zupełnie nieprzydatne i nie w pełni przenośne:
short array[4];
cin>>*(long long *) array;
#include<iostream>
int main(){
short arry[4], i = 0;
short *w = arry;
while(i < 4)
scanf("%d", &arry[i++]);
printf("%d", ((*w++)*(*w++))+((*w++)*(*w)));
system("pause");
}
Dlaczego na wskaźnikach wychodzi mi zły wynik?
nie wolno w obrębie jednego wyrażenia używać jednocześnie w
i w++
, ani używać w++
kilkakrotnie. to samo się tyczy ++w
.
problem wynika z tego, że nie wiadomo, w jakiej kolejności poszczególne wyrażenia mają być wykonane (standard tego nie definiuje)
a.cpp: In function 'int main()':
a.cpp:7:29: warning: format '%d' expects type 'int*', but argument 2 has type 'short int*'
a.cpp:8:50: warning: operation on 'w' may be undefined
a.cpp:8:50: warning: operation on 'w' may be undefined
a.cpp:8:50: warning: operation on 'w' may be undefined
zapisz to tak:
printf("%d", ((*w)*(*(w+1)))+((*(w+2)))*(*(w+3))));
Dzięki serdeczne pomogło :) Mam jeszcze jedno pytanie, czy da się zrobić, żeby można było wprowadzać zmienną do wskaźnika, tak żeby tylko zadeklarować tablice operując tylko na wskaźnikach?
okey już mam
scanf("%d", &(*(w+(i++))));
Jeszcze raz dzięki że jesteście, zajefajni z Was ludzie! :)
gubbi napisał(a)
scanf("%d", &(*(w+(i++))));
A nie wystarczy Ci samo w+(i++)
? Tak, to też jest wskaźnik!
Faktycznie :D Dzięki serdeczne!